documentVault
The documentVault noun — identity, lifecycle, events, and every capability as an anchored section: 16 capabilities, 0 live, 16 sandbox, 0 declared.
documentVault is one of the estate's 317 automotive nouns — a job a car needs done. It carries 16 capabilities: 0 live, 16 sandbox, 0 declared · doors aggregator.vin.
Identity
| Noun | documentVault |
| Pillar | Services (facets: 6 data · 7 services · 3 commerce) |
| Capabilities | 16 — 0 live · 16 sandbox · 0 declared |
| Entities | Document |
| Doors | aggregator.vin |
| SDK | Vin.documentVault.* from apis.vin |
| Address | /catalog/documentVault#{action} — the anchor IS the wire name minus documentVault. |
Events
The vocabulary this noun can append to the record — 21 past-tense, versioned event types, each linked to the capability that emits it:
DocumentVault.accessGranted@1— emitted bygrantAccessDocumentVault.accessRevoked@1— emitted byrevokeAccessDocumentVault.custodyTransferred@1— emitted bytransferCustodyDocumentVault.depositRequested@1— emitted bydepositDocumentVault.deposited@1— emitted bydepositDocumentVault.grantAccessRequested@1— emitted bygrantAccessDocumentVault.paid@1— emitted bypayDocumentVault.payFailed@1— emitted bypayDocumentVault.payRequested@1— emitted bypayDocumentVault.purgeRequested@1— emitted bypurgeDocumentVault.purged@1— emitted bypurgeDocumentVault.retainRequested@1— emitted byretainDocumentVault.retained@1— emitted byretainDocumentVault.revokeAccessRequested@1— emitted byrevokeAccessDocumentVault.storageFeeCharged@1— emitted bystorageFeeDocumentVault.storageFeeRequested@1— emitted bystorageFeeDocumentVault.storeRequested@1— emitted bystoreDocumentVault.stored@1— emitted bystoreDocumentVault.subscribeRequested@1— emitted bysubscribeDocumentVault.subscribed@1— emitted bysubscribeDocumentVault.transferCustodyRequested@1— emitted bytransferCustody
Discover & read
lookup
documentVault.lookup · GET /document-vaults/lookup · gate none · sandbox · answers DocumentVaultLookup@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /NM0GE9F29N1512139 (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 { documentVault } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await documentVault.lookup({"vin":"NM0GE9F29N1512139"})curl 'https://apis.vin/document-vaults/lookup?vin=NM0GE9F29N1512139'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": "DocumentVaultLookup@1",
"value": {
"vin": "NM0GE9F29N1512139",
"noun": "documentVault",
"asOf": "2026-08-10",
"vaultId": "VLT-e3387c4b",
"document": {
"id": "DOC-e9e51d4d",
"position": "Draft",
"custody": "in-flight"
}
},
"evidence": {
"vin": "NM0GE9F29N1512139",
"noun": "documentVault",
"asOf": "2026-08-10",
"vaultId": "VLT-e3387c4b",
"document": {
"id": "DOC-e9e51d4d",
"position": "Draft",
"custody": "in-flight"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "paper-commerce-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}list
documentVault.list · GET /document-vaults/list · gate none · sandbox · answers DocumentVaultList@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /NM0GE9F29N1512139 (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 { documentVault } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await documentVault.list({"vin":"NM0GE9F29N1512139"})curl 'https://apis.vin/document-vaults/list?vin=NM0GE9F29N1512139'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": "DocumentVaultList@1",
"value": {
"vin": "NM0GE9F29N1512139",
"noun": "documentVault",
"asOf": "2026-08-10",
"vaultId": "VLT-e3387c4b",
"census": {
"documents": 7,
"inVault": 3,
"inFlight": 4
}
},
"evidence": {
"vin": "NM0GE9F29N1512139",
"noun": "documentVault",
"asOf": "2026-08-10",
"vaultId": "VLT-e3387c4b",
"census": {
"documents": 7,
"inVault": 3,
"inFlight": 4
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "paper-commerce-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}accessCheck
documentVault.accessCheck · GET /document-vaults/access-check · gate none · sandbox · answers DocumentVaultAccessCheck@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /NM0GE9F29N1512139 (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 { documentVault } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await documentVault.accessCheck({"vin":"NM0GE9F29N1512139"})curl 'https://apis.vin/document-vaults/access-check?vin=NM0GE9F29N1512139'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": "DocumentVaultAccessCheck@1",
"value": {
"vin": "NM0GE9F29N1512139",
"noun": "documentVault",
"asOf": "2026-08-10",
"vaultId": "VLT-e3387c4b",
"access": {
"identityId": "ID-11f17424",
"allowed": true,
"scope": "read"
}
},
"evidence": {
"vin": "NM0GE9F29N1512139",
"noun": "documentVault",
"asOf": "2026-08-10",
"vaultId": "VLT-e3387c4b",
"access": {
"identityId": "ID-11f17424",
"allowed": true,
"scope": "read"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "paper-commerce-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}integrityVerify
documentVault.integrityVerify · GET /document-vaults/integrity-verify · gate none · sandbox · answers DocumentVaultIntegrityVerify@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /NM0GE9F29N1512139 (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 { documentVault } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await documentVault.integrityVerify({"vin":"NM0GE9F29N1512139"})curl 'https://apis.vin/document-vaults/integrity-verify?vin=NM0GE9F29N1512139'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": "DocumentVaultIntegrityVerify@1",
"value": {
"vin": "NM0GE9F29N1512139",
"noun": "documentVault",
"asOf": "2026-08-10",
"vaultId": "VLT-e3387c4b",
"integrity": {
"documentId": "DOC-e9e51d4d",
"intact": true,
"checksum": "sha256:d444380cd7443cc5"
}
},
"evidence": {
"vin": "NM0GE9F29N1512139",
"noun": "documentVault",
"asOf": "2026-08-10",
"vaultId": "VLT-e3387c4b",
"integrity": {
"documentId": "DOC-e9e51d4d",
"intact": true,
"checksum": "sha256:d444380cd7443cc5"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "paper-commerce-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Quote & price
storageFee
documentVault.storageFee · POST /document-vaults/storage-fee · gate offer · sandbox · answers DocumentVaultStorageFee@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) · /NM0GE9F29N1512139 (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 — DocumentVault.storageFeeCharged@1 · DocumentVault.storageFeeRequested@1.
import { documentVault } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await documentVault.storageFee({"vin":"NM0GE9F29N1512139"})curl -X POST https://apis.vin/document-vaults/storage-fee \
-H 'content-type: application/json' \
-d '{"vin":"NM0GE9F29N1512139"}'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": "DocumentVaultStorageFee@1",
"value": {
"vin": "NM0GE9F29N1512139",
"noun": "documentVault",
"asOf": "2026-08-10",
"vaultId": "VLT-e3387c4b",
"fee": {
"id": "VF-f50803c0",
"amountCents": 1200,
"currency": "USD",
"period": "monthly",
"status": "quoted"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "NM0GE9F29N1512139",
"noun": "documentVault",
"asOf": "2026-08-10",
"vaultId": "VLT-e3387c4b",
"fee": {
"id": "VF-f50803c0",
"amountCents": 1200,
"currency": "USD",
"period": "monthly",
"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
}
}Apply & book
subscribe
documentVault.subscribe · POST /document-vaults/subscribe · gate offer · sandbox · answers DocumentVaultSubscribe@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) · /NM0GE9F29N1512139 (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 — DocumentVault.subscribeRequested@1 · DocumentVault.subscribed@1.
import { documentVault } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await documentVault.subscribe({"vin":"NM0GE9F29N1512139"})curl -X POST https://apis.vin/document-vaults/subscribe \
-H 'content-type: application/json' \
-d '{"vin":"NM0GE9F29N1512139"}'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": "DocumentVaultSubscribe@1",
"value": {
"vin": "NM0GE9F29N1512139",
"noun": "documentVault",
"asOf": "2026-08-10",
"vaultId": "VLT-e3387c4b",
"subscription": {
"id": "VS-2581ce73",
"plan": "vault-standard",
"amountCents": 4900,
"currency": "USD",
"status": "active"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "NM0GE9F29N1512139",
"noun": "documentVault",
"asOf": "2026-08-10",
"vaultId": "VLT-e3387c4b",
"subscription": {
"id": "VS-2581ce73",
"plan": "vault-standard",
"amountCents": 4900,
"currency": "USD",
"status": "active"
},
"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
documentVault.pay · POST /document-vaults/pay · gate offer · sandbox · answers DocumentVaultPay@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) · /NM0GE9F29N1512139 (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 — DocumentVault.paid@1 · DocumentVault.payFailed@1 · DocumentVault.payRequested@1.
import { documentVault } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await documentVault.pay({"vin":"NM0GE9F29N1512139"})curl -X POST https://apis.vin/document-vaults/pay \
-H 'content-type: application/json' \
-d '{"vin":"NM0GE9F29N1512139"}'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": "DocumentVaultPay@1",
"value": {
"vin": "NM0GE9F29N1512139",
"noun": "documentVault",
"asOf": "2026-08-10",
"vaultId": "VLT-e3387c4b",
"payment": {
"id": "PAY-af4f415e",
"amountCents": 1200,
"currency": "USD",
"status": "settled"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "NM0GE9F29N1512139",
"noun": "documentVault",
"asOf": "2026-08-10",
"vaultId": "VLT-e3387c4b",
"payment": {
"id": "PAY-af4f415e",
"amountCents": 1200,
"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
}
}deposit
documentVault.deposit · POST /document-vaults/deposit · gate offer · sandbox · answers DocumentVaultDeposit@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) · /NM0GE9F29N1512139 (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 — DocumentVault.depositRequested@1 · DocumentVault.deposited@1.
import { documentVault } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await documentVault.deposit({"vin":"NM0GE9F29N1512139"})curl -X POST https://apis.vin/document-vaults/deposit \
-H 'content-type: application/json' \
-d '{"vin":"NM0GE9F29N1512139"}'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": "DocumentVaultDeposit@1",
"value": {
"vin": "NM0GE9F29N1512139",
"noun": "documentVault",
"asOf": "2026-08-10",
"vaultId": "VLT-e3387c4b",
"deposit": {
"status": "deposited",
"documentId": "DOC-e9e51d4d",
"custody": "vault"
}
},
"evidence": {
"vin": "NM0GE9F29N1512139",
"noun": "documentVault",
"asOf": "2026-08-10",
"vaultId": "VLT-e3387c4b",
"deposit": {
"status": "deposited",
"documentId": "DOC-e9e51d4d",
"custody": "vault"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "paper-commerce-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}More actions
auditLog
documentVault.auditLog · GET /document-vaults/audit-log · gate none · sandbox · answers DocumentVaultAuditLog@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /NM0GE9F29N1512139 (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 { documentVault } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await documentVault.auditLog({"vin":"NM0GE9F29N1512139"})curl 'https://apis.vin/document-vaults/audit-log?vin=NM0GE9F29N1512139'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": "DocumentVaultAuditLog@1",
"value": {
"vin": "NM0GE9F29N1512139",
"noun": "documentVault",
"asOf": "2026-08-10",
"vaultId": "VLT-e3387c4b",
"events": [
{
"date": "2026-07-11",
"kind": "deposited",
"documentId": "DOC-e9e51d4d"
},
{
"date": "2026-08-07",
"kind": "accessed",
"identityId": "ID-11f17424"
}
]
},
"evidence": {
"vin": "NM0GE9F29N1512139",
"noun": "documentVault",
"asOf": "2026-08-10",
"vaultId": "VLT-e3387c4b",
"events": [
{
"date": "2026-07-11",
"kind": "deposited",
"documentId": "DOC-e9e51d4d"
},
{
"date": "2026-08-07",
"kind": "accessed",
"identityId": "ID-11f17424"
}
]
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "paper-commerce-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}grantAccess
documentVault.grantAccess · POST /document-vaults/grant-access · gate offer · sandbox · answers DocumentVaultGrantAccess@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) · /NM0GE9F29N1512139 (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 — DocumentVault.accessGranted@1 · DocumentVault.grantAccessRequested@1.
import { documentVault } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await documentVault.grantAccess({"vin":"NM0GE9F29N1512139"})curl -X POST https://apis.vin/document-vaults/grant-access \
-H 'content-type: application/json' \
-d '{"vin":"NM0GE9F29N1512139"}'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": "DocumentVaultGrantAccess@1",
"value": {
"vin": "NM0GE9F29N1512139",
"noun": "documentVault",
"asOf": "2026-08-10",
"vaultId": "VLT-e3387c4b",
"access": {
"identityId": "ID-11f17424",
"scope": "read",
"status": "granted"
}
},
"evidence": {
"vin": "NM0GE9F29N1512139",
"noun": "documentVault",
"asOf": "2026-08-10",
"vaultId": "VLT-e3387c4b",
"access": {
"identityId": "ID-11f17424",
"scope": "read",
"status": "granted"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "paper-commerce-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}purge
documentVault.purge · POST /document-vaults/purge · gate offer · sandbox · answers DocumentVaultPurge@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) · /NM0GE9F29N1512139 (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 — DocumentVault.purgeRequested@1 · DocumentVault.purged@1.
import { documentVault } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await documentVault.purge({"vin":"NM0GE9F29N1512139"})curl -X POST https://apis.vin/document-vaults/purge \
-H 'content-type: application/json' \
-d '{"vin":"NM0GE9F29N1512139"}'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": "DocumentVaultPurge@1",
"value": {
"vin": "NM0GE9F29N1512139",
"noun": "documentVault",
"asOf": "2026-08-10",
"vaultId": "VLT-e3387c4b",
"purge": {
"documentId": "DOC-e9e51d4d",
"status": "retention-hold",
"policy": "deal-paper-7y"
}
},
"evidence": {
"vin": "NM0GE9F29N1512139",
"noun": "documentVault",
"asOf": "2026-08-10",
"vaultId": "VLT-e3387c4b",
"purge": {
"documentId": "DOC-e9e51d4d",
"status": "retention-hold",
"policy": "deal-paper-7y"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "paper-commerce-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}retain
documentVault.retain · POST /document-vaults/retain · gate offer · sandbox · answers DocumentVaultRetain@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) · /NM0GE9F29N1512139 (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 — DocumentVault.retainRequested@1 · DocumentVault.retained@1.
import { documentVault } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await documentVault.retain({"vin":"NM0GE9F29N1512139"})curl -X POST https://apis.vin/document-vaults/retain \
-H 'content-type: application/json' \
-d '{"vin":"NM0GE9F29N1512139"}'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": "DocumentVaultRetain@1",
"value": {
"vin": "NM0GE9F29N1512139",
"noun": "documentVault",
"asOf": "2026-08-10",
"vaultId": "VLT-e3387c4b",
"retention": {
"documentId": "DOC-e9e51d4d",
"policy": "deal-paper-7y",
"retainUntil": "2033-08-08"
}
},
"evidence": {
"vin": "NM0GE9F29N1512139",
"noun": "documentVault",
"asOf": "2026-08-10",
"vaultId": "VLT-e3387c4b",
"retention": {
"documentId": "DOC-e9e51d4d",
"policy": "deal-paper-7y",
"retainUntil": "2033-08-08"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "paper-commerce-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}retrieve
documentVault.retrieve · GET /document-vaults/retrieve · gate none · sandbox · answers DocumentVaultRetrieve@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /NM0GE9F29N1512139 (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 { documentVault } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await documentVault.retrieve({"vin":"NM0GE9F29N1512139"})curl 'https://apis.vin/document-vaults/retrieve?vin=NM0GE9F29N1512139'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": "DocumentVaultRetrieve@1",
"value": {
"vin": "NM0GE9F29N1512139",
"noun": "documentVault",
"asOf": "2026-08-10",
"vaultId": "VLT-e3387c4b",
"document": {
"id": "DOC-e9e51d4d",
"position": "Draft",
"custody": "in-flight"
}
},
"evidence": {
"vin": "NM0GE9F29N1512139",
"noun": "documentVault",
"asOf": "2026-08-10",
"vaultId": "VLT-e3387c4b",
"document": {
"id": "DOC-e9e51d4d",
"position": "Draft",
"custody": "in-flight"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "paper-commerce-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}revokeAccess
documentVault.revokeAccess · POST /document-vaults/revoke-access · gate offer · sandbox · answers DocumentVaultRevokeAccess@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) · /NM0GE9F29N1512139 (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 — DocumentVault.accessRevoked@1 · DocumentVault.revokeAccessRequested@1.
import { documentVault } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await documentVault.revokeAccess({"vin":"NM0GE9F29N1512139"})curl -X POST https://apis.vin/document-vaults/revoke-access \
-H 'content-type: application/json' \
-d '{"vin":"NM0GE9F29N1512139"}'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": "DocumentVaultRevokeAccess@1",
"value": {
"vin": "NM0GE9F29N1512139",
"noun": "documentVault",
"asOf": "2026-08-10",
"vaultId": "VLT-e3387c4b",
"access": {
"identityId": "ID-11f17424",
"status": "revoked"
}
},
"evidence": {
"vin": "NM0GE9F29N1512139",
"noun": "documentVault",
"asOf": "2026-08-10",
"vaultId": "VLT-e3387c4b",
"access": {
"identityId": "ID-11f17424",
"status": "revoked"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "paper-commerce-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}store
documentVault.store · POST /document-vaults/store · gate offer · sandbox · answers DocumentVaultStore@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) · /NM0GE9F29N1512139 (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 — DocumentVault.storeRequested@1 · DocumentVault.stored@1.
import { documentVault } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await documentVault.store({"vin":"NM0GE9F29N1512139"})curl -X POST https://apis.vin/document-vaults/store \
-H 'content-type: application/json' \
-d '{"vin":"NM0GE9F29N1512139"}'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": "DocumentVaultStore@1",
"value": {
"vin": "NM0GE9F29N1512139",
"noun": "documentVault",
"asOf": "2026-08-10",
"vaultId": "VLT-e3387c4b",
"deposit": {
"status": "stored",
"documentId": "DOC-e9e51d4d",
"custody": "vault"
}
},
"evidence": {
"vin": "NM0GE9F29N1512139",
"noun": "documentVault",
"asOf": "2026-08-10",
"vaultId": "VLT-e3387c4b",
"deposit": {
"status": "stored",
"documentId": "DOC-e9e51d4d",
"custody": "vault"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "paper-commerce-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}transferCustody
documentVault.transferCustody · POST /document-vaults/transfer-custody · gate offer · sandbox · answers DocumentVaultTransferCustody@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) · /NM0GE9F29N1512139 (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 — DocumentVault.custodyTransferred@1 · DocumentVault.transferCustodyRequested@1.
import { documentVault } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await documentVault.transferCustody({"vin":"NM0GE9F29N1512139"})curl -X POST https://apis.vin/document-vaults/transfer-custody \
-H 'content-type: application/json' \
-d '{"vin":"NM0GE9F29N1512139"}'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": "DocumentVaultTransferCustody@1",
"value": {
"vin": "NM0GE9F29N1512139",
"noun": "documentVault",
"asOf": "2026-08-10",
"vaultId": "VLT-e3387c4b",
"transfer": {
"status": "nothing-in-custody",
"custody": "in-flight"
}
},
"evidence": {
"vin": "NM0GE9F29N1512139",
"noun": "documentVault",
"asOf": "2026-08-10",
"vaultId": "VLT-e3387c4b",
"transfer": {
"status": "nothing-in-custody",
"custody": "in-flight"
}
},
"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
Modeled
The noun drawn out — its record shape, its lifecycle, and how it is exercised end to end. One diagram, rendered from the estate model.
DocumentVault · Class model
Generated from the catalog. Every capability, answer, gate, and entity on this page is a rendered descriptor — it cannot drift from the wire.
divorceDecree
The divorceDecree noun — identity, lifecycle, events, and every capability as an anchored section: 3 capabilities, 0 live, 3 sandbox, 0 declared.
driveline
The driveline noun — identity, lifecycle, events, and every capability as an anchored section: 29 capabilities, 2 live, 27 sandbox, 0 declared.