docs.vin

lot

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

lot 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

Nounlot
PillarServices (facets: 6 data · 8 services · 2 commerce)
Capabilities16 — 0 live · 16 sandbox · 0 declared
EntitiesInventoryItem
Doorsaggregator.vin
SDKVin.lot.* from apis.vin
Address/catalog/lot#{action} — the anchor IS the wire name minus lot.

Events

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

Discover & read

read

lot.read · GET /lots/read · gate none · sandbox · answers LotRead@1

FieldTypeRequiredNotes
vinstringno

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

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

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:14.029Z · HTTP 200
{
  "type": "OK",
  "answers": "LotRead@1",
  "value": {
    "vin": "KL4CJFSB2HB007554",
    "noun": "lot",
    "asOf": "2026-08-10",
    "lot": {
      "id": "CSN-9e506b51",
      "position": "Scheduled",
      "lane": 11,
      "run": 42,
      "reserveCents": 1850000,
      "currency": "USD"
    }
  },
  "evidence": {
    "vin": "KL4CJFSB2HB007554",
    "noun": "lot",
    "asOf": "2026-08-10",
    "lot": {
      "id": "CSN-9e506b51",
      "position": "Scheduled",
      "lane": 11,
      "run": 42,
      "reserveCents": 1850000,
      "currency": "USD"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

list

lot.list · POST /lots/list · gate offer · sandbox · answers LotList@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) · /KL4CJFSB2HB007554 (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.

EmitsLot.listed@1.

the SDK — lot.list
import { lot } from 'apis.vin'

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

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:14.014Z · HTTP 200
{
  "type": "OK",
  "answers": "LotList@1",
  "value": {
    "vin": "KL4CJFSB2HB007554",
    "noun": "lot",
    "asOf": "2026-08-10",
    "list": {
      "consignments": 9,
      "byPosition": {
        "Scheduled": 1,
        "Open": 1,
        "Running": 1,
        "IfBid": 1,
        "NoSale": 1,
        "Sold": 1,
        "Settled": 1,
        "Disbursed": 1,
        "Closed": 1
      }
    }
  },
  "evidence": {
    "vin": "KL4CJFSB2HB007554",
    "noun": "lot",
    "asOf": "2026-08-10",
    "list": {
      "consignments": 9,
      "byPosition": {
        "Scheduled": 1,
        "Open": 1,
        "Running": 1,
        "IfBid": 1,
        "NoSale": 1,
        "Sold": 1,
        "Settled": 1,
        "Disbursed": 1,
        "Closed": 1
      }
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

decode

lot.decode · GET /lots/decode · gate none · sandbox · answers LotDecode@1

FieldTypeRequiredNotes
vinstringno

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

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await lot.decode({"vin":"KL4CJFSB2HB007554"})
GET /lots/decode
curl 'https://apis.vin/lots/decode?vin=KL4CJFSB2HB007554'

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:14.010Z · HTTP 200
{
  "type": "OK",
  "answers": "LotDecode@1",
  "value": {
    "vin": "KL4CJFSB2HB007554",
    "noun": "lot",
    "asOf": "2026-08-10",
    "decoded": {
      "vin": "KL4CJFSB2HB007554",
      "valid": true,
      "squishVin": "KL4CJFSB2HB"
    }
  },
  "evidence": {
    "vin": "KL4CJFSB2HB007554",
    "noun": "lot",
    "asOf": "2026-08-10",
    "decoded": {
      "vin": "KL4CJFSB2HB007554",
      "valid": true,
      "squishVin": "KL4CJFSB2HB"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

history

lot.history · GET /lots/history · gate none · sandbox · answers LotHistory@1

FieldTypeRequiredNotes
vinstringno

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

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await lot.history({"vin":"KL4CJFSB2HB007554"})
GET /lots/history
curl 'https://apis.vin/lots/history?vin=KL4CJFSB2HB007554'

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:14.010Z · HTTP 200
{
  "type": "OK",
  "answers": "LotHistory@1",
  "value": {
    "vin": "KL4CJFSB2HB007554",
    "noun": "lot",
    "asOf": "2026-08-10",
    "events": [
      {
        "date": "2026-07-27",
        "kind": "consigned",
        "id": "CSN-9e506b51"
      }
    ]
  },
  "evidence": {
    "vin": "KL4CJFSB2HB007554",
    "noun": "lot",
    "asOf": "2026-08-10",
    "events": [
      {
        "date": "2026-07-27",
        "kind": "consigned",
        "id": "CSN-9e506b51"
      }
    ]
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

grade

lot.grade · POST /lots/grade · gate offer · sandbox · answers LotGrade@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) · /KL4CJFSB2HB007554 (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.

EmitsLot.graded@1.

the SDK — lot.grade
import { lot } from 'apis.vin'

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

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:14.010Z · HTTP 200
{
  "type": "OK",
  "answers": "LotGrade@1",
  "value": {
    "vin": "KL4CJFSB2HB007554",
    "noun": "lot",
    "asOf": "2026-08-10",
    "grade": {
      "grade": "clean",
      "basis": "condition-grade-law"
    }
  },
  "evidence": {
    "vin": "KL4CJFSB2HB007554",
    "noun": "lot",
    "asOf": "2026-08-10",
    "grade": {
      "grade": "clean",
      "basis": "condition-grade-law"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

conditionGrade

lot.conditionGrade · GET /lots/condition-grade · gate key · sandbox · answers LotConditionGrade@1

FieldTypeRequiredNotes
vinstringno

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

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await lot.conditionGrade({"vin":"KL4CJFSB2HB007554"})
GET /lots/condition-grade
curl 'https://apis.vin/lots/condition-grade?vin=KL4CJFSB2HB007554'

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:14.010Z · HTTP 200
{
  "type": "OK",
  "answers": "LotConditionGrade@1",
  "value": {
    "vin": "KL4CJFSB2HB007554",
    "noun": "lot",
    "asOf": "2026-08-10",
    "grade": {
      "grade": "clean",
      "basis": "condition-grade-law"
    }
  },
  "evidence": {
    "vin": "KL4CJFSB2HB007554",
    "noun": "lot",
    "asOf": "2026-08-10",
    "grade": {
      "grade": "clean",
      "basis": "condition-grade-law"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Quote & price

value

lot.value · GET /lots/value · gate key · sandbox · answers LotValue@1

FieldTypeRequiredNotes
vinstringno

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

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await lot.value({"vin":"KL4CJFSB2HB007554"})
GET /lots/value
curl 'https://apis.vin/lots/value?vin=KL4CJFSB2HB007554'

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:14.050Z · HTTP 200
{
  "type": "OK",
  "answers": "LotValue@1",
  "value": {
    "vin": "KL4CJFSB2HB007554",
    "noun": "lot",
    "asOf": "2026-08-10",
    "value": {
      "estimateCents": 1850000,
      "askingCents": 2300000,
      "currency": "USD",
      "basis": "acquisition-figure"
    }
  },
  "evidence": {
    "vin": "KL4CJFSB2HB007554",
    "noun": "lot",
    "asOf": "2026-08-10",
    "value": {
      "estimateCents": 1850000,
      "askingCents": 2300000,
      "currency": "USD",
      "basis": "acquisition-figure"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Apply & book

stage

lot.stage · POST /lots/stage · gate offer · sandbox · answers LotStage@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) · /KL4CJFSB2HB007554 (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.

EmitsLot.staged@1.

the SDK — lot.stage
import { lot } from 'apis.vin'

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

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:14.050Z · HTTP 200
{
  "type": "OK",
  "answers": "LotStage@1",
  "value": {
    "vin": "KL4CJFSB2HB007554",
    "noun": "lot",
    "asOf": "2026-08-10",
    "staging": {
      "status": "not-yet-checked-in",
      "id": "CSN-9e506b51",
      "position": "Scheduled"
    }
  },
  "evidence": {
    "vin": "KL4CJFSB2HB007554",
    "noun": "lot",
    "asOf": "2026-08-10",
    "staging": {
      "status": "not-yet-checked-in",
      "id": "CSN-9e506b51",
      "position": "Scheduled"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

checkin

lot.checkin · POST /lots/checkin · gate offer · sandbox · answers LotCheckin@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) · /KL4CJFSB2HB007554 (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.

EmitsLot.checkedIn@1.

the SDK — lot.checkin
import { lot } from 'apis.vin'

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

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:14.005Z · HTTP 200
{
  "type": "OK",
  "answers": "LotCheckin@1",
  "value": {
    "vin": "KL4CJFSB2HB007554",
    "noun": "lot",
    "asOf": "2026-08-10",
    "checkin": {
      "status": "checked-in",
      "id": "CSN-9e506b51"
    }
  },
  "evidence": {
    "vin": "KL4CJFSB2HB007554",
    "noun": "lot",
    "asOf": "2026-08-10",
    "checkin": {
      "status": "checked-in",
      "id": "CSN-9e506b51"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

setReserve

lot.setReserve · POST /lots/set-reserve · gate offer · sandbox · answers LotSetReserve@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) · /KL4CJFSB2HB007554 (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.

EmitsLot.failed@1 · Lot.reserveSet@1.

the SDK — lot.setReserve
import { lot } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await lot.setReserve({"vin":"KL4CJFSB2HB007554"})
POST /lots/set-reserve
curl -X POST https://apis.vin/lots/set-reserve \
  -H 'content-type: application/json' \
  -d '{"vin":"KL4CJFSB2HB007554"}'

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:14.039Z · HTTP 200
{
  "type": "OK",
  "answers": "LotSetReserve@1",
  "value": {
    "vin": "KL4CJFSB2HB007554",
    "noun": "lot",
    "asOf": "2026-08-10",
    "reserve": {
      "status": "set",
      "id": "CSN-9e506b51",
      "reserveCents": 1850000,
      "currency": "USD"
    }
  },
  "evidence": {
    "vin": "KL4CJFSB2HB007554",
    "noun": "lot",
    "asOf": "2026-08-10",
    "reserve": {
      "status": "set",
      "id": "CSN-9e506b51",
      "reserveCents": 1850000,
      "currency": "USD"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Pay & settle

settle

lot.settle · POST /lots/settle · gate offer · sandbox · answers LotSettle@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) · /KL4CJFSB2HB007554 (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.

EmitsLot.failed@1 · Lot.settled@1.

the SDK — lot.settle
import { lot } from 'apis.vin'

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

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:14.050Z · HTTP 200
{
  "type": "OK",
  "answers": "LotSettle@1",
  "value": {
    "vin": "KL4CJFSB2HB007554",
    "noun": "lot",
    "asOf": "2026-08-10",
    "settlement": {
      "status": "not-sold",
      "id": "CSN-9e506b51",
      "position": "Scheduled"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "KL4CJFSB2HB007554",
    "noun": "lot",
    "asOf": "2026-08-10",
    "settlement": {
      "status": "not-sold",
      "id": "CSN-9e506b51",
      "position": "Scheduled"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Authorize & resolve

consign

lot.consign · POST /lots/consign · gate offer · sandbox · answers LotConsign@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) · /KL4CJFSB2HB007554 (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.

EmitsLot.consigned@1.

the SDK — lot.consign
import { lot } from 'apis.vin'

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

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:14.010Z · HTTP 200
{
  "type": "OK",
  "answers": "LotConsign@1",
  "value": {
    "vin": "KL4CJFSB2HB007554",
    "noun": "lot",
    "asOf": "2026-08-10",
    "consignment": {
      "status": "already-consigned",
      "id": "CSN-9e506b51",
      "position": "Scheduled"
    }
  },
  "evidence": {
    "vin": "KL4CJFSB2HB007554",
    "noun": "lot",
    "asOf": "2026-08-10",
    "consignment": {
      "status": "already-consigned",
      "id": "CSN-9e506b51",
      "position": "Scheduled"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Lifecycle & state

gateRelease

lot.gateRelease · POST /lots/gate-release · gate offer · sandbox · answers LotGateRelease@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) · /KL4CJFSB2HB007554 (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.

EmitsLot.gateReleased@1.

the SDK — lot.gateRelease
import { lot } from 'apis.vin'

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

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:14.010Z · HTTP 200
{
  "type": "OK",
  "answers": "LotGateRelease@1",
  "value": {
    "vin": "KL4CJFSB2HB007554",
    "noun": "lot",
    "asOf": "2026-08-10",
    "release": {
      "status": "refused",
      "reason": "not-yet-paid"
    }
  },
  "evidence": {
    "vin": "KL4CJFSB2HB007554",
    "noun": "lot",
    "asOf": "2026-08-10",
    "release": {
      "status": "refused",
      "reason": "not-yet-paid"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

More actions

announcements

lot.announcements · GET /lots/announcements · gate key · sandbox · answers LotAnnouncements@1

FieldTypeRequiredNotes
vinstringno

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

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await lot.announcements({"vin":"KL4CJFSB2HB007554"})
GET /lots/announcements
curl 'https://apis.vin/lots/announcements?vin=KL4CJFSB2HB007554'

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:14.005Z · HTTP 200
{
  "type": "OK",
  "answers": "LotAnnouncements@1",
  "value": {
    "vin": "KL4CJFSB2HB007554",
    "noun": "lot",
    "asOf": "2026-08-10",
    "announcements": {
      "lines": [],
      "announced": false
    }
  },
  "evidence": {
    "vin": "KL4CJFSB2HB007554",
    "noun": "lot",
    "asOf": "2026-08-10",
    "announcements": {
      "lines": [],
      "announced": false
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

pull

lot.pull · POST /lots/pull · gate offer · sandbox · answers LotPull@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) · /KL4CJFSB2HB007554 (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.

EmitsLot.pulled@1 · Lot.requested@1.

the SDK — lot.pull
import { lot } from 'apis.vin'

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

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:14.021Z · HTTP 200
{
  "type": "OK",
  "answers": "LotPull@1",
  "value": {
    "vin": "KL4CJFSB2HB007554",
    "noun": "lot",
    "asOf": "2026-08-10",
    "pull": {
      "status": "pulled",
      "id": "CSN-9e506b51"
    }
  },
  "evidence": {
    "vin": "KL4CJFSB2HB007554",
    "noun": "lot",
    "asOf": "2026-08-10",
    "pull": {
      "status": "pulled",
      "id": "CSN-9e506b51"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

run

lot.run · POST /lots/run · gate offer · sandbox · answers LotRun@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) · /KL4CJFSB2HB007554 (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.

EmitsLot.laneRun@1.

the SDK — lot.run
import { lot } from 'apis.vin'

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

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:14.037Z · HTTP 200
{
  "type": "OK",
  "answers": "LotRun@1",
  "value": {
    "vin": "KL4CJFSB2HB007554",
    "noun": "lot",
    "asOf": "2026-08-10",
    "run": {
      "status": "queued",
      "id": "CSN-9e506b51",
      "position": "Scheduled"
    }
  },
  "evidence": {
    "vin": "KL4CJFSB2HB007554",
    "noun": "lot",
    "asOf": "2026-08-10",
    "run": {
      "status": "queued",
      "id": "CSN-9e506b51",
      "position": "Scheduled"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-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.

InventoryItem


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