docs.vin

storage

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

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

Identity

Nounstorage
PillarData (facets: 6 data · 6 services · 6 commerce)
Capabilities18 — 0 live · 18 sandbox · 0 declared
EntitiesServiceOrder
Doorspayments.vin · storage.vin
SDKVin.storage.* from apis.vin
Address/catalog/storage#{action} — the anchor IS the wire name minus storage.

Events

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

Discover & read

history

storage.history · GET /storages/history · gate none · sandbox · answers StorageHistory@1

FieldTypeRequiredNotes
vinstringno

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

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

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

status

storage.status · GET /storages/status · gate none · sandbox · answers StorageStatus@1

FieldTypeRequiredNotes
vinstringno

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

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

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:17.766Z · HTTP 200
{
  "type": "OK",
  "answers": "StorageStatus@1",
  "value": {
    "vin": "1N6ED1EK3PN658772",
    "noun": "storage",
    "asOf": "2026-08-10",
    "storage": {
      "status": "nothing-stored",
      "site": "inbound"
    }
  },
  "evidence": {
    "vin": "1N6ED1EK3PN658772",
    "noun": "storage",
    "asOf": "2026-08-10",
    "storage": {
      "status": "nothing-stored",
      "site": "inbound"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

availability

storage.availability · GET /storages/availability · gate key · sandbox · answers StorageAvailability@1

FieldTypeRequiredNotes
productstringyesone of storage, parking, tolls
locationobjectno
periodstringno

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

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

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-16T14:50:10.053Z · HTTP 200
{
  "type": "OK",
  "answers": "StorageAvailability@1",
  "value": {
    "vin": "1HGCM82633A004352",
    "noun": "storage",
    "asOf": "2026-08-10",
    "availability": {
      "capacity": 220,
      "occupied": 23,
      "available": 197
    }
  },
  "evidence": {
    "vin": "1HGCM82633A004352",
    "noun": "storage",
    "asOf": "2026-08-10",
    "availability": {
      "capacity": 220,
      "occupied": 23,
      "available": 197
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

location

storage.location · GET /storages/location · gate none · sandbox · answers StorageLocation@1

FieldTypeRequiredNotes
vinstringno

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

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

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:17.726Z · HTTP 200
{
  "type": "OK",
  "answers": "StorageLocation@1",
  "value": {
    "vin": "1N6ED1EK3PN658772",
    "noun": "storage",
    "asOf": "2026-08-10",
    "location": {
      "status": "inbound"
    }
  },
  "evidence": {
    "vin": "1N6ED1EK3PN658772",
    "noun": "storage",
    "asOf": "2026-08-10",
    "location": {
      "status": "inbound"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Quote & price

quote

storage.quote · POST /storages/quote · gate offer · sandbox · answers StorageQuote@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.

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

EmitsStorage.quoteRequested@1 · Storage.quoted@1.

the SDK — storage.quote
import { storage } from 'apis.vin'

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

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:17.756Z · HTTP 200
{
  "type": "OK",
  "answers": "StorageQuote@1",
  "value": {
    "vin": "1N6ED1EK3PN658772",
    "quoteId": "DQ-1",
    "serviceType": "repair",
    "costCents": 40813,
    "priceCents": 53057,
    "marginCents": 12244,
    "currency": "USD",
    "etaMinDays": 1,
    "etaMaxDays": 5,
    "rush": false,
    "expires": "2026-08-17T00:00:00.000Z"
  },
  "evidence": {
    "vin": "1N6ED1EK3PN658772",
    "quoteId": "DQ-1",
    "serviceType": "repair",
    "costCents": 40813,
    "priceCents": 53057,
    "marginCents": 12244,
    "currency": "USD",
    "etaMinDays": 1,
    "etaMaxDays": 5,
    "rush": false,
    "expires": "2026-08-17T00:00:00.000Z"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "field-services-rail-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

rate

storage.rate · GET /storages/rate · gate key · sandbox · answers StorageRate@1

FieldTypeRequiredNotes
vinstringno

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

EmitsStorage.rated@1.

the SDK — storage.rate
import { storage } from 'apis.vin'

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

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:17.756Z · HTTP 200
{
  "type": "OK",
  "answers": "StorageRate@1",
  "value": {
    "locationZip": "90001",
    "indoor": false,
    "dailyRateCents": 3366,
    "monthlyRateCents": 87516,
    "currency": "USD"
  },
  "evidence": {
    "locationZip": "90001",
    "indoor": false,
    "dailyRateCents": 3366,
    "monthlyRateCents": 87516,
    "currency": "USD"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "services-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Apply & book

schedule

storage.schedule · POST /storages/schedule · gate offer · sandbox · answers StorageSchedule@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.

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

EmitsStorage.scheduleRequested@1 · Storage.scheduled@1.

the SDK — storage.schedule
import { storage } from 'apis.vin'

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

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:17.761Z · HTTP 200
{
  "type": "OK",
  "answers": "StorageSchedule@1",
  "value": {
    "vin": "1N6ED1EK3PN658772",
    "noun": "storage",
    "asOf": "2026-08-10",
    "appointment": {
      "id": "SA-9c139fdc",
      "date": "2026-08-12",
      "space": "SP-137",
      "status": "scheduled"
    }
  },
  "evidence": {
    "vin": "1N6ED1EK3PN658772",
    "noun": "storage",
    "asOf": "2026-08-10",
    "appointment": {
      "id": "SA-9c139fdc",
      "date": "2026-08-12",
      "space": "SP-137",
      "status": "scheduled"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

reserve

storage.reserve · POST /storages/reserve · gate offer · sandbox · answers StorageReserve@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.

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

EmitsStorage.reserveRequested@1 · Storage.reserved@1.

the SDK — storage.reserve
import { storage } from 'apis.vin'

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

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:17.756Z · HTTP 200
{
  "type": "OK",
  "answers": "StorageReserve@1",
  "value": {
    "vin": "1N6ED1EK3PN658772",
    "noun": "storage",
    "asOf": "2026-08-10",
    "reservation": {
      "id": "SR-bc5575fb",
      "date": "2026-08-12",
      "space": "SP-137",
      "status": "reserved"
    }
  },
  "evidence": {
    "vin": "1N6ED1EK3PN658772",
    "noun": "storage",
    "asOf": "2026-08-10",
    "reservation": {
      "id": "SR-bc5575fb",
      "date": "2026-08-12",
      "space": "SP-137",
      "status": "reserved"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

stage

storage.stage · POST /storages/stage · gate offer · sandbox · answers StorageStage@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.

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

EmitsStorage.stageRequested@1 · Storage.staged@1.

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

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

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:17.766Z · HTTP 200
{
  "type": "OK",
  "answers": "StorageStage@1",
  "value": {
    "vin": "1N6ED1EK3PN658772",
    "noun": "storage",
    "asOf": "2026-08-10",
    "stage": {
      "site": "inbound",
      "reconStage": "intake"
    }
  },
  "evidence": {
    "vin": "1N6ED1EK3PN658772",
    "noun": "storage",
    "asOf": "2026-08-10",
    "stage": {
      "site": "inbound",
      "reconStage": "intake"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Pay & settle

pay

storage.pay · POST /storages/pay · gate offer · sandbox · answers StoragePayment@1

FieldTypeRequiredNotes
vinstringyes
productstringyesone of storage, parking, tolls
subjectstringno

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.

Delegated calls require a typed Mandate{ ceiling, perAction, expires, tripwires }; the ceiling is a field, not a conversation.

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

EmitsOrder.placed@1 · ServiceOrder.settled@1 · Storage.charged@1 · Storage.paid@1 · Storage.payFailed@1 · Storage.payRequested@1.

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

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

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:17.748Z · HTTP 200
{
  "type": "OK",
  "answers": "StoragePayment@1",
  "value": {
    "vin": "1N6ED1EK3PN658772",
    "noun": "storage",
    "asOf": "2026-08-10",
    "payment": {
      "status": "nothing-stored"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "1N6ED1EK3PN658772",
    "noun": "storage",
    "asOf": "2026-08-10",
    "payment": {
      "status": "nothing-stored"
    },
    "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
  }
}

bill

storage.bill · POST /storages/bill · gate offer · sandbox · answers StorageBill@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.

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

EmitsStorage.billRequested@1 · Storage.billed@1.

the SDK — storage.bill
import { storage } from 'apis.vin'

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

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:17.725Z · HTTP 200
{
  "type": "OK",
  "answers": "StorageBill@1",
  "value": {
    "vin": "1N6ED1EK3PN658772",
    "noun": "storage",
    "asOf": "2026-08-10",
    "bill": {
      "status": "nothing-stored"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "1N6ED1EK3PN658772",
    "noun": "storage",
    "asOf": "2026-08-10",
    "bill": {
      "status": "nothing-stored"
    },
    "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
  }
}

settle

storage.settle · POST /storages/settle · gate offer · sandbox · answers StorageSettle@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.

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

EmitsStorage.settleFailed@1 · Storage.settleRequested@1 · Storage.settled@1.

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

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

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:17.765Z · HTTP 200
{
  "type": "OK",
  "answers": "StorageSettle@1",
  "value": {
    "vin": "1N6ED1EK3PN658772",
    "noun": "storage",
    "asOf": "2026-08-10",
    "payment": {
      "status": "nothing-stored"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "1N6ED1EK3PN658772",
    "noun": "storage",
    "asOf": "2026-08-10",
    "payment": {
      "status": "nothing-stored"
    },
    "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
  }
}

Lifecycle & state

release

storage.release · POST /storages/release · gate offer · sandbox · answers StorageRelease@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.

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

EmitsStorage.releaseFailed@1 · Storage.releaseRequested@1 · Storage.released@1.

the SDK — storage.release
import { storage } from 'apis.vin'

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

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:17.756Z · HTTP 200
{
  "type": "OK",
  "answers": "StorageRelease@1",
  "value": {
    "vin": "1N6ED1EK3PN658772",
    "noun": "storage",
    "asOf": "2026-08-10",
    "release": {
      "status": "nothing-stored"
    }
  },
  "evidence": {
    "vin": "1N6ED1EK3PN658772",
    "noun": "storage",
    "asOf": "2026-08-10",
    "release": {
      "status": "nothing-stored"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

More actions

days

storage.days · GET /storages/days · gate none · sandbox · answers StorageDays@1

FieldTypeRequiredNotes
vinstringno

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

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

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:17.725Z · HTTP 200
{
  "type": "OK",
  "answers": "StorageDays@1",
  "value": {
    "vin": "1N6ED1EK3PN658772",
    "noun": "storage",
    "asOf": "2026-08-10",
    "days": {
      "days": 5,
      "freeDays": 7,
      "billableDays": 0
    }
  },
  "evidence": {
    "vin": "1N6ED1EK3PN658772",
    "noun": "storage",
    "asOf": "2026-08-10",
    "days": {
      "days": 5,
      "freeDays": 7,
      "billableDays": 0
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

demurrage

storage.demurrage · POST /storages/demurrage · gate offer · sandbox · answers StorageDemurrage@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.

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

EmitsStorage.demurrageRequested@1 · Storage.demurrageAssessed@1.

the SDK — storage.demurrage
import { storage } from 'apis.vin'

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

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:17.726Z · HTTP 200
{
  "type": "OK",
  "answers": "StorageDemurrage@1",
  "value": {
    "vin": "1N6ED1EK3PN658772",
    "noun": "storage",
    "asOf": "2026-08-10",
    "demurrage": {
      "status": "nothing-stored"
    }
  },
  "evidence": {
    "vin": "1N6ED1EK3PN658772",
    "noun": "storage",
    "asOf": "2026-08-10",
    "demurrage": {
      "status": "nothing-stored"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

move

storage.move · POST /storages/move · gate offer · sandbox · answers StorageMove@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.

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

EmitsStorage.moveRequested@1 · Storage.moved@1.

the SDK — storage.move
import { storage } from 'apis.vin'

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

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:17.738Z · HTTP 200
{
  "type": "OK",
  "answers": "StorageMove@1",
  "value": {
    "vin": "1N6ED1EK3PN658772",
    "noun": "storage",
    "asOf": "2026-08-10",
    "move": {
      "status": "nothing-stored"
    }
  },
  "evidence": {
    "vin": "1N6ED1EK3PN658772",
    "noun": "storage",
    "asOf": "2026-08-10",
    "move": {
      "status": "nothing-stored"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

receive

storage.receive · POST /storages/receive · gate offer · sandbox · answers StorageReceive@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.

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

EmitsStorage.receiveRequested@1 · Storage.received@1.

the SDK — storage.receive
import { storage } from 'apis.vin'

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

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:17.756Z · HTTP 200
{
  "type": "OK",
  "answers": "StorageReceive@1",
  "value": {
    "vin": "1N6ED1EK3PN658772",
    "noun": "storage",
    "asOf": "2026-08-10",
    "receipt": {
      "status": "received",
      "id": "STG-23b6fecb"
    }
  },
  "evidence": {
    "vin": "1N6ED1EK3PN658772",
    "noun": "storage",
    "asOf": "2026-08-10",
    "receipt": {
      "status": "received",
      "id": "STG-23b6fecb"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

retrieve

storage.retrieve · POST /storages/retrieve · gate offer · sandbox · answers StorageRetrieve@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.

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

EmitsStorage.retrieveRequested@1 · Storage.retrieved@1.

the SDK — storage.retrieve
import { storage } from 'apis.vin'

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

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:17.756Z · HTTP 200
{
  "type": "OK",
  "answers": "StorageRetrieve@1",
  "value": {
    "vin": "1N6ED1EK3PN658772",
    "noun": "storage",
    "asOf": "2026-08-10",
    "release": {
      "status": "nothing-stored"
    }
  },
  "evidence": {
    "vin": "1N6ED1EK3PN658772",
    "noun": "storage",
    "asOf": "2026-08-10",
    "release": {
      "status": "nothing-stored"
    }
  },
  "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.

ServiceOrder

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.

Storage · Class model

Storage · State machine

Storage · State machine

Storage · Sequence


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