docs.vin

signing

The signing noun — identity, lifecycle, events, and every capability as an anchored section: 11 capabilities, 0 live, 11 sandbox, 0 declared.

signing is one of the estate's 317 automotive nouns — a job a car needs done. It carries 11 capabilities: 0 live, 11 sandbox, 0 declared · doors aggregator.vin.

Identity

Nounsigning
PillarServices (facets: 3 data · 5 services · 3 commerce)
Capabilities11 — 0 live · 11 sandbox · 0 declared
EntitiesSignatureCeremony
Doorsaggregator.vin
SDKVin.signing.* from apis.vin
Address/catalog/signing#{action} — the anchor IS the wire name minus signing.

Events

The vocabulary this noun can append to the record — 17 past-tense, versioned event types, each linked to the capability that emits it:

Discover & read

status

signing.status · GET /signings/status · gate none · sandbox · answers SigningStatus@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /19XFC1F72LE208310 (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.

the SDK — signing.status
import { signing } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await signing.status({"vin":"19XFC1F72LE208310"})
GET /signings/status
curl 'https://apis.vin/signings/status?vin=19XFC1F72LE208310'

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.

receipt · executed 2026-08-17T12:42:17.430Z · HTTP 200
{
  "type": "OK",
  "answers": "SigningStatus@1",
  "value": {
    "vin": "19XFC1F72LE208310",
    "noun": "signing",
    "asOf": "2026-08-10",
    "ceremony": {
      "id": "SGN-61323c66",
      "packet": {
        "packetId": "DOC-5fe9cfdc",
        "kind": "vehicle-record",
        "position": "Draft",
        "subject": {
          "dealId": "DL-09a0aafd",
          "position": "QUOTED"
        }
      },
      "standing": "not-yet-routed",
      "position": "Draft"
    }
  },
  "evidence": {
    "vin": "19XFC1F72LE208310",
    "noun": "signing",
    "asOf": "2026-08-10",
    "ceremony": {
      "id": "SGN-61323c66",
      "packet": {
        "packetId": "DOC-5fe9cfdc",
        "kind": "vehicle-record",
        "position": "Draft",
        "subject": {
          "dealId": "DL-09a0aafd",
          "position": "QUOTED"
        }
      },
      "standing": "not-yet-routed",
      "position": "Draft"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "signing-desk-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

packageLookup

signing.packageLookup · GET /signings/package-lookup · gate none · sandbox · answers SigningPackageLookup@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /19XFC1F72LE208310 (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.

the SDK — signing.packageLookup
import { signing } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await signing.packageLookup({"vin":"19XFC1F72LE208310"})
GET /signings/package-lookup
curl 'https://apis.vin/signings/package-lookup?vin=19XFC1F72LE208310'

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.

receipt · executed 2026-08-17T12:42:17.418Z · HTTP 200
{
  "type": "OK",
  "answers": "SigningPackageLookup@1",
  "value": {
    "vin": "19XFC1F72LE208310",
    "noun": "signing",
    "asOf": "2026-08-10",
    "package": {
      "packetId": "DOC-5fe9cfdc",
      "kind": "vehicle-record",
      "position": "Draft",
      "subject": {
        "dealId": "DL-09a0aafd",
        "position": "QUOTED"
      }
    }
  },
  "evidence": {
    "vin": "19XFC1F72LE208310",
    "noun": "signing",
    "asOf": "2026-08-10",
    "package": {
      "packetId": "DOC-5fe9cfdc",
      "kind": "vehicle-record",
      "position": "Draft",
      "subject": {
        "dealId": "DL-09a0aafd",
        "position": "QUOTED"
      }
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "signing-desk-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

completenessCheck

signing.completenessCheck · GET /signings/completeness-check · gate none · sandbox · answers SigningCompletenessCheck@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /19XFC1F72LE208310 (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.

the SDK — signing.completenessCheck
import { signing } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await signing.completenessCheck({"vin":"19XFC1F72LE208310"})
GET /signings/completeness-check
curl 'https://apis.vin/signings/completeness-check?vin=19XFC1F72LE208310'

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.

receipt · executed 2026-08-17T12:42:17.407Z · HTTP 200
{
  "type": "OK",
  "answers": "SigningCompletenessCheck@1",
  "value": {
    "vin": "19XFC1F72LE208310",
    "noun": "signing",
    "asOf": "2026-08-10",
    "completeness": {
      "complete": false,
      "standing": "not-yet-routed",
      "position": "Draft",
      "checks": [
        {
          "check": "packet-on-file",
          "pass": true
        },
        {
          "check": "routed-for-signature",
          "pass": false
        },
        {
          "check": "all-signers-signed",
          "pass": false
        }
      ],
      "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": "19XFC1F72LE208310",
    "noun": "signing",
    "asOf": "2026-08-10",
    "completeness": {
      "complete": false,
      "standing": "not-yet-routed",
      "position": "Draft",
      "checks": [
        {
          "check": "packet-on-file",
          "pass": true
        },
        {
          "check": "routed-for-signature",
          "pass": false
        },
        {
          "check": "all-signers-signed",
          "pass": false
        }
      ],
      "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
  }
}

Quote & price

quote

signing.quote · POST /signings/quote · gate offer · sandbox · answers SigningQuote@1

FieldTypeRequiredNotes
vinstringno

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.

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /19XFC1F72LE208310 (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.

EmitsSigning.quoteRequested@1 · Signing.quoted@1.

the SDK — signing.quote
import { signing } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await signing.quote({"vin":"19XFC1F72LE208310"})
POST /signings/quote
curl -X POST https://apis.vin/signings/quote \
  -H 'content-type: application/json' \
  -d '{"vin":"19XFC1F72LE208310"}'

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.

receipt · executed 2026-08-17T12:42:17.430Z · HTTP 200
{
  "type": "OK",
  "answers": "SigningQuote@1",
  "value": {
    "vin": "19XFC1F72LE208310",
    "noun": "signing",
    "asOf": "2026-08-10",
    "fee": {
      "amountCents": 7500,
      "currency": "USD",
      "per": "ceremony"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "19XFC1F72LE208310",
    "noun": "signing",
    "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
  }
}

fee

signing.fee · POST /signings/fee · gate offer · sandbox · answers SigningFee@1

FieldTypeRequiredNotes
vinstringno

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.

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /19XFC1F72LE208310 (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.

EmitsSigning.feeCharged@1 · Signing.feeRequested@1.

the SDK — signing.fee
import { signing } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await signing.fee({"vin":"19XFC1F72LE208310"})
POST /signings/fee
curl -X POST https://apis.vin/signings/fee \
  -H 'content-type: application/json' \
  -d '{"vin":"19XFC1F72LE208310"}'

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.

receipt · executed 2026-08-17T12:42:17.416Z · HTTP 200
{
  "type": "OK",
  "answers": "SigningFee@1",
  "value": {
    "vin": "19XFC1F72LE208310",
    "noun": "signing",
    "asOf": "2026-08-10",
    "fee": {
      "amountCents": 7500,
      "currency": "USD",
      "per": "ceremony"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "19XFC1F72LE208310",
    "noun": "signing",
    "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

schedule

signing.schedule · POST /signings/schedule · gate offer · sandbox · answers SigningSchedule@1

FieldTypeRequiredNotes
vinstringno

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.

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /19XFC1F72LE208310 (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.

EmitsSigning.scheduleRequested@1 · Signing.scheduled@1.

the SDK — signing.schedule
import { signing } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await signing.schedule({"vin":"19XFC1F72LE208310"})
POST /signings/schedule
curl -X POST https://apis.vin/signings/schedule \
  -H 'content-type: application/json' \
  -d '{"vin":"19XFC1F72LE208310"}'

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.

receipt · executed 2026-08-17T12:42:17.430Z · HTTP 200
{
  "type": "OK",
  "answers": "SigningSchedule@1",
  "value": {
    "vin": "19XFC1F72LE208310",
    "noun": "signing",
    "asOf": "2026-08-10",
    "session": {
      "id": "SGN-61323c66",
      "packetId": "DOC-5fe9cfdc",
      "status": "scheduled",
      "scheduledFor": "2026-08-11"
    }
  },
  "evidence": {
    "vin": "19XFC1F72LE208310",
    "noun": "signing",
    "asOf": "2026-08-10",
    "session": {
      "id": "SGN-61323c66",
      "packetId": "DOC-5fe9cfdc",
      "status": "scheduled",
      "scheduledFor": "2026-08-11"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "signing-desk-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Pay & settle

pay

signing.pay · POST /signings/pay · gate offer · sandbox · answers SigningPay@1

FieldTypeRequiredNotes
vinstringno

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.

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /19XFC1F72LE208310 (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.

EmitsSigning.paid@1 · Signing.payFailed@1 · Signing.payRequested@1.

the SDK — signing.pay
import { signing } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await signing.pay({"vin":"19XFC1F72LE208310"})
POST /signings/pay
curl -X POST https://apis.vin/signings/pay \
  -H 'content-type: application/json' \
  -d '{"vin":"19XFC1F72LE208310"}'

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.

receipt · executed 2026-08-17T12:42:17.424Z · HTTP 200
{
  "type": "OK",
  "answers": "SigningPay@1",
  "value": {
    "vin": "19XFC1F72LE208310",
    "noun": "signing",
    "asOf": "2026-08-10",
    "payment": {
      "id": "PAY-93595e58",
      "amountCents": 7500,
      "currency": "USD",
      "status": "settled"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "19XFC1F72LE208310",
    "noun": "signing",
    "asOf": "2026-08-10",
    "payment": {
      "id": "PAY-93595e58",
      "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
  }
}

Fulfill & operate

complete

signing.complete · POST /signings/complete · gate offer · sandbox · answers SigningComplete@1

FieldTypeRequiredNotes
vinstringno

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.

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /19XFC1F72LE208310 (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.

EmitsSigning.completeRequested@1 · Signing.completed@1.

the SDK — signing.complete
import { signing } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await signing.complete({"vin":"19XFC1F72LE208310"})
POST /signings/complete
curl -X POST https://apis.vin/signings/complete \
  -H 'content-type: application/json' \
  -d '{"vin":"19XFC1F72LE208310"}'

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.

receipt · executed 2026-08-17T12:42:17.403Z · HTTP 200
{
  "type": "OK",
  "answers": "SigningComplete@1",
  "value": {
    "vin": "19XFC1F72LE208310",
    "noun": "signing",
    "asOf": "2026-08-10",
    "completion": {
      "status": "signatures-not-collected",
      "standing": "not-yet-routed",
      "position": "Draft"
    }
  },
  "evidence": {
    "vin": "19XFC1F72LE208310",
    "noun": "signing",
    "asOf": "2026-08-10",
    "completion": {
      "status": "signatures-not-collected",
      "standing": "not-yet-routed",
      "position": "Draft"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "signing-desk-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

More actions

collectSignatures

signing.collectSignatures · POST /signings/collect-signatures · gate offer · sandbox · answers SigningCollectSignatures@1

FieldTypeRequiredNotes
vinstringno

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.

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /19XFC1F72LE208310 (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.

EmitsSigning.collectSignaturesRequested@1 · Signing.signaturesCollected@1.

the SDK — signing.collectSignatures
import { signing } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await signing.collectSignatures({"vin":"19XFC1F72LE208310"})
POST /signings/collect-signatures
curl -X POST https://apis.vin/signings/collect-signatures \
  -H 'content-type: application/json' \
  -d '{"vin":"19XFC1F72LE208310"}'

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.

receipt · executed 2026-08-17T12:42:17.403Z · HTTP 200
{
  "type": "OK",
  "answers": "SigningCollectSignatures@1",
  "value": {
    "vin": "19XFC1F72LE208310",
    "noun": "signing",
    "asOf": "2026-08-10",
    "collection": {
      "status": "packet-not-routed",
      "position": "Draft"
    }
  },
  "evidence": {
    "vin": "19XFC1F72LE208310",
    "noun": "signing",
    "asOf": "2026-08-10",
    "collection": {
      "status": "packet-not-routed",
      "position": "Draft"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "signing-desk-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

dispatchAgent

signing.dispatchAgent · POST /signings/dispatch-agent · gate offer · sandbox · answers SigningDispatchAgent@1

FieldTypeRequiredNotes
vinstringno

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.

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /19XFC1F72LE208310 (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.

EmitsSigning.agentDispatched@1 · Signing.dispatchAgentRequested@1.

the SDK — signing.dispatchAgent
import { signing } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await signing.dispatchAgent({"vin":"19XFC1F72LE208310"})
POST /signings/dispatch-agent
curl -X POST https://apis.vin/signings/dispatch-agent \
  -H 'content-type: application/json' \
  -d '{"vin":"19XFC1F72LE208310"}'

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.

receipt · executed 2026-08-17T12:42:17.410Z · HTTP 200
{
  "type": "OK",
  "answers": "SigningDispatchAgent@1",
  "value": {
    "vin": "19XFC1F72LE208310",
    "noun": "signing",
    "asOf": "2026-08-10",
    "dispatch": {
      "status": "agent-dispatched",
      "id": "AGT-38c8954b",
      "ceremonyId": "SGN-61323c66",
      "packetId": "DOC-5fe9cfdc",
      "arrivesOn": "2026-08-11"
    }
  },
  "evidence": {
    "vin": "19XFC1F72LE208310",
    "noun": "signing",
    "asOf": "2026-08-10",
    "dispatch": {
      "status": "agent-dispatched",
      "id": "AGT-38c8954b",
      "ceremonyId": "SGN-61323c66",
      "packetId": "DOC-5fe9cfdc",
      "arrivesOn": "2026-08-11"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "signing-desk-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

witness

signing.witness · POST /signings/witness · gate offer · sandbox · answers SigningWitness@1

FieldTypeRequiredNotes
vinstringno

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.

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /19XFC1F72LE208310 (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.

EmitsSigning.witnessRequested@1 · Signing.witnessed@1.

the SDK — signing.witness
import { signing } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await signing.witness({"vin":"19XFC1F72LE208310"})
POST /signings/witness
curl -X POST https://apis.vin/signings/witness \
  -H 'content-type: application/json' \
  -d '{"vin":"19XFC1F72LE208310"}'

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.

receipt · executed 2026-08-17T12:42:17.430Z · HTTP 200
{
  "type": "OK",
  "answers": "SigningWitness@1",
  "value": {
    "vin": "19XFC1F72LE208310",
    "noun": "signing",
    "asOf": "2026-08-10",
    "witness": {
      "status": "nothing-to-witness",
      "standing": "not-yet-routed",
      "position": "Draft"
    }
  },
  "evidence": {
    "vin": "19XFC1F72LE208310",
    "noun": "signing",
    "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

Schema

PropertyType
idid
packetIdref→Document
subjectIdref→Deal
signersSigner[]

Relationships

FromToCardinalityAs
documentsigning1:0..*signed 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.

Signing · Class model

Signing · State machine

Signing · Sequence


Generated from the catalog. Every capability, answer, gate, and entity on this page is a rendered descriptor — it cannot drift from the wire.