docs.vin

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

NoundocumentVault
PillarServices (facets: 6 data · 7 services · 3 commerce)
Capabilities16 — 0 live · 16 sandbox · 0 declared
EntitiesDocument
Doorsaggregator.vin
SDKVin.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:

Discover & read

lookup

documentVault.lookup · GET /document-vaults/lookup · gate none · sandbox · answers DocumentVaultLookup@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.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.

the SDK — documentVault.lookup
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"})
GET /document-vaults/lookup
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.

receipt · executed 2026-08-17T12:42:10.530Z · HTTP 200
{
  "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

FieldTypeRequiredNotes
vinstringno

Dooraggregator.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.

the SDK — documentVault.list
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"})
GET /document-vaults/list
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.

receipt · executed 2026-08-17T12:42:10.530Z · HTTP 200
{
  "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

FieldTypeRequiredNotes
vinstringno

Dooraggregator.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.

the SDK — documentVault.accessCheck
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"})
GET /document-vaults/access-check
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.

receipt · executed 2026-08-17T12:42:10.503Z · HTTP 200
{
  "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

FieldTypeRequiredNotes
vinstringno

Dooraggregator.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.

the SDK — documentVault.integrityVerify
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"})
GET /document-vaults/integrity-verify
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.

receipt · executed 2026-08-17T12:42:10.519Z · HTTP 200
{
  "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

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) · /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.

EmitsDocumentVault.storageFeeCharged@1 · DocumentVault.storageFeeRequested@1.

the SDK — documentVault.storageFee
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"})
POST /document-vaults/storage-fee
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.

receipt · executed 2026-08-17T12:42:10.541Z · HTTP 200
{
  "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

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) · /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.

EmitsDocumentVault.subscribeRequested@1 · DocumentVault.subscribed@1.

the SDK — documentVault.subscribe
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"})
POST /document-vaults/subscribe
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.

receipt · executed 2026-08-17T12:42:10.549Z · HTTP 200
{
  "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

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) · /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.

EmitsDocumentVault.paid@1 · DocumentVault.payFailed@1 · DocumentVault.payRequested@1.

the SDK — documentVault.pay
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"})
POST /document-vaults/pay
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.

receipt · executed 2026-08-17T12:42:10.530Z · HTTP 200
{
  "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

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) · /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.

EmitsDocumentVault.depositRequested@1 · DocumentVault.deposited@1.

the SDK — documentVault.deposit
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"})
POST /document-vaults/deposit
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.

receipt · executed 2026-08-17T12:42:10.511Z · HTTP 200
{
  "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

FieldTypeRequiredNotes
vinstringno

Dooraggregator.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.

the SDK — documentVault.auditLog
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"})
GET /document-vaults/audit-log
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.

receipt · executed 2026-08-17T12:42:10.504Z · HTTP 200
{
  "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

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) · /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.

EmitsDocumentVault.accessGranted@1 · DocumentVault.grantAccessRequested@1.

the SDK — documentVault.grantAccess
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"})
POST /document-vaults/grant-access
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.

receipt · executed 2026-08-17T12:42:10.513Z · HTTP 200
{
  "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

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) · /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.

EmitsDocumentVault.purgeRequested@1 · DocumentVault.purged@1.

the SDK — documentVault.purge
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"})
POST /document-vaults/purge
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.

receipt · executed 2026-08-17T12:42:10.530Z · HTTP 200
{
  "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

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) · /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.

EmitsDocumentVault.retainRequested@1 · DocumentVault.retained@1.

the SDK — documentVault.retain
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"})
POST /document-vaults/retain
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.

receipt · executed 2026-08-17T12:42:10.530Z · HTTP 200
{
  "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

FieldTypeRequiredNotes
vinstringno

Dooraggregator.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.

the SDK — documentVault.retrieve
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"})
GET /document-vaults/retrieve
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.

receipt · executed 2026-08-17T12:42:10.538Z · HTTP 200
{
  "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

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) · /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.

EmitsDocumentVault.accessRevoked@1 · DocumentVault.revokeAccessRequested@1.

the SDK — documentVault.revokeAccess
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"})
POST /document-vaults/revoke-access
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.

receipt · executed 2026-08-17T12:42:10.538Z · HTTP 200
{
  "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

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) · /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.

EmitsDocumentVault.storeRequested@1 · DocumentVault.stored@1.

the SDK — documentVault.store
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"})
POST /document-vaults/store
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.

receipt · executed 2026-08-17T12:42:10.548Z · HTTP 200
{
  "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

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) · /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.

EmitsDocumentVault.custodyTransferred@1 · DocumentVault.transferCustodyRequested@1.

the SDK — documentVault.transferCustody
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"})
POST /document-vaults/transfer-custody
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.

receipt · executed 2026-08-17T12:42:10.549Z · HTTP 200
{
  "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.