notary
The notary noun — identity, lifecycle, events, and every capability as an anchored section: 13 capabilities, 0 live, 13 sandbox, 0 declared.
notary is one of the estate's 317 automotive nouns — a job a car needs done. It carries 13 capabilities: 0 live, 13 sandbox, 0 declared · doors aggregator.vin.
Identity
| Noun | notary |
| Pillar | Services (facets: 4 data · 6 services · 3 commerce) |
| Capabilities | 13 — 0 live · 13 sandbox · 0 declared |
| Entities | Notarization |
| Doors | aggregator.vin |
| SDK | Vin.notary.* from apis.vin |
| Address | /catalog/notary#{action} — the anchor IS the wire name minus notary. |
Events
The vocabulary this noun can append to the record — 20 past-tense, versioned event types, each linked to the capability that emits it:
Notary.feeCharged@1— emitted byfeeNotary.feeRequested@1— emitted byfeeNotary.identityVerified@1— emitted byidentityVerifyNotary.identityVerifyRequested@1— emitted byidentityVerifyNotary.journalLogRequested@1— emitted byjournalLogNotary.journalLogged@1— emitted byjournalLogNotary.notarizeFailed@1— emitted bynotarizeNotary.notarizeRequested@1— emitted bynotarizeNotary.notarized@1— emitted bynotarizeNotary.paid@1— emitted bypayNotary.payFailed@1— emitted bypayNotary.payRequested@1— emitted bypayNotary.quoteRequested@1— emitted byquoteNotary.quoted@1— emitted byquoteNotary.scheduleRequested@1— emitted byscheduleNotary.scheduled@1— emitted byscheduleNotary.stampRequested@1— emitted bystampNotary.stamped@1— emitted bystampNotary.witnessRequested@1— emitted bywitnessNotary.witnessed@1— emitted bywitness
Discover & read
status
notary.status · GET /notaries/status · gate none · sandbox · answers NotaryStatus@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /2GC4YPEY3R1108969 (the VIN lens).
Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.
import { notary } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await notary.status({"vin":"2GC4YPEY3R1108969"})curl 'https://apis.vin/notaries/status?vin=2GC4YPEY3R1108969'Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.
{
"type": "OK",
"answers": "NotaryStatus@1",
"value": {
"orderId": "serviceorder_8haNGkvAKyOX",
"ceremony": "ceremony_EMVh3MmY1dFQ",
"identityVerified": true,
"status": "InReview",
"externalId": "2GC4YPEY3R1108969"
},
"evidence": {
"orderId": "serviceorder_8haNGkvAKyOX",
"ceremony": "ceremony_EMVh3MmY1dFQ",
"identityVerified": true,
"status": "InReview",
"externalId": "2GC4YPEY3R1108969"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "notary-rail-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}availability
notary.availability · GET /notaries/availability · gate none · sandbox · answers NotaryAvailability@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /2GC4YPEY3R1108969 (the VIN lens).
Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.
import { notary } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await notary.availability({"vin":"2GC4YPEY3R1108969"})curl 'https://apis.vin/notaries/availability?vin=2GC4YPEY3R1108969'Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.
{
"type": "OK",
"answers": "NotaryAvailability@1",
"value": {
"kind": "ron",
"available": true,
"joinRef": "ron-session:serviceorder_8haNGkvAKyOX",
"slots": [
{
"date": "2026-08-11",
"windows": [
"09:00-10:00",
"13:00-14:00"
]
},
{
"date": "2026-08-12",
"windows": [
"10:00-11:00",
"15:00-16:00"
]
}
]
},
"evidence": {
"kind": "ron",
"available": true,
"joinRef": "ron-session:serviceorder_8haNGkvAKyOX",
"slots": [
{
"date": "2026-08-11",
"windows": [
"09:00-10:00",
"13:00-14:00"
]
},
{
"date": "2026-08-12",
"windows": [
"10:00-11:00",
"15:00-16:00"
]
}
]
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "notary-rail-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}jurisdictionCheck
notary.jurisdictionCheck · GET /notaries/jurisdiction-check · gate none · sandbox · answers NotaryJurisdictionCheck@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /2GC4YPEY3R1108969 (the VIN lens).
Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.
import { notary } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await notary.jurisdictionCheck({"vin":"2GC4YPEY3R1108969"})curl 'https://apis.vin/notaries/jurisdiction-check?vin=2GC4YPEY3R1108969'Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.
{
"type": "OK",
"answers": "NotaryJurisdictionCheck@1",
"value": {
"vin": "2GC4YPEY3R1108969",
"noun": "notary",
"asOf": "2026-08-10",
"id": "RON-846a72fa",
"documentId": "DOC-4e129238",
"mode": "RON",
"signers": [
{
"role": "buyer",
"identityId": "ID-11f17424",
"name": "Ava Good",
"status": "not-yet-requested"
},
{
"role": "seller",
"identityId": "DLR-b9066ade",
"name": "The Estate Store",
"status": "not-yet-requested"
}
],
"jurisdiction": {
"state": "AZ",
"mode": "RON"
}
},
"evidence": {
"vin": "2GC4YPEY3R1108969",
"noun": "notary",
"asOf": "2026-08-10",
"id": "RON-846a72fa",
"documentId": "DOC-4e129238",
"mode": "RON",
"signers": [
{
"role": "buyer",
"identityId": "ID-11f17424",
"name": "Ava Good",
"status": "not-yet-requested"
},
{
"role": "seller",
"identityId": "DLR-b9066ade",
"name": "The Estate Store",
"status": "not-yet-requested"
}
],
"jurisdiction": {
"state": "AZ",
"mode": "RON"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "notary-desk-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}commissionVerify
notary.commissionVerify · GET /notaries/commission-verify · gate none · sandbox · answers NotaryCommissionVerify@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /2GC4YPEY3R1108969 (the VIN lens).
Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.
import { notary } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await notary.commissionVerify({"vin":"2GC4YPEY3R1108969"})curl 'https://apis.vin/notaries/commission-verify?vin=2GC4YPEY3R1108969'Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.
{
"type": "OK",
"answers": "NotaryCommissionVerify@1",
"value": {
"vin": "2GC4YPEY3R1108969",
"noun": "notary",
"asOf": "2026-08-10",
"id": "RON-846a72fa",
"documentId": "DOC-4e129238",
"mode": "RON",
"signers": [
{
"role": "buyer",
"identityId": "ID-11f17424",
"name": "Ava Good",
"status": "not-yet-requested"
},
{
"role": "seller",
"identityId": "DLR-b9066ade",
"name": "The Estate Store",
"status": "not-yet-requested"
}
],
"commission": {
"notary": "estate-notary",
"status": "no-commission-registry-posted"
}
},
"evidence": {
"vin": "2GC4YPEY3R1108969",
"noun": "notary",
"asOf": "2026-08-10",
"id": "RON-846a72fa",
"documentId": "DOC-4e129238",
"mode": "RON",
"signers": [
{
"role": "buyer",
"identityId": "ID-11f17424",
"name": "Ava Good",
"status": "not-yet-requested"
},
{
"role": "seller",
"identityId": "DLR-b9066ade",
"name": "The Estate Store",
"status": "not-yet-requested"
}
],
"commission": {
"notary": "estate-notary",
"status": "no-commission-registry-posted"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "notary-desk-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}identityVerify
notary.identityVerify · POST /notaries/identity-verify · gate offer · sandbox · answers NotaryIdentityVerify@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
The gate is a 402 OFFER — the price and a hard ceiling on the wire, with a durable intent that executes on settlement. Never a wall, never "contact sales". Price: not posted — see /pricing.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /2GC4YPEY3R1108969 (the VIN lens).
Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.
Emits — Notary.identityVerified@1 · Notary.identityVerifyRequested@1.
import { notary } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await notary.identityVerify({"vin":"2GC4YPEY3R1108969"})curl -X POST https://apis.vin/notaries/identity-verify \
-H 'content-type: application/json' \
-d '{"vin":"2GC4YPEY3R1108969"}'Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.
{
"type": "OK",
"answers": "NotaryIdentityVerify@1",
"value": {
"orderId": "serviceorder_8haNGkvAKyOX",
"kba": "pass",
"idVerify": "pass",
"proceed": true,
"status": "InReview"
},
"evidence": {
"orderId": "serviceorder_8haNGkvAKyOX",
"kba": "pass",
"idVerify": "pass",
"proceed": true,
"status": "InReview"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "notary-rail-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Quote & price
quote
notary.quote · POST /notaries/quote · gate offer · sandbox · answers NotaryQuote@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
The gate is a 402 OFFER — the price and a hard ceiling on the wire, with a durable intent that executes on settlement. Never a wall, never "contact sales". Price: not posted — see /pricing.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /2GC4YPEY3R1108969 (the VIN lens).
Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.
Emits — Notary.quoteRequested@1 · Notary.quoted@1.
import { notary } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await notary.quote({"vin":"2GC4YPEY3R1108969"})curl -X POST https://apis.vin/notaries/quote \
-H 'content-type: application/json' \
-d '{"vin":"2GC4YPEY3R1108969"}'Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.
{
"type": "OK",
"answers": "NotaryQuote@1",
"value": {
"vin": "2GC4YPEY3R1108969",
"noun": "notary",
"asOf": "2026-08-10",
"id": "RON-846a72fa",
"documentId": "DOC-4e129238",
"mode": "RON",
"signers": [
{
"role": "buyer",
"identityId": "ID-11f17424",
"name": "Ava Good",
"status": "not-yet-requested"
},
{
"role": "seller",
"identityId": "DLR-b9066ade",
"name": "The Estate Store",
"status": "not-yet-requested"
}
],
"fee": {
"amountCents": 2500,
"currency": "USD",
"per": "seal"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "2GC4YPEY3R1108969",
"noun": "notary",
"asOf": "2026-08-10",
"id": "RON-846a72fa",
"documentId": "DOC-4e129238",
"mode": "RON",
"signers": [
{
"role": "buyer",
"identityId": "ID-11f17424",
"name": "Ava Good",
"status": "not-yet-requested"
},
{
"role": "seller",
"identityId": "DLR-b9066ade",
"name": "The Estate Store",
"status": "not-yet-requested"
}
],
"fee": {
"amountCents": 2500,
"currency": "USD",
"per": "seal"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "notary-desk-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}fee
notary.fee · POST /notaries/fee · gate offer · sandbox · answers NotaryFee@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
The gate is a 402 OFFER — the price and a hard ceiling on the wire, with a durable intent that executes on settlement. Never a wall, never "contact sales". Price: not posted — see /pricing.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /2GC4YPEY3R1108969 (the VIN lens).
Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.
Emits — Notary.feeCharged@1 · Notary.feeRequested@1.
import { notary } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await notary.fee({"vin":"2GC4YPEY3R1108969"})curl -X POST https://apis.vin/notaries/fee \
-H 'content-type: application/json' \
-d '{"vin":"2GC4YPEY3R1108969"}'Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.
{
"type": "OK",
"answers": "NotaryFee@1",
"value": {
"vin": "2GC4YPEY3R1108969",
"noun": "notary",
"asOf": "2026-08-10",
"id": "RON-846a72fa",
"documentId": "DOC-4e129238",
"mode": "RON",
"signers": [
{
"role": "buyer",
"identityId": "ID-11f17424",
"name": "Ava Good",
"status": "not-yet-requested"
},
{
"role": "seller",
"identityId": "DLR-b9066ade",
"name": "The Estate Store",
"status": "not-yet-requested"
}
],
"fee": {
"amountCents": 2500,
"currency": "USD",
"per": "seal"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "2GC4YPEY3R1108969",
"noun": "notary",
"asOf": "2026-08-10",
"id": "RON-846a72fa",
"documentId": "DOC-4e129238",
"mode": "RON",
"signers": [
{
"role": "buyer",
"identityId": "ID-11f17424",
"name": "Ava Good",
"status": "not-yet-requested"
},
{
"role": "seller",
"identityId": "DLR-b9066ade",
"name": "The Estate Store",
"status": "not-yet-requested"
}
],
"fee": {
"amountCents": 2500,
"currency": "USD",
"per": "seal"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "notary-desk-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Apply & book
schedule
notary.schedule · POST /notaries/schedule · gate offer · sandbox · answers NotarySchedule@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
The gate is a 402 OFFER — the price and a hard ceiling on the wire, with a durable intent that executes on settlement. Never a wall, never "contact sales". Price: not posted — see /pricing.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /2GC4YPEY3R1108969 (the VIN lens).
Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.
Emits — Notary.scheduleRequested@1 · Notary.scheduled@1.
import { notary } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await notary.schedule({"vin":"2GC4YPEY3R1108969"})curl -X POST https://apis.vin/notaries/schedule \
-H 'content-type: application/json' \
-d '{"vin":"2GC4YPEY3R1108969"}'Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.
{
"type": "OK",
"answers": "NotarySchedule@1",
"value": {
"orderId": "serviceorder_8haNGkvAKyOX",
"ceremony": "ceremony_EMVh3MmY1dFQ",
"joinRef": "ron-session:serviceorder_8haNGkvAKyOX",
"externalId": "2GC4YPEY3R1108969",
"status": "Pending"
},
"evidence": {
"orderId": "serviceorder_8haNGkvAKyOX",
"ceremony": "ceremony_EMVh3MmY1dFQ",
"joinRef": "ron-session:serviceorder_8haNGkvAKyOX",
"externalId": "2GC4YPEY3R1108969",
"status": "Pending"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "notary-rail-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Pay & settle
pay
notary.pay · POST /notaries/pay · gate offer · sandbox · answers NotaryPay@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
The gate is a 402 OFFER — the price and a hard ceiling on the wire, with a durable intent that executes on settlement. Never a wall, never "contact sales". Price: not posted — see /pricing.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /2GC4YPEY3R1108969 (the VIN lens).
Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.
Emits — Notary.paid@1 · Notary.payFailed@1 · Notary.payRequested@1.
import { notary } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await notary.pay({"vin":"2GC4YPEY3R1108969"})curl -X POST https://apis.vin/notaries/pay \
-H 'content-type: application/json' \
-d '{"vin":"2GC4YPEY3R1108969"}'Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.
{
"type": "OK",
"answers": "NotaryPay@1",
"value": {
"vin": "2GC4YPEY3R1108969",
"noun": "notary",
"asOf": "2026-08-10",
"id": "RON-846a72fa",
"documentId": "DOC-4e129238",
"mode": "RON",
"signers": [
{
"role": "buyer",
"identityId": "ID-11f17424",
"name": "Ava Good",
"status": "not-yet-requested"
},
{
"role": "seller",
"identityId": "DLR-b9066ade",
"name": "The Estate Store",
"status": "not-yet-requested"
}
],
"payment": {
"id": "PAY-82ef8fe0",
"amountCents": 2500,
"currency": "USD",
"status": "settled"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "2GC4YPEY3R1108969",
"noun": "notary",
"asOf": "2026-08-10",
"id": "RON-846a72fa",
"documentId": "DOC-4e129238",
"mode": "RON",
"signers": [
{
"role": "buyer",
"identityId": "ID-11f17424",
"name": "Ava Good",
"status": "not-yet-requested"
},
{
"role": "seller",
"identityId": "DLR-b9066ade",
"name": "The Estate Store",
"status": "not-yet-requested"
}
],
"payment": {
"id": "PAY-82ef8fe0",
"amountCents": 2500,
"currency": "USD",
"status": "settled"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "notary-desk-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Authorize & resolve
notarize
notary.notarize · POST /notaries/notarize · gate offer · sandbox · answers NotaryNotarize@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
The gate is a 402 OFFER — the price and a hard ceiling on the wire, with a durable intent that executes on settlement. Never a wall, never "contact sales". Price: not posted — see /pricing.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /2GC4YPEY3R1108969 (the VIN lens).
Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.
Emits — Notary.notarizeFailed@1 · Notary.notarizeRequested@1 · Notary.notarized@1.
import { notary } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await notary.notarize({"vin":"2GC4YPEY3R1108969"})curl -X POST https://apis.vin/notaries/notarize \
-H 'content-type: application/json' \
-d '{"vin":"2GC4YPEY3R1108969"}'Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.
{
"type": "OK",
"answers": "NotaryNotarize@1",
"value": {
"orderId": "serviceorder_8haNGkvAKyOX",
"notarized": true,
"signature": "signature_Szsixy9NgAUA",
"ceremony": "ceremony_EMVh3MmY1dFQ",
"signerRole": "buyer",
"certificateSha256": "8bfea47b",
"status": "Complete"
},
"evidence": {
"orderId": "serviceorder_8haNGkvAKyOX",
"notarized": true,
"signature": "signature_Szsixy9NgAUA",
"ceremony": "ceremony_EMVh3MmY1dFQ",
"signerRole": "buyer",
"certificateSha256": "8bfea47b",
"status": "Complete"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "notary-rail-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}More actions
journalLog
notary.journalLog · POST /notaries/journal-log · gate offer · sandbox · answers NotaryJournalLog@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
The gate is a 402 OFFER — the price and a hard ceiling on the wire, with a durable intent that executes on settlement. Never a wall, never "contact sales". Price: not posted — see /pricing.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /2GC4YPEY3R1108969 (the VIN lens).
Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.
Emits — Notary.journalLogRequested@1 · Notary.journalLogged@1.
import { notary } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await notary.journalLog({"vin":"2GC4YPEY3R1108969"})curl -X POST https://apis.vin/notaries/journal-log \
-H 'content-type: application/json' \
-d '{"vin":"2GC4YPEY3R1108969"}'Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.
{
"type": "OK",
"answers": "NotaryJournalLog@1",
"value": {
"vin": "2GC4YPEY3R1108969",
"noun": "notary",
"asOf": "2026-08-10",
"id": "RON-846a72fa",
"documentId": "DOC-4e129238",
"mode": "RON",
"signers": [
{
"role": "buyer",
"identityId": "ID-11f17424",
"name": "Ava Good",
"status": "not-yet-requested"
},
{
"role": "seller",
"identityId": "DLR-b9066ade",
"name": "The Estate Store",
"status": "not-yet-requested"
}
],
"journal": {
"status": "not-yet-notarized",
"position": "Draft"
}
},
"evidence": {
"vin": "2GC4YPEY3R1108969",
"noun": "notary",
"asOf": "2026-08-10",
"id": "RON-846a72fa",
"documentId": "DOC-4e129238",
"mode": "RON",
"signers": [
{
"role": "buyer",
"identityId": "ID-11f17424",
"name": "Ava Good",
"status": "not-yet-requested"
},
{
"role": "seller",
"identityId": "DLR-b9066ade",
"name": "The Estate Store",
"status": "not-yet-requested"
}
],
"journal": {
"status": "not-yet-notarized",
"position": "Draft"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "notary-desk-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}stamp
notary.stamp · POST /notaries/stamp · gate offer · sandbox · answers NotaryStamp@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
The gate is a 402 OFFER — the price and a hard ceiling on the wire, with a durable intent that executes on settlement. Never a wall, never "contact sales". Price: not posted — see /pricing.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /2GC4YPEY3R1108969 (the VIN lens).
Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.
Emits — Notary.stampRequested@1 · Notary.stamped@1.
import { notary } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await notary.stamp({"vin":"2GC4YPEY3R1108969"})curl -X POST https://apis.vin/notaries/stamp \
-H 'content-type: application/json' \
-d '{"vin":"2GC4YPEY3R1108969"}'Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.
{
"type": "OK",
"answers": "NotaryStamp@1",
"value": {
"orderId": "serviceorder_8haNGkvAKyOX",
"stamped": true,
"seal": "signature_Szsixy9NgAUA",
"ceremony": "ceremony_EMVh3MmY1dFQ",
"certificateSha256": "8bfea47b",
"status": "Complete"
},
"evidence": {
"orderId": "serviceorder_8haNGkvAKyOX",
"stamped": true,
"seal": "signature_Szsixy9NgAUA",
"ceremony": "ceremony_EMVh3MmY1dFQ",
"certificateSha256": "8bfea47b",
"status": "Complete"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "notary-rail-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}witness
notary.witness · POST /notaries/witness · gate offer · sandbox · answers NotaryWitness@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
The gate is a 402 OFFER — the price and a hard ceiling on the wire, with a durable intent that executes on settlement. Never a wall, never "contact sales". Price: not posted — see /pricing.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /2GC4YPEY3R1108969 (the VIN lens).
Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.
Emits — Notary.witnessRequested@1 · Notary.witnessed@1.
import { notary } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await notary.witness({"vin":"2GC4YPEY3R1108969"})curl -X POST https://apis.vin/notaries/witness \
-H 'content-type: application/json' \
-d '{"vin":"2GC4YPEY3R1108969"}'Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.
{
"type": "OK",
"answers": "NotaryWitness@1",
"value": {
"orderId": "serviceorder_8haNGkvAKyOX",
"witnessed": true,
"signerRole": "buyer",
"kba": "pass",
"idVerify": "pass",
"status": "InReview"
},
"evidence": {
"orderId": "serviceorder_8haNGkvAKyOX",
"witnessed": true,
"signerRole": "buyer",
"kba": "pass",
"idVerify": "pass",
"status": "InReview"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "notary-rail-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Data model
The record shape behind this noun — one entity, each property an evidence field. See the whole estate model on the data model page.
Notarization
Schema
| Property | Type | Notes |
|---|---|---|
id | id | — |
documentId | ref→Document | — |
mode | enum | RON|in-person |
signers | Signer[] | — |
Relationships
| From | To | Cardinality | As |
|---|---|---|---|
document | notary | 1:0..* | notarized via |
Modeled
The noun drawn out — its record shape, its lifecycle, and how it is exercised end to end. 3 diagrams, rendered from the estate model.
Notary · Class model
Notary · State machine
Notary · Sequence
Generated from the catalog. Every capability, answer, gate, and entity on this page is a rendered descriptor — it cannot drift from the wire.
mobilityConversion
The mobilityConversion noun — identity, lifecycle, events, and every capability as an anchored section: 6 capabilities, 0 live, 6 sandbox, 0 declared.
ofac
The ofac noun — identity, lifecycle, events, and every capability as an anchored section: 6 capabilities, 0 live, 6 sandbox, 0 declared.