parking
The parking noun — identity, lifecycle, events, and every capability as an anchored section: 14 capabilities, 0 live, 14 sandbox, 0 declared.
parking is one of the estate's 317 automotive nouns — a job a car needs done. It carries 14 capabilities: 0 live, 14 sandbox, 0 declared · doors aggregator.vin.
Identity
| Noun | parking |
| Pillar | Data (facets: 5 data · 5 services · 4 commerce) |
| Capabilities | 14 — 0 live · 14 sandbox · 0 declared |
| Entities | Usage |
| Doors | aggregator.vin |
| SDK | Vin.parking.* from apis.vin |
| Address | /catalog/parking#{action} — the anchor IS the wire name minus parking. |
Events
The vocabulary this noun can append to the record — 21 past-tense, versioned event types, each linked to the capability that emits it:
Parking.enterRequested@1— emitted byenterParking.entered@1— emitted byenterParking.exitRequested@1— emitted byexitParking.exited@1— emitted byexitParking.extendRequested@1— emitted byextendParking.extended@1— emitted byextendParking.paid@1— emitted bypayParking.payFailed@1— emitted bypayParking.payRequested@1— emitted bypayParking.quoteRequested@1— emitted byquoteParking.quoted@1— emitted byquoteParking.rated@1— emitted byrateParking.reserveRequested@1— emitted byreserveParking.reserved@1— emitted byreserveParking.settleFailed@1— emitted bysettleParking.settleRequested@1— emitted bysettleParking.settled@1— emitted bysettleParking.subscribeRequested@1— emitted bysubscribeParking.subscribed@1— emitted bysubscribeParking.validateRequested@1— emitted byvalidateParking.validated@1— emitted byvalidate
Discover & read
status
parking.status · GET /parkings/status · gate none · sandbox · answers ParkingStatus@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1C6JJTBG3LL134119 (the VIN lens).
Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.
import { parking } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await parking.status({"vin":"1C6JJTBG3LL134119"})curl 'https://apis.vin/parkings/status?vin=1C6JJTBG3LL134119'Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.
{
"type": "OK",
"answers": "ParkingStatus@1",
"value": {
"vin": "1C6JJTBG3LL134119",
"noun": "parking",
"asOf": "2026-08-10",
"session": {
"id": "STG-6bd50325",
"site": "dealer-lot",
"days": 23,
"billableDays": 16,
"dueCents": 40000,
"currency": "USD",
"lot": "LOT-4",
"space": "SP-195"
}
},
"evidence": {
"vin": "1C6JJTBG3LL134119",
"noun": "parking",
"asOf": "2026-08-10",
"session": {
"id": "STG-6bd50325",
"site": "dealer-lot",
"days": 23,
"billableDays": 16,
"dueCents": 40000,
"currency": "USD",
"lot": "LOT-4",
"space": "SP-195"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "dealer-floor-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}availability
parking.availability · GET /parkings/availability · gate none · sandbox · answers ParkingAvailability@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1C6JJTBG3LL134119 (the VIN lens).
Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.
import { parking } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await parking.availability({"vin":"1C6JJTBG3LL134119"})curl 'https://apis.vin/parkings/availability?vin=1C6JJTBG3LL134119'Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.
{
"type": "OK",
"answers": "ParkingAvailability@1",
"value": {
"vin": "1C6JJTBG3LL134119",
"noun": "parking",
"asOf": "2026-08-10",
"availability": {
"capacity": 220,
"occupied": 23,
"available": 197
}
},
"evidence": {
"vin": "1C6JJTBG3LL134119",
"noun": "parking",
"asOf": "2026-08-10",
"availability": {
"capacity": 220,
"occupied": 23,
"available": 197
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "dealer-floor-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}validate
parking.validate · POST /parkings/validate · gate offer · sandbox · answers ParkingValidate@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
The gate is a 402 OFFER — the price and a hard ceiling on the wire, with a durable intent that executes on settlement. Never a wall, never "contact sales". Price: not posted — see /pricing.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1C6JJTBG3LL134119 (the VIN lens).
Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.
Emits — Parking.validateRequested@1 · Parking.validated@1.
import { parking } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await parking.validate({"vin":"1C6JJTBG3LL134119"})curl -X POST https://apis.vin/parkings/validate \
-H 'content-type: application/json' \
-d '{"vin":"1C6JJTBG3LL134119"}'Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.
{
"type": "OK",
"answers": "ParkingValidate@1",
"value": {
"vin": "1C6JJTBG3LL134119",
"noun": "parking",
"asOf": "2026-08-10",
"validation": {
"status": "free-window-exceeded",
"id": "STG-6bd50325",
"dueCents": 40000,
"currency": "USD"
}
},
"evidence": {
"vin": "1C6JJTBG3LL134119",
"noun": "parking",
"asOf": "2026-08-10",
"validation": {
"status": "free-window-exceeded",
"id": "STG-6bd50325",
"dueCents": 40000,
"currency": "USD"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "dealer-floor-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}locate
parking.locate · GET /parkings/locate · gate none · sandbox · answers ParkingLocate@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1C6JJTBG3LL134119 (the VIN lens).
Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.
import { parking } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await parking.locate({"vin":"1C6JJTBG3LL134119"})curl 'https://apis.vin/parkings/locate?vin=1C6JJTBG3LL134119'Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.
{
"type": "OK",
"answers": "ParkingLocate@1",
"value": {
"vin": "1C6JJTBG3LL134119",
"noun": "parking",
"asOf": "2026-08-10",
"location": {
"site": "dealer-lot",
"lot": "LOT-4",
"space": "SP-195",
"basis": "inventory-location"
}
},
"evidence": {
"vin": "1C6JJTBG3LL134119",
"noun": "parking",
"asOf": "2026-08-10",
"location": {
"site": "dealer-lot",
"lot": "LOT-4",
"space": "SP-195",
"basis": "inventory-location"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "dealer-floor-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Quote & price
quote
parking.quote · POST /parkings/quote · gate offer · sandbox · answers ParkingQuote@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
The gate is a 402 OFFER — the price and a hard ceiling on the wire, with a durable intent that executes on settlement. Never a wall, never "contact sales". Price: not posted — see /pricing.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1C6JJTBG3LL134119 (the VIN lens).
Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.
Emits — Parking.quoteRequested@1 · Parking.quoted@1.
import { parking } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await parking.quote({"vin":"1C6JJTBG3LL134119"})curl -X POST https://apis.vin/parkings/quote \
-H 'content-type: application/json' \
-d '{"vin":"1C6JJTBG3LL134119"}'Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.
{
"type": "OK",
"answers": "ParkingQuote@1",
"value": {
"vin": "1C6JJTBG3LL134119",
"noun": "parking",
"asOf": "2026-08-10",
"quote": {
"days": 23,
"freeDays": 7,
"billableDays": 16,
"amountCents": 40000,
"currency": "USD"
}
},
"evidence": {
"vin": "1C6JJTBG3LL134119",
"noun": "parking",
"asOf": "2026-08-10",
"quote": {
"days": 23,
"freeDays": 7,
"billableDays": 16,
"amountCents": 40000,
"currency": "USD"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "dealer-floor-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}rate
parking.rate · GET /parkings/rate · gate key · sandbox · answers ParkingRate@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1C6JJTBG3LL134119 (the VIN lens).
Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.
Emits — Parking.rated@1.
import { parking } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await parking.rate({"vin":"1C6JJTBG3LL134119"})curl 'https://apis.vin/parkings/rate?vin=1C6JJTBG3LL134119'Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.
{
"type": "OK",
"answers": "ParkingRate@1",
"value": {
"vin": "1C6JJTBG3LL134119",
"noun": "parking",
"asOf": "2026-08-10",
"rate": {
"dayRateCents": 2500,
"freeDays": 7,
"monthlyPassCents": 7500,
"currency": "USD"
}
},
"evidence": {
"vin": "1C6JJTBG3LL134119",
"noun": "parking",
"asOf": "2026-08-10",
"rate": {
"dayRateCents": 2500,
"freeDays": 7,
"monthlyPassCents": 7500,
"currency": "USD"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "dealer-floor-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Apply & book
reserve
parking.reserve · POST /parkings/reserve · gate offer · sandbox · answers ParkingReserve@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
The gate is a 402 OFFER — the price and a hard ceiling on the wire, with a durable intent that executes on settlement. Never a wall, never "contact sales". Price: not posted — see /pricing.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1C6JJTBG3LL134119 (the VIN lens).
Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.
Emits — Parking.reserveRequested@1 · Parking.reserved@1.
import { parking } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await parking.reserve({"vin":"1C6JJTBG3LL134119"})curl -X POST https://apis.vin/parkings/reserve \
-H 'content-type: application/json' \
-d '{"vin":"1C6JJTBG3LL134119"}'Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.
{
"type": "OK",
"answers": "ParkingReserve@1",
"value": {
"vin": "1C6JJTBG3LL134119",
"noun": "parking",
"asOf": "2026-08-10",
"reservation": {
"id": "RSV-126a9bb0",
"status": "reserved",
"lot": "LOT-4",
"space": "SP-195"
}
},
"evidence": {
"vin": "1C6JJTBG3LL134119",
"noun": "parking",
"asOf": "2026-08-10",
"reservation": {
"id": "RSV-126a9bb0",
"status": "reserved",
"lot": "LOT-4",
"space": "SP-195"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "dealer-floor-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}subscribe
parking.subscribe · POST /parkings/subscribe · gate offer · sandbox · answers ParkingSubscribe@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
The gate is a 402 OFFER — the price and a hard ceiling on the wire, with a durable intent that executes on settlement. Never a wall, never "contact sales". Price: not posted — see /pricing.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1C6JJTBG3LL134119 (the VIN lens).
Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.
Emits — Parking.subscribeRequested@1 · Parking.subscribed@1.
import { parking } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await parking.subscribe({"vin":"1C6JJTBG3LL134119"})curl -X POST https://apis.vin/parkings/subscribe \
-H 'content-type: application/json' \
-d '{"vin":"1C6JJTBG3LL134119"}'Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.
{
"type": "OK",
"answers": "ParkingSubscribe@1",
"value": {
"vin": "1C6JJTBG3LL134119",
"noun": "parking",
"asOf": "2026-08-10",
"subscription": {
"id": "PK-375e8dd7",
"plan": "monthly-parking",
"amountCents": 7500,
"currency": "USD",
"status": "active"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "1C6JJTBG3LL134119",
"noun": "parking",
"asOf": "2026-08-10",
"subscription": {
"id": "PK-375e8dd7",
"plan": "monthly-parking",
"amountCents": 7500,
"currency": "USD",
"status": "active"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "dealer-floor-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Pay & settle
pay
parking.pay · POST /parkings/pay · gate offer · sandbox · answers ParkingPay@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
The gate is a 402 OFFER — the price and a hard ceiling on the wire, with a durable intent that executes on settlement. Never a wall, never "contact sales". Price: not posted — see /pricing.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1C6JJTBG3LL134119 (the VIN lens).
Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.
Emits — Parking.paid@1 · Parking.payFailed@1 · Parking.payRequested@1.
import { parking } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await parking.pay({"vin":"1C6JJTBG3LL134119"})curl -X POST https://apis.vin/parkings/pay \
-H 'content-type: application/json' \
-d '{"vin":"1C6JJTBG3LL134119"}'Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.
{
"type": "OK",
"answers": "ParkingPay@1",
"value": {
"vin": "1C6JJTBG3LL134119",
"noun": "parking",
"asOf": "2026-08-10",
"payment": {
"id": "PAY-6a968206",
"status": "settled",
"amountCents": 40000,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "1C6JJTBG3LL134119",
"noun": "parking",
"asOf": "2026-08-10",
"payment": {
"id": "PAY-6a968206",
"status": "settled",
"amountCents": 40000,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "dealer-floor-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}settle
parking.settle · POST /parkings/settle · gate offer · sandbox · answers ParkingSettle@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
The gate is a 402 OFFER — the price and a hard ceiling on the wire, with a durable intent that executes on settlement. Never a wall, never "contact sales". Price: not posted — see /pricing.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1C6JJTBG3LL134119 (the VIN lens).
Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.
Emits — Parking.settleFailed@1 · Parking.settleRequested@1 · Parking.settled@1.
import { parking } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await parking.settle({"vin":"1C6JJTBG3LL134119"})curl -X POST https://apis.vin/parkings/settle \
-H 'content-type: application/json' \
-d '{"vin":"1C6JJTBG3LL134119"}'Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.
{
"type": "OK",
"answers": "ParkingSettle@1",
"value": {
"vin": "1C6JJTBG3LL134119",
"noun": "parking",
"asOf": "2026-08-10",
"payment": {
"id": "PAY-6a968206",
"status": "settled",
"amountCents": 40000,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "1C6JJTBG3LL134119",
"noun": "parking",
"asOf": "2026-08-10",
"payment": {
"id": "PAY-6a968206",
"status": "settled",
"amountCents": 40000,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "dealer-floor-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}More actions
enter
parking.enter · POST /parkings/enter · gate offer · sandbox · answers ParkingEnter@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
The gate is a 402 OFFER — the price and a hard ceiling on the wire, with a durable intent that executes on settlement. Never a wall, never "contact sales". Price: not posted — see /pricing.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1C6JJTBG3LL134119 (the VIN lens).
Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.
Emits — Parking.enterRequested@1 · Parking.entered@1.
import { parking } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await parking.enter({"vin":"1C6JJTBG3LL134119"})curl -X POST https://apis.vin/parkings/enter \
-H 'content-type: application/json' \
-d '{"vin":"1C6JJTBG3LL134119"}'Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.
{
"type": "OK",
"answers": "ParkingEnter@1",
"value": {
"vin": "1C6JJTBG3LL134119",
"noun": "parking",
"asOf": "2026-08-10",
"entry": {
"status": "already-parked",
"id": "STG-6bd50325",
"site": "dealer-lot",
"days": 23,
"billableDays": 16,
"dueCents": 40000,
"currency": "USD",
"lot": "LOT-4",
"space": "SP-195"
}
},
"evidence": {
"vin": "1C6JJTBG3LL134119",
"noun": "parking",
"asOf": "2026-08-10",
"entry": {
"status": "already-parked",
"id": "STG-6bd50325",
"site": "dealer-lot",
"days": 23,
"billableDays": 16,
"dueCents": 40000,
"currency": "USD",
"lot": "LOT-4",
"space": "SP-195"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "dealer-floor-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}exit
parking.exit · POST /parkings/exit · gate offer · sandbox · answers ParkingExit@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
The gate is a 402 OFFER — the price and a hard ceiling on the wire, with a durable intent that executes on settlement. Never a wall, never "contact sales". Price: not posted — see /pricing.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1C6JJTBG3LL134119 (the VIN lens).
Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.
Emits — Parking.exitRequested@1 · Parking.exited@1.
import { parking } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await parking.exit({"vin":"1C6JJTBG3LL134119"})curl -X POST https://apis.vin/parkings/exit \
-H 'content-type: application/json' \
-d '{"vin":"1C6JJTBG3LL134119"}'Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.
{
"type": "OK",
"answers": "ParkingExit@1",
"value": {
"vin": "1C6JJTBG3LL134119",
"noun": "parking",
"asOf": "2026-08-10",
"exit": {
"status": "settle-first",
"id": "STG-6bd50325",
"dueCents": 40000,
"currency": "USD"
}
},
"evidence": {
"vin": "1C6JJTBG3LL134119",
"noun": "parking",
"asOf": "2026-08-10",
"exit": {
"status": "settle-first",
"id": "STG-6bd50325",
"dueCents": 40000,
"currency": "USD"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "dealer-floor-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}extend
parking.extend · POST /parkings/extend · gate offer · sandbox · answers ParkingExtend@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
The gate is a 402 OFFER — the price and a hard ceiling on the wire, with a durable intent that executes on settlement. Never a wall, never "contact sales". Price: not posted — see /pricing.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1C6JJTBG3LL134119 (the VIN lens).
Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.
Emits — Parking.extendRequested@1 · Parking.extended@1.
import { parking } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await parking.extend({"vin":"1C6JJTBG3LL134119"})curl -X POST https://apis.vin/parkings/extend \
-H 'content-type: application/json' \
-d '{"vin":"1C6JJTBG3LL134119"}'Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.
{
"type": "OK",
"answers": "ParkingExtend@1",
"value": {
"vin": "1C6JJTBG3LL134119",
"noun": "parking",
"asOf": "2026-08-10",
"extension": {
"status": "extended",
"id": "STG-6bd50325",
"days": 23,
"dayRateCents": 2500,
"currency": "USD"
}
},
"evidence": {
"vin": "1C6JJTBG3LL134119",
"noun": "parking",
"asOf": "2026-08-10",
"extension": {
"status": "extended",
"id": "STG-6bd50325",
"days": 23,
"dayRateCents": 2500,
"currency": "USD"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "dealer-floor-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}session
parking.session · GET /parkings/session · gate none · sandbox · answers ParkingSession@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1C6JJTBG3LL134119 (the VIN lens).
Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.
import { parking } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await parking.session({"vin":"1C6JJTBG3LL134119"})curl 'https://apis.vin/parkings/session?vin=1C6JJTBG3LL134119'Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.
{
"type": "OK",
"answers": "ParkingSession@1",
"value": {
"vin": "1C6JJTBG3LL134119",
"noun": "parking",
"asOf": "2026-08-10",
"session": {
"id": "STG-6bd50325",
"site": "dealer-lot",
"days": 23,
"billableDays": 16,
"dueCents": 40000,
"currency": "USD",
"lot": "LOT-4",
"space": "SP-195"
}
},
"evidence": {
"vin": "1C6JJTBG3LL134119",
"noun": "parking",
"asOf": "2026-08-10",
"session": {
"id": "STG-6bd50325",
"site": "dealer-lot",
"days": 23,
"billableDays": 16,
"dueCents": 40000,
"currency": "USD",
"lot": "LOT-4",
"space": "SP-195"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "dealer-floor-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.
Usage
Generated from the catalog. Every capability, answer, gate, and entity on this page is a rendered descriptor — it cannot drift from the wire.