esignature
The esignature noun — identity, lifecycle, events, and every capability as an anchored section: 10 capabilities, 0 live, 10 sandbox, 0 declared.
esignature is one of the estate's 317 automotive nouns — a job a car needs done. It carries 10 capabilities: 0 live, 10 sandbox, 0 declared · doors aggregator.vin.
Identity
| Noun | esignature |
| Pillar | Services (facets: 3 data · 5 services · 2 commerce) |
| Capabilities | 10 — 0 live · 10 sandbox · 0 declared |
| Entities | SignatureCeremony |
| Doors | aggregator.vin |
| SDK | Vin.esignature.* from apis.vin |
| Address | /catalog/esignature#{action} — the anchor IS the wire name minus esignature. |
Events
The vocabulary this noun can append to the record — 17 past-tense, versioned event types, each linked to the capability that emits it:
Esignature.captureFailed@1— emitted bycaptureEsignature.captureRequested@1— emitted bycaptureEsignature.captured@1— emitted bycaptureEsignature.declineRequested@1— emitted bydeclineEsignature.declined@1— emitted bydeclineEsignature.feeCharged@1— emitted byfeeEsignature.feeRequested@1— emitted byfeeEsignature.paid@1— emitted bypayEsignature.payFailed@1— emitted bypayEsignature.payRequested@1— emitted bypayEsignature.requestRequested@1— emitted byrequestEsignature.requested@1— emitted byrequestEsignature.voidFailed@1— emitted byvoidEsignature.voidRequested@1— emitted byvoidEsignature.voided@1— emitted byvoidEsignature.witnessRequested@1— emitted bywitnessEsignature.witnessed@1— emitted bywitness
Discover & read
status
esignature.status · GET /esignatures/status · gate none · sandbox · answers EsignatureStatus@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1GJZ7NFP8P1169149 (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 { esignature } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await esignature.status({"vin":"1GJZ7NFP8P1169149"})curl 'https://apis.vin/esignatures/status?vin=1GJZ7NFP8P1169149'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": "EsignatureStatus@1",
"value": {
"vin": "1GJZ7NFP8P1169149",
"noun": "esignature",
"asOf": "2026-08-10",
"ceremony": {
"id": "SGN-880da094",
"packet": {
"packetId": "DOC-8a840ed2",
"kind": "vehicle-record",
"position": "Draft",
"subject": {
"dealId": "DL-8a88f8af",
"position": "QUOTED"
}
},
"standing": "not-yet-routed",
"position": "Draft"
}
},
"evidence": {
"vin": "1GJZ7NFP8P1169149",
"noun": "esignature",
"asOf": "2026-08-10",
"ceremony": {
"id": "SGN-880da094",
"packet": {
"packetId": "DOC-8a840ed2",
"kind": "vehicle-record",
"position": "Draft",
"subject": {
"dealId": "DL-8a88f8af",
"position": "QUOTED"
}
},
"standing": "not-yet-routed",
"position": "Draft"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "signing-desk-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}verify
esignature.verify · GET /esignatures/verify · gate none · sandbox · answers EsignatureVerify@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1GJZ7NFP8P1169149 (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 { esignature } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await esignature.verify({"vin":"1GJZ7NFP8P1169149"})curl 'https://apis.vin/esignatures/verify?vin=1GJZ7NFP8P1169149'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": "EsignatureVerify@1",
"value": {
"vin": "1GJZ7NFP8P1169149",
"noun": "esignature",
"asOf": "2026-08-10",
"verification": {
"ceremonyId": "SGN-880da094",
"packetId": "DOC-8a840ed2",
"signaturesValid": false,
"standing": "not-yet-routed",
"position": "Draft"
}
},
"evidence": {
"vin": "1GJZ7NFP8P1169149",
"noun": "esignature",
"asOf": "2026-08-10",
"verification": {
"ceremonyId": "SGN-880da094",
"packetId": "DOC-8a840ed2",
"signaturesValid": false,
"standing": "not-yet-routed",
"position": "Draft"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "signing-desk-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Quote & price
fee
esignature.fee · POST /esignatures/fee · gate offer · sandbox · answers EsignatureFee@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) · /1GJZ7NFP8P1169149 (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 — Esignature.feeCharged@1 · Esignature.feeRequested@1.
import { esignature } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await esignature.fee({"vin":"1GJZ7NFP8P1169149"})curl -X POST https://apis.vin/esignatures/fee \
-H 'content-type: application/json' \
-d '{"vin":"1GJZ7NFP8P1169149"}'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": "EsignatureFee@1",
"value": {
"vin": "1GJZ7NFP8P1169149",
"noun": "esignature",
"asOf": "2026-08-10",
"fee": {
"amountCents": 7500,
"currency": "USD",
"per": "ceremony"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "1GJZ7NFP8P1169149",
"noun": "esignature",
"asOf": "2026-08-10",
"fee": {
"amountCents": 7500,
"currency": "USD",
"per": "ceremony"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "signing-desk-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Apply & book
request
esignature.request · POST /esignatures/request · gate offer · sandbox · answers EsignatureRequest@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) · /1GJZ7NFP8P1169149 (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 — Esignature.requestRequested@1 · Esignature.requested@1.
import { esignature } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await esignature.request({"vin":"1GJZ7NFP8P1169149"})curl -X POST https://apis.vin/esignatures/request \
-H 'content-type: application/json' \
-d '{"vin":"1GJZ7NFP8P1169149"}'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": "EsignatureRequest@1",
"value": {
"vin": "1GJZ7NFP8P1169149",
"noun": "esignature",
"asOf": "2026-08-10",
"request": {
"status": "requested",
"ceremonyId": "SGN-880da094",
"packetId": "DOC-8a840ed2",
"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"
}
]
}
},
"evidence": {
"vin": "1GJZ7NFP8P1169149",
"noun": "esignature",
"asOf": "2026-08-10",
"request": {
"status": "requested",
"ceremonyId": "SGN-880da094",
"packetId": "DOC-8a840ed2",
"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"
}
]
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "signing-desk-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Pay & settle
pay
esignature.pay · POST /esignatures/pay · gate offer · sandbox · answers EsignaturePay@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) · /1GJZ7NFP8P1169149 (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 — Esignature.paid@1 · Esignature.payFailed@1 · Esignature.payRequested@1.
import { esignature } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await esignature.pay({"vin":"1GJZ7NFP8P1169149"})curl -X POST https://apis.vin/esignatures/pay \
-H 'content-type: application/json' \
-d '{"vin":"1GJZ7NFP8P1169149"}'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": "EsignaturePay@1",
"value": {
"vin": "1GJZ7NFP8P1169149",
"noun": "esignature",
"asOf": "2026-08-10",
"payment": {
"id": "PAY-cd853aca",
"amountCents": 7500,
"currency": "USD",
"status": "settled"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "1GJZ7NFP8P1169149",
"noun": "esignature",
"asOf": "2026-08-10",
"payment": {
"id": "PAY-cd853aca",
"amountCents": 7500,
"currency": "USD",
"status": "settled"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "signing-desk-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}capture
esignature.capture · POST /esignatures/capture · gate offer · sandbox · answers EsignatureCapture@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) · /1GJZ7NFP8P1169149 (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 — Esignature.captureFailed@1 · Esignature.captureRequested@1 · Esignature.captured@1.
import { esignature } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await esignature.capture({"vin":"1GJZ7NFP8P1169149"})curl -X POST https://apis.vin/esignatures/capture \
-H 'content-type: application/json' \
-d '{"vin":"1GJZ7NFP8P1169149"}'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": "EsignatureCapture@1",
"value": {
"vin": "1GJZ7NFP8P1169149",
"noun": "esignature",
"asOf": "2026-08-10",
"capture": {
"status": "packet-not-routed",
"position": "Draft"
}
},
"evidence": {
"vin": "1GJZ7NFP8P1169149",
"noun": "esignature",
"asOf": "2026-08-10",
"capture": {
"status": "packet-not-routed",
"position": "Draft"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "signing-desk-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Authorize & resolve
decline
esignature.decline · POST /esignatures/decline · gate offer · sandbox · answers EsignatureDecline@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) · /1GJZ7NFP8P1169149 (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 — Esignature.declineRequested@1 · Esignature.declined@1.
import { esignature } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await esignature.decline({"vin":"1GJZ7NFP8P1169149"})curl -X POST https://apis.vin/esignatures/decline \
-H 'content-type: application/json' \
-d '{"vin":"1GJZ7NFP8P1169149"}'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": "EsignatureDecline@1",
"value": {
"vin": "1GJZ7NFP8P1169149",
"noun": "esignature",
"asOf": "2026-08-10",
"decline": {
"status": "packet-not-routed",
"position": "Draft"
}
},
"evidence": {
"vin": "1GJZ7NFP8P1169149",
"noun": "esignature",
"asOf": "2026-08-10",
"decline": {
"status": "packet-not-routed",
"position": "Draft"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "signing-desk-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Lifecycle & state
void
esignature.void · POST /esignatures/void · gate offer · sandbox · answers EsignatureVoid@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) · /1GJZ7NFP8P1169149 (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 — Esignature.voidFailed@1 · Esignature.voidRequested@1 · Esignature.voided@1.
import { esignature } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await esignature.void({"vin":"1GJZ7NFP8P1169149"})curl -X POST https://apis.vin/esignatures/void \
-H 'content-type: application/json' \
-d '{"vin":"1GJZ7NFP8P1169149"}'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": "EsignatureVoid@1",
"value": {
"vin": "1GJZ7NFP8P1169149",
"noun": "esignature",
"asOf": "2026-08-10",
"void": {
"status": "voided",
"ceremonyId": "SGN-880da094",
"packetId": "DOC-8a840ed2",
"position": "Draft"
}
},
"evidence": {
"vin": "1GJZ7NFP8P1169149",
"noun": "esignature",
"asOf": "2026-08-10",
"void": {
"status": "voided",
"ceremonyId": "SGN-880da094",
"packetId": "DOC-8a840ed2",
"position": "Draft"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "signing-desk-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}More actions
auditTrail
esignature.auditTrail · GET /esignatures/audit-trail · gate none · sandbox · answers EsignatureAuditTrail@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1GJZ7NFP8P1169149 (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 { esignature } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await esignature.auditTrail({"vin":"1GJZ7NFP8P1169149"})curl 'https://apis.vin/esignatures/audit-trail?vin=1GJZ7NFP8P1169149'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": "EsignatureAuditTrail@1",
"value": {
"vin": "1GJZ7NFP8P1169149",
"noun": "esignature",
"asOf": "2026-08-10",
"auditTrail": {
"ceremonyId": "SGN-880da094",
"entries": [
{
"event": "packet-prepared",
"packetId": "DOC-8a840ed2"
}
],
"count": 1
}
},
"evidence": {
"vin": "1GJZ7NFP8P1169149",
"noun": "esignature",
"asOf": "2026-08-10",
"auditTrail": {
"ceremonyId": "SGN-880da094",
"entries": [
{
"event": "packet-prepared",
"packetId": "DOC-8a840ed2"
}
],
"count": 1
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "signing-desk-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}witness
esignature.witness · POST /esignatures/witness · gate offer · sandbox · answers EsignatureWitness@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) · /1GJZ7NFP8P1169149 (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 — Esignature.witnessRequested@1 · Esignature.witnessed@1.
import { esignature } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await esignature.witness({"vin":"1GJZ7NFP8P1169149"})curl -X POST https://apis.vin/esignatures/witness \
-H 'content-type: application/json' \
-d '{"vin":"1GJZ7NFP8P1169149"}'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": "EsignatureWitness@1",
"value": {
"vin": "1GJZ7NFP8P1169149",
"noun": "esignature",
"asOf": "2026-08-10",
"witness": {
"status": "nothing-to-witness",
"standing": "not-yet-routed",
"position": "Draft"
}
},
"evidence": {
"vin": "1GJZ7NFP8P1169149",
"noun": "esignature",
"asOf": "2026-08-10",
"witness": {
"status": "nothing-to-witness",
"standing": "not-yet-routed",
"position": "Draft"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "signing-desk-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.
SignatureCeremony
Generated from the catalog. Every capability, answer, gate, and entity on this page is a rendered descriptor — it cannot drift from the wire.