docs.vin

ledger

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

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

Identity

Nounledger
PillarServices (facets: 2 data · 4 services)
Capabilities6 — 0 live · 6 sandbox · 0 declared
EntitiesLedgerEvent
Doorsaggregator.vin
SDKVin.ledger.* from apis.vin
Address/catalog/ledger#{action} — the anchor IS the wire name minus ledger.

Events

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

Discover & read

audit

ledger.audit · GET /ledgers/audit · gate key · sandbox · answers LedgerAudit@1

FieldTypeRequiredNotes
vinstringno

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

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

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:13.280Z · HTTP 200
{
  "type": "OK",
  "answers": "LedgerAudit@1",
  "value": {
    "id": "ledger_583abe4b",
    "type": "EventName-01",
    "streamId": "aggregate_7178579b",
    "correlationId": "W0-EVT-01",
    "who": "party_4450930a",
    "authority": "mandate_f29ee987",
    "occurredAt": "2026-09-13T00:00:00.000Z",
    "recordedAt": "2026-09-13T00:00:00.000Z",
    "payload": "pointers-22628c2c"
  },
  "evidence": {
    "id": "ledger_583abe4b",
    "type": "EventName-01",
    "streamId": "aggregate_7178579b",
    "correlationId": "W0-EVT-01",
    "who": "party_4450930a",
    "authority": "mandate_f29ee987",
    "occurredAt": "2026-09-13T00:00:00.000Z",
    "recordedAt": "2026-09-13T00:00:00.000Z",
    "payload": "pointers-22628c2c"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "ledger-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Apply & book

schedule

ledger.schedule · GET /ledgers/schedule · gate key · sandbox · answers LedgerSchedule@1

FieldTypeRequiredNotes
vinstringno

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

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

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:13.293Z · HTTP 200
{
  "type": "OK",
  "answers": "LedgerSchedule@1",
  "value": {
    "id": "ledger_6880a82d",
    "type": "EventName-01",
    "streamId": "aggregate_a380730d",
    "correlationId": "W0-EVT-01",
    "who": "party_3d97da68",
    "authority": "mandate_51d80ce5",
    "occurredAt": "2027-04-09T00:00:00.000Z",
    "recordedAt": "2027-04-09T00:00:00.000Z",
    "payload": "pointers-822b1bfe"
  },
  "evidence": {
    "id": "ledger_6880a82d",
    "type": "EventName-01",
    "streamId": "aggregate_a380730d",
    "correlationId": "W0-EVT-01",
    "who": "party_3d97da68",
    "authority": "mandate_51d80ce5",
    "occurredAt": "2027-04-09T00:00:00.000Z",
    "recordedAt": "2027-04-09T00:00:00.000Z",
    "payload": "pointers-822b1bfe"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "ledger-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Lifecycle & state

close

ledger.close · POST /ledgers/close · gate offer · sandbox · answers LedgerClose@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) · /19XFC1F91HE019415 (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.

EmitsLedger.closed@1.

the SDK — ledger.close
import { ledger } from 'apis.vin'

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

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:13.280Z · HTTP 200
{
  "type": "OK",
  "answers": "LedgerClose@1",
  "value": {
    "id": "ledger_2ae12949",
    "type": "EventName-01",
    "streamId": "aggregate_f6b703f1",
    "correlationId": "W0-EVT-01",
    "who": "party_53d1bf14",
    "authority": "mandate_80c00fe1",
    "occurredAt": "2026-11-28T00:00:00.000Z",
    "recordedAt": "2026-11-28T00:00:00.000Z",
    "payload": "pointers-3779c2d2"
  },
  "evidence": {
    "id": "ledger_2ae12949",
    "type": "EventName-01",
    "streamId": "aggregate_f6b703f1",
    "correlationId": "W0-EVT-01",
    "who": "party_53d1bf14",
    "authority": "mandate_80c00fe1",
    "occurredAt": "2026-11-28T00:00:00.000Z",
    "recordedAt": "2026-11-28T00:00:00.000Z",
    "payload": "pointers-3779c2d2"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "ledger-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

More actions

dealJacketRecon

ledger.dealJacketRecon · POST /ledgers/deal-jacket-recon · gate offer · sandbox · answers LedgerDealJacketRecon@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) · /19XFC1F91HE019415 (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.

EmitsLedger.dealReconciled@1.

the SDK — ledger.dealJacketRecon
import { ledger } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await ledger.dealJacketRecon({"vin":"19XFC1F91HE019415"})
POST /ledgers/deal-jacket-recon
curl -X POST https://apis.vin/ledgers/deal-jacket-recon \
  -H 'content-type: application/json' \
  -d '{"vin":"19XFC1F91HE019415"}'

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:13.282Z · HTTP 200
{
  "type": "OK",
  "answers": "LedgerDealJacketRecon@1",
  "value": {
    "id": "ledger_0bd13326",
    "type": "EventName-01",
    "streamId": "aggregate_d751ee2e",
    "correlationId": "W0-EVT-01",
    "who": "party_137d8581",
    "authority": "mandate_a2dca390",
    "occurredAt": "2027-05-26T00:00:00.000Z",
    "recordedAt": "2027-05-26T00:00:00.000Z",
    "payload": "pointers-6380ff9b"
  },
  "evidence": {
    "id": "ledger_0bd13326",
    "type": "EventName-01",
    "streamId": "aggregate_d751ee2e",
    "correlationId": "W0-EVT-01",
    "who": "party_137d8581",
    "authority": "mandate_a2dca390",
    "occurredAt": "2027-05-26T00:00:00.000Z",
    "recordedAt": "2027-05-26T00:00:00.000Z",
    "payload": "pointers-6380ff9b"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "ledger-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

dmsPost

ledger.dmsPost · POST /ledgers/dms-post · gate offer · sandbox · answers LedgerDmsPost@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) · /19XFC1F91HE019415 (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.

EmitsLedger.dmsPosted@1.

the SDK — ledger.dmsPost
import { ledger } from 'apis.vin'

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

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:13.282Z · HTTP 200
{
  "type": "OK",
  "answers": "LedgerDmsPost@1",
  "value": {
    "id": "ledger_8b2b3028",
    "type": "EventName-01",
    "streamId": "aggregate_2f21ad58",
    "correlationId": "W0-EVT-01",
    "who": "party_1c2cf7d7",
    "authority": "mandate_957ff50e",
    "occurredAt": "2027-01-20T00:00:00.000Z",
    "recordedAt": "2027-01-20T00:00:00.000Z",
    "payload": "pointers-705e37fd"
  },
  "evidence": {
    "id": "ledger_8b2b3028",
    "type": "EventName-01",
    "streamId": "aggregate_2f21ad58",
    "correlationId": "W0-EVT-01",
    "who": "party_1c2cf7d7",
    "authority": "mandate_957ff50e",
    "occurredAt": "2027-01-20T00:00:00.000Z",
    "recordedAt": "2027-01-20T00:00:00.000Z",
    "payload": "pointers-705e37fd"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "ledger-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

post

ledger.post · POST /ledgers/post · gate offer · sandbox · answers LedgerPost@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) · /19XFC1F91HE019415 (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.

EmitsLedger.posted@1.

the SDK — ledger.post
import { ledger } from 'apis.vin'

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

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:13.282Z · HTTP 200
{
  "type": "OK",
  "answers": "LedgerPost@1",
  "value": {
    "vin": "19XFC1F91HE019415",
    "batchId": "glb_e7ac2a77",
    "entries": [
      {
        "account": "loan-receivable:new-note",
        "side": "debit",
        "amount": {
          "currency": "USD",
          "minorUnits": 1513893
        }
      },
      {
        "account": "payoff-clearing:lienholder",
        "side": "credit",
        "amount": {
          "currency": "USD",
          "minorUnits": 1513893
        }
      }
    ],
    "totals": {
      "debits": {
        "currency": "USD",
        "minorUnits": 1513893
      },
      "credits": {
        "currency": "USD",
        "minorUnits": 1513893
      }
    },
    "balanced": true,
    "basis": {
      "payoffReference": "poq_4d14a5c0",
      "lienholder": "Huntington National Bank"
    },
    "status": "Posted"
  },
  "evidence": {
    "vin": "19XFC1F91HE019415",
    "batchId": "glb_e7ac2a77",
    "entries": [
      {
        "account": "loan-receivable:new-note",
        "side": "debit",
        "amount": {
          "currency": "USD",
          "minorUnits": 1513893
        }
      },
      {
        "account": "payoff-clearing:lienholder",
        "side": "credit",
        "amount": {
          "currency": "USD",
          "minorUnits": 1513893
        }
      }
    ],
    "totals": {
      "debits": {
        "currency": "USD",
        "minorUnits": 1513893
      },
      "credits": {
        "currency": "USD",
        "minorUnits": 1513893
      }
    },
    "balanced": true,
    "basis": {
      "payoffReference": "poq_4d14a5c0",
      "lienholder": "Huntington National Bank"
    },
    "status": "Posted"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "refi-journey-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.

LedgerEvent

Schema

PropertyTypeNotes
ididevt_
typeEventNamePascalNoun.verbedPast@1
streamIdref→aggregate
correlationIdW0-EVTthe spine
whoref→Partyattested
authorityref→Mandate
occurredAtdatetimebitemporal
recordedAtdatetimebitemporal
payloadpointersno PII, no attrs

Relationships

FromToCardinalityAs
ledgerdeal*:1streamed on
ledgermandate*:0..1authority
ledgerparty*:1who (attested)
ledgermandate*:1capability→mandate/connection provenance (which credential ran this leaf)
dealledger*:*workflow step→lifecycle event/state (steps[] carry no guard/event/state edge)

Modeled

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

Ledger · Class model

Ledger · Sequence

Ledger · Class model

Ledger · Sequence


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