docs.vin

document

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

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

Identity

Noundocument
PillarData (facets: 8 data · 7 services · 2 commerce)
Capabilities17 — 0 live · 17 sandbox · 0 declared
EntitiesDocument
Doorsaggregator.vin
SDKVin.document.* from apis.vin
Address/catalog/document#{action} — the anchor IS the wire name minus document.

Lifecycle

DocumentDocumentFSM: 7 states, 6 transitions — Draft · Prepared · Sent · Signed · Notarized · Filed · Executed. Each transition is a past-tense event on the record.

Events

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

Discover & read

document.search · GET /documents/search · gate none · sandbox · answers DocumentSearch@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /1GTU9DED4KZ250897 (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 — document.search
import { document } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await document.search({"vin":"1GTU9DED4KZ250897"})
GET /documents/search
curl 'https://apis.vin/documents/search?vin=1GTU9DED4KZ250897'

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:10.487Z · HTTP 200
{
  "type": "OK",
  "answers": "DocumentSearch@1",
  "value": {
    "vin": "1GTU9DED4KZ250897",
    "noun": "document",
    "asOf": "2026-08-10",
    "results": {
      "documents": 7,
      "inVault": 3,
      "inFlight": 4
    }
  },
  "evidence": {
    "vin": "1GTU9DED4KZ250897",
    "noun": "document",
    "asOf": "2026-08-10",
    "results": {
      "documents": 7,
      "inVault": 3,
      "inFlight": 4
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "paper-commerce-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

read

document.read · GET /documents/read · gate none · sandbox · answers DocumentRead@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /1GTU9DED4KZ250897 (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 — document.read
import { document } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await document.read({"vin":"1GTU9DED4KZ250897"})
GET /documents/read
curl 'https://apis.vin/documents/read?vin=1GTU9DED4KZ250897'

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:10.485Z · HTTP 200
{
  "type": "OK",
  "answers": "DocumentRead@1",
  "value": {
    "vin": "1GTU9DED4KZ250897",
    "noun": "document",
    "asOf": "2026-08-10",
    "document": {
      "id": "DOC-6e119877",
      "position": "Draft",
      "kind": "vehicle-record",
      "custody": "in-flight"
    }
  },
  "evidence": {
    "vin": "1GTU9DED4KZ250897",
    "noun": "document",
    "asOf": "2026-08-10",
    "document": {
      "id": "DOC-6e119877",
      "position": "Draft",
      "kind": "vehicle-record",
      "custody": "in-flight"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "paper-commerce-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

status

document.status · GET /documents/status · gate none · sandbox · answers DocumentStatus@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /1GTU9DED4KZ250897 (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 — document.status
import { document } from 'apis.vin'

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

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:10.493Z · HTTP 200
{
  "type": "OK",
  "answers": "DocumentStatus@1",
  "value": {
    "vin": "1GTU9DED4KZ250897",
    "noun": "document",
    "asOf": "2026-08-10",
    "document": {
      "id": "DOC-6e119877",
      "position": "Draft",
      "kind": "vehicle-record",
      "custody": "in-flight"
    }
  },
  "evidence": {
    "vin": "1GTU9DED4KZ250897",
    "noun": "document",
    "asOf": "2026-08-10",
    "document": {
      "id": "DOC-6e119877",
      "position": "Draft",
      "kind": "vehicle-record",
      "custody": "in-flight"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "paper-commerce-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

verify

document.verify · GET /documents/verify · gate none · sandbox · answers DocumentVerify@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /1GTU9DED4KZ250897 (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 — document.verify
import { document } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await document.verify({"vin":"1GTU9DED4KZ250897"})
GET /documents/verify
curl 'https://apis.vin/documents/verify?vin=1GTU9DED4KZ250897'

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:10.502Z · HTTP 200
{
  "type": "OK",
  "answers": "DocumentVerify@1",
  "value": {
    "vin": "1GTU9DED4KZ250897",
    "noun": "document",
    "asOf": "2026-08-10",
    "verification": {
      "id": "DOC-6e119877",
      "verified": false,
      "reason": "not-yet-signed",
      "position": "Draft"
    }
  },
  "evidence": {
    "vin": "1GTU9DED4KZ250897",
    "noun": "document",
    "asOf": "2026-08-10",
    "verification": {
      "id": "DOC-6e119877",
      "verified": false,
      "reason": "not-yet-signed",
      "position": "Draft"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "paper-commerce-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

scan

document.scan · POST /documents/scan · gate offer · sandbox · answers DocumentScan@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) · /1GTU9DED4KZ250897 (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.

EmitsDocument.scanRequested@1 · Document.scanned@1.

the SDK — document.scan
import { document } from 'apis.vin'

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

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:10.486Z · HTTP 200
{
  "type": "OK",
  "answers": "DocumentScan@1",
  "value": {
    "vin": "1GTU9DED4KZ250897",
    "noun": "document",
    "asOf": "2026-08-10",
    "scan": {
      "id": "DOC-6e119877",
      "pages": 2,
      "resolutionDpi": 300,
      "status": "scanned"
    }
  },
  "evidence": {
    "vin": "1GTU9DED4KZ250897",
    "noun": "document",
    "asOf": "2026-08-10",
    "scan": {
      "id": "DOC-6e119877",
      "pages": 2,
      "resolutionDpi": 300,
      "status": "scanned"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "paper-commerce-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

classify

document.classify · GET /documents/classify · gate key · sandbox · answers DocumentClassify@1

FieldTypeRequiredNotes
vinstringno

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

EmitsDocument.classified@1.

the SDK — document.classify
import { document } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await document.classify({"vin":"1GTU9DED4KZ250897"})
GET /documents/classify
curl 'https://apis.vin/documents/classify?vin=1GTU9DED4KZ250897'

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:10.454Z · HTTP 200
{
  "type": "OK",
  "answers": "DocumentClassify@1",
  "value": {
    "vin": "1GTU9DED4KZ250897",
    "noun": "document",
    "asOf": "2026-08-10",
    "classification": {
      "id": "DOC-6e119877",
      "kind": "vehicle-record",
      "basis": "world-arc"
    }
  },
  "evidence": {
    "vin": "1GTU9DED4KZ250897",
    "noun": "document",
    "asOf": "2026-08-10",
    "classification": {
      "id": "DOC-6e119877",
      "kind": "vehicle-record",
      "basis": "world-arc"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "paper-commerce-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Quote & price

fee

document.fee · POST /documents/fee · gate offer · sandbox · answers DocumentFee@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) · /1GTU9DED4KZ250897 (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.

EmitsDocument.feeCharged@1 · Document.feeRequested@1.

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

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

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:10.473Z · HTTP 200
{
  "type": "OK",
  "answers": "DocumentFee@1",
  "value": {
    "vin": "1GTU9DED4KZ250897",
    "noun": "document",
    "asOf": "2026-08-10",
    "fee": {
      "id": "DF-009e5477",
      "amountCents": 8500,
      "currency": "USD",
      "status": "quoted"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "1GTU9DED4KZ250897",
    "noun": "document",
    "asOf": "2026-08-10",
    "fee": {
      "id": "DF-009e5477",
      "amountCents": 8500,
      "currency": "USD",
      "status": "quoted"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "paper-commerce-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Pay & settle

pay

document.pay · POST /documents/pay · gate offer · sandbox · answers DocumentPay@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) · /1GTU9DED4KZ250897 (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.

EmitsDocument.paid@1 · Document.payFailed@1 · Document.payRequested@1.

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

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

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:10.484Z · HTTP 200
{
  "type": "OK",
  "answers": "DocumentPay@1",
  "value": {
    "vin": "1GTU9DED4KZ250897",
    "noun": "document",
    "asOf": "2026-08-10",
    "payment": {
      "id": "PAY-506e7595",
      "amountCents": 8500,
      "currency": "USD",
      "status": "settled"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "1GTU9DED4KZ250897",
    "noun": "document",
    "asOf": "2026-08-10",
    "payment": {
      "id": "PAY-506e7595",
      "amountCents": 8500,
      "currency": "USD",
      "status": "settled"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "paper-commerce-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Fulfill & operate

generate

document.generate · POST /documents/generate · gate offer · sandbox · answers DocumentGenerate@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) · /1GTU9DED4KZ250897 (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.

EmitsDocument.generateRequested@1 · Poa.generated@1 · Document.generated@1.

the SDK — document.generate
import { document } from 'apis.vin'

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

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:10.473Z · HTTP 200
{
  "type": "OK",
  "answers": "DocumentGenerate@1",
  "value": {
    "vin": "1GTU9DED4KZ250897",
    "noun": "document",
    "asOf": "2026-08-10",
    "document": {
      "status": "already-on-file",
      "id": "DOC-6e119877",
      "position": "Draft"
    }
  },
  "evidence": {
    "vin": "1GTU9DED4KZ250897",
    "noun": "document",
    "asOf": "2026-08-10",
    "document": {
      "status": "already-on-file",
      "id": "DOC-6e119877",
      "position": "Draft"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "paper-commerce-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

upload

document.upload · POST /documents/upload · gate offer · sandbox · answers DocumentUpload@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) · /1GTU9DED4KZ250897 (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.

EmitsDocument.uploadRequested@1 · Document.uploaded@1.

the SDK — document.upload
import { document } from 'apis.vin'

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

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:10.496Z · HTTP 200
{
  "type": "OK",
  "answers": "DocumentUpload@1",
  "value": {
    "vin": "1GTU9DED4KZ250897",
    "noun": "document",
    "asOf": "2026-08-10",
    "upload": {
      "status": "uploaded",
      "id": "DOC-6e119877",
      "vaultId": "VLT-e3387c4b",
      "custody": "vault"
    }
  },
  "evidence": {
    "vin": "1GTU9DED4KZ250897",
    "noun": "document",
    "asOf": "2026-08-10",
    "upload": {
      "status": "uploaded",
      "id": "DOC-6e119877",
      "vaultId": "VLT-e3387c4b",
      "custody": "vault"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "paper-commerce-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Lifecycle & state

archive

document.archive · POST /documents/archive · gate offer · sandbox · answers DocumentArchive@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) · /1GTU9DED4KZ250897 (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.

EmitsDocument.archiveRequested@1 · Document.archived@1.

the SDK — document.archive
import { document } from 'apis.vin'

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

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:10.451Z · HTTP 200
{
  "type": "OK",
  "answers": "DocumentArchive@1",
  "value": {
    "vin": "1GTU9DED4KZ250897",
    "noun": "document",
    "asOf": "2026-08-10",
    "archive": {
      "id": "DOC-6e119877",
      "status": "still-active",
      "position": "Draft"
    }
  },
  "evidence": {
    "vin": "1GTU9DED4KZ250897",
    "noun": "document",
    "asOf": "2026-08-10",
    "archive": {
      "id": "DOC-6e119877",
      "status": "still-active",
      "position": "Draft"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "paper-commerce-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

More actions

expiry

document.expiry · GET /documents/expiry · gate none · sandbox · answers DocumentExpiry@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /1GTU9DED4KZ250897 (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 — document.expiry
import { document } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await document.expiry({"vin":"1GTU9DED4KZ250897"})
GET /documents/expiry
curl 'https://apis.vin/documents/expiry?vin=1GTU9DED4KZ250897'

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:10.462Z · HTTP 200
{
  "type": "OK",
  "answers": "DocumentExpiry@1",
  "value": {
    "vin": "1GTU9DED4KZ250897",
    "noun": "document",
    "asOf": "2026-08-10",
    "expiry": {
      "id": "DOC-6e119877",
      "expires": true,
      "expiresOn": "2026-09-09",
      "position": "Draft"
    }
  },
  "evidence": {
    "vin": "1GTU9DED4KZ250897",
    "noun": "document",
    "asOf": "2026-08-10",
    "expiry": {
      "id": "DOC-6e119877",
      "expires": true,
      "expiresOn": "2026-09-09",
      "position": "Draft"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "paper-commerce-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

extract

document.extract · GET /documents/extract · gate none · sandbox · answers DocumentExtract@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /1GTU9DED4KZ250897 (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 — document.extract
import { document } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await document.extract({"vin":"1GTU9DED4KZ250897"})
GET /documents/extract
curl 'https://apis.vin/documents/extract?vin=1GTU9DED4KZ250897'

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:10.465Z · HTTP 200
{
  "type": "OK",
  "answers": "DocumentExtract@1",
  "value": {
    "vin": "1GTU9DED4KZ250897",
    "noun": "document",
    "asOf": "2026-08-10",
    "extraction": {
      "id": "DOC-6e119877",
      "vin": "1GTU9DED4KZ250897",
      "buyer": "Ava Good",
      "priceCents": 2300000,
      "currency": "USD",
      "status": "extracted"
    }
  },
  "evidence": {
    "vin": "1GTU9DED4KZ250897",
    "noun": "document",
    "asOf": "2026-08-10",
    "extraction": {
      "id": "DOC-6e119877",
      "vin": "1GTU9DED4KZ250897",
      "buyer": "Ava Good",
      "priceCents": 2300000,
      "currency": "USD",
      "status": "extracted"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "paper-commerce-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

ocr

document.ocr · GET /documents/ocr · gate none · sandbox · answers DocumentOcr@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /1GTU9DED4KZ250897 (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 — document.ocr
import { document } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await document.ocr({"vin":"1GTU9DED4KZ250897"})
GET /documents/ocr
curl 'https://apis.vin/documents/ocr?vin=1GTU9DED4KZ250897'

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:10.474Z · HTTP 200
{
  "type": "OK",
  "answers": "DocumentOcr@1",
  "value": {
    "vin": "1GTU9DED4KZ250897",
    "noun": "document",
    "asOf": "2026-08-10",
    "ocr": {
      "id": "DOC-6e119877",
      "confidencePct": 94,
      "fields": [
        "vin",
        "buyer",
        "price"
      ],
      "status": "recognized"
    }
  },
  "evidence": {
    "vin": "1GTU9DED4KZ250897",
    "noun": "document",
    "asOf": "2026-08-10",
    "ocr": {
      "id": "DOC-6e119877",
      "confidencePct": 94,
      "fields": [
        "vin",
        "buyer",
        "price"
      ],
      "status": "recognized"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "paper-commerce-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

redact

document.redact · POST /documents/redact · gate offer · sandbox · answers DocumentRedact@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) · /1GTU9DED4KZ250897 (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.

EmitsDocument.redactRequested@1 · Document.redacted@1.

the SDK — document.redact
import { document } from 'apis.vin'

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

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:10.485Z · HTTP 200
{
  "type": "OK",
  "answers": "DocumentRedact@1",
  "value": {
    "vin": "1GTU9DED4KZ250897",
    "noun": "document",
    "asOf": "2026-08-10",
    "redaction": {
      "id": "DOC-6e119877",
      "fields": [
        "ssn",
        "dob",
        "accountNumber"
      ],
      "status": "redacted"
    }
  },
  "evidence": {
    "vin": "1GTU9DED4KZ250897",
    "noun": "document",
    "asOf": "2026-08-10",
    "redaction": {
      "id": "DOC-6e119877",
      "fields": [
        "ssn",
        "dob",
        "accountNumber"
      ],
      "status": "redacted"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "paper-commerce-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

route

document.route · POST /documents/route · gate offer · sandbox · answers DocumentRoute@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) · /1GTU9DED4KZ250897 (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.

EmitsDocument.routeRequested@1 · Document.routed@1.

the SDK — document.route
import { document } from 'apis.vin'

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

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:10.485Z · HTTP 200
{
  "type": "OK",
  "answers": "DocumentRoute@1",
  "value": {
    "vin": "1GTU9DED4KZ250897",
    "noun": "document",
    "asOf": "2026-08-10",
    "routing": {
      "id": "DOC-6e119877",
      "destination": "desk",
      "status": "routed"
    }
  },
  "evidence": {
    "vin": "1GTU9DED4KZ250897",
    "noun": "document",
    "asOf": "2026-08-10",
    "routing": {
      "id": "DOC-6e119877",
      "destination": "desk",
      "status": "routed"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "paper-commerce-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

stamp

document.stamp · POST /documents/stamp · gate offer · sandbox · answers DocumentStamp@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) · /1GTU9DED4KZ250897 (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.

EmitsDocument.stampRequested@1 · Document.stamped@1.

the SDK — document.stamp
import { document } from 'apis.vin'

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

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:10.493Z · HTTP 200
{
  "type": "OK",
  "answers": "DocumentStamp@1",
  "value": {
    "vin": "1GTU9DED4KZ250897",
    "noun": "document",
    "asOf": "2026-08-10",
    "stamp": {
      "id": "DOC-6e119877",
      "status": "not-yet-signed",
      "position": "Draft"
    }
  },
  "evidence": {
    "vin": "1GTU9DED4KZ250897",
    "noun": "document",
    "asOf": "2026-08-10",
    "stamp": {
      "id": "DOC-6e119877",
      "status": "not-yet-signed",
      "position": "Draft"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "paper-commerce-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.

Document

Schema

PropertyTypeNotes
ididdoc_
typeDocTypePOA|buyersOrder|contract|MCO|disclosure
subjectIdref→Deal
urlstring
hashstring
signersSigner[]
statusDocumentFSM

Relationships

FromToCardinalityAs
dealdocument1:0..*papered
documentsigning1:0..*signed via
documentnotary1:0..*notarized via
dealJacketdocument1:0..*holds

Modeled

The noun drawn out — its record shape, its lifecycle, and how it is exercised end to end. 2 diagrams, rendered from the estate model.

Document · Class model

Document · State machine


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