wheels
The wheels noun — identity, lifecycle, events, and every capability as an anchored section: 16 capabilities, 1 live, 15 sandbox, 0 declared.
wheels is one of the estate's 317 automotive nouns — a job a car needs done. It carries 16 capabilities: 1 live, 15 sandbox, 0 declared · doors aggregator.vin.
Identity
| Noun | wheels |
| Pillar | Data (facets: 7 data · 5 services · 4 commerce) |
| Capabilities | 16 — 1 live · 15 sandbox · 0 declared |
| Entities | RepairOrder |
| Doors | aggregator.vin |
| SDK | Vin.wheels.* from apis.vin |
| Address | /catalog/wheels#{action} — the anchor IS the wire name minus wheels. |
Events
The vocabulary this noun can append to the record — 24 past-tense, versioned event types, each linked to the capability that emits it:
Order.placed@1— emitted byorderServiceOrder.settled@1— emitted byorder·payWheels.charged@1— emitted bypayWheels.completed@1— emitted byorderWheels.dispatched@1— emitted byorderWheels.mountFailed@1— emitted bymountWheels.mountRequested@1— emitted bymountWheels.mounted@1— emitted bymountWheels.ordered@1— emitted byorderWheels.paid@1— emitted bypayWheels.payFailed@1— emitted bypayWheels.payRequested@1— emitted bypayWheels.quoteRequested@1— emitted byquoteWheels.quoted@1— emitted byquoteWheels.refinishRequested@1— emitted byrefinishWheels.refinished@1— emitted byrefinishWheels.refunded@1— emitted byrefundWheels.repairFailed@1— emitted byrepairWheels.repairRequested@1— emitted byrepairWheels.repaired@1— emitted byrepairWheels.straightenRequested@1— emitted bystraightenWheels.straightened@1— emitted bystraightenWheels.torqueRequested@1— emitted bytorqueWheels.torqued@1— emitted bytorque
Discover & read
spec
wheels.spec · GET /wheels/spec · gate none · live · answers WheelsSpec@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1GAZGPF71S1106530 (the VIN lens).
Try it — live: answers on the wire today. A sandbox key still selects the deterministic simulated mode — drive the full outcome range with the magic triggers.
import { wheels } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await wheels.spec({"vin":"1GAZGPF71S1106530"})curl 'https://apis.vin/wheels/spec?vin=1GAZGPF71S1106530'availability
wheels.availability · GET /wheels/availability · gate none · sandbox · answers WheelsAvailability@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1GAZGPF71S1106530 (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 { wheels } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await wheels.availability({"vin":"1GAZGPF71S1106530"})curl 'https://apis.vin/wheels/availability?vin=1GAZGPF71S1106530'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": "WheelsAvailability@1",
"value": {
"vin": "1GAZGPF71S1106530",
"noun": "wheels",
"asOf": "2026-08-10",
"availability": {
"inStock": true,
"quantity": 6,
"etaDate": "2026-08-13"
}
},
"evidence": {
"vin": "1GAZGPF71S1106530",
"noun": "wheels",
"asOf": "2026-08-10",
"availability": {
"inStock": true,
"quantity": 6,
"etaDate": "2026-08-13"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wrench-wear-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}boltPatternLookup
wheels.boltPatternLookup · GET /wheels/bolt-pattern-lookup · gate none · sandbox · answers WheelsBoltPatternLookup@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1GAZGPF71S1106530 (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 { wheels } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await wheels.boltPatternLookup({"vin":"1GAZGPF71S1106530"})curl 'https://apis.vin/wheels/bolt-pattern-lookup?vin=1GAZGPF71S1106530'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": "WheelsBoltPatternLookup@1",
"value": {
"vin": "1GAZGPF71S1106530",
"noun": "wheels",
"asOf": "2026-08-10",
"boltPattern": {
"pattern": "5x120",
"lugCount": 5,
"threadPitch": "M14x1.5"
}
},
"evidence": {
"vin": "1GAZGPF71S1106530",
"noun": "wheels",
"asOf": "2026-08-10",
"boltPattern": {
"pattern": "5x120",
"lugCount": 5,
"threadPitch": "M14x1.5"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wrench-wear-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}offsetDecode
wheels.offsetDecode · GET /wheels/offset-decode · gate none · sandbox · answers WheelsOffsetDecode@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1GAZGPF71S1106530 (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 { wheels } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await wheels.offsetDecode({"vin":"1GAZGPF71S1106530"})curl 'https://apis.vin/wheels/offset-decode?vin=1GAZGPF71S1106530'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": "WheelsOffsetDecode@1",
"value": {
"vin": "1GAZGPF71S1106530",
"noun": "wheels",
"asOf": "2026-08-10",
"offset": {
"marking": "ET44",
"offsetMm": 44,
"kind": "positive"
}
},
"evidence": {
"vin": "1GAZGPF71S1106530",
"noun": "wheels",
"asOf": "2026-08-10",
"offset": {
"marking": "ET44",
"offsetMm": 44,
"kind": "positive"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wrench-wear-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Quote & price
quote
wheels.quote · POST /wheels/quote · gate offer · sandbox · answers WheelsQuote@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) · /1GAZGPF71S1106530 (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 — Wheels.quoteRequested@1 · Wheels.quoted@1.
import { wheels } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await wheels.quote({"vin":"1GAZGPF71S1106530"})curl -X POST https://apis.vin/wheels/quote \
-H 'content-type: application/json' \
-d '{"vin":"1GAZGPF71S1106530"}'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": "WheelsQuote@1",
"value": {
"vin": "1GAZGPF71S1106530",
"noun": "wheels",
"asOf": "2026-08-10",
"quote": {
"id": "WQ-efaca412",
"amountCents": 18500,
"kind": "repair",
"currency": "USD",
"status": "extended"
}
},
"evidence": {
"vin": "1GAZGPF71S1106530",
"noun": "wheels",
"asOf": "2026-08-10",
"quote": {
"id": "WQ-efaca412",
"amountCents": 18500,
"kind": "repair",
"currency": "USD",
"status": "extended"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wrench-wear-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Apply & book
order
wheels.order · POST /wheels/order · gate offer · sandbox · answers WheelsOrder@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) · /1GAZGPF71S1106530 (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 — Order.placed@1 · ServiceOrder.settled@1 · Wheels.completed@1 · Wheels.dispatched@1 · Wheels.ordered@1.
import { wheels } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await wheels.order({"vin":"1GAZGPF71S1106530"})curl -X POST https://apis.vin/wheels/order \
-H 'content-type: application/json' \
-d '{"vin":"1GAZGPF71S1106530"}'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": "WheelsOrder@1",
"value": {
"vin": "1GAZGPF71S1106530",
"noun": "wheels",
"asOf": "2026-08-10",
"order": {
"id": "ORD-9fa83846",
"item": "wheel",
"status": "placed",
"amountCents": 34000,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "1GAZGPF71S1106530",
"noun": "wheels",
"asOf": "2026-08-10",
"order": {
"id": "ORD-9fa83846",
"item": "wheel",
"status": "placed",
"amountCents": 34000,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wrench-wear-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Pay & settle
pay
wheels.pay · POST /wheels/pay · gate offer · sandbox · answers WheelsPay@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) · /1GAZGPF71S1106530 (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 — ServiceOrder.settled@1 · Wheels.charged@1 · Wheels.paid@1 · Wheels.payFailed@1 · Wheels.payRequested@1.
import { wheels } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await wheels.pay({"vin":"1GAZGPF71S1106530"})curl -X POST https://apis.vin/wheels/pay \
-H 'content-type: application/json' \
-d '{"vin":"1GAZGPF71S1106530"}'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": "WheelsPay@1",
"value": {
"vin": "1GAZGPF71S1106530",
"noun": "wheels",
"asOf": "2026-08-10",
"payment": {
"id": "PAY-12bc2508",
"status": "settled",
"amountCents": 18500,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "1GAZGPF71S1106530",
"noun": "wheels",
"asOf": "2026-08-10",
"payment": {
"id": "PAY-12bc2508",
"status": "settled",
"amountCents": 18500,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wrench-wear-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}refund
wheels.refund · POST /wheels/refund · gate offer · sandbox · answers WheelsRefund@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) · /1GAZGPF71S1106530 (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 — Wheels.refunded@1.
import { wheels } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await wheels.refund({"vin":"1GAZGPF71S1106530"})curl -X POST https://apis.vin/wheels/refund \
-H 'content-type: application/json' \
-d '{"vin":"1GAZGPF71S1106530"}'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": "WheelsRefund@1",
"value": {
"vin": "1GAZGPF71S1106530",
"noun": "wheels",
"asOf": "2026-08-10",
"refund": {
"id": "RFD-139cf33c",
"status": "issued",
"amountCents": 18500,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "1GAZGPF71S1106530",
"noun": "wheels",
"asOf": "2026-08-10",
"refund": {
"id": "RFD-139cf33c",
"status": "issued",
"amountCents": 18500,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wrench-wear-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Fulfill & operate
repair
wheels.repair · POST /wheels/repair · gate offer · sandbox · answers WheelsRepair@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) · /1GAZGPF71S1106530 (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 — Wheels.repairFailed@1 · Wheels.repairRequested@1 · Wheels.repaired@1.
import { wheels } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await wheels.repair({"vin":"1GAZGPF71S1106530"})curl -X POST https://apis.vin/wheels/repair \
-H 'content-type: application/json' \
-d '{"vin":"1GAZGPF71S1106530"}'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": "WheelsRepair@1",
"value": {
"vin": "1GAZGPF71S1106530",
"noun": "wheels",
"asOf": "2026-08-10",
"repair": {
"status": "nothing-to-repair",
"verdict": "pass"
}
},
"evidence": {
"vin": "1GAZGPF71S1106530",
"noun": "wheels",
"asOf": "2026-08-10",
"repair": {
"status": "nothing-to-repair",
"verdict": "pass"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wrench-wear-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}More actions
condition
wheels.condition · GET /wheels/condition · gate none · sandbox · answers WheelsCondition@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1GAZGPF71S1106530 (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 { wheels } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await wheels.condition({"vin":"1GAZGPF71S1106530"})curl 'https://apis.vin/wheels/condition?vin=1GAZGPF71S1106530'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": "WheelsCondition@1",
"value": {
"vin": "1GAZGPF71S1106530",
"noun": "wheels",
"asOf": "2026-08-10",
"verdict": "pass",
"findings": []
},
"evidence": {
"vin": "1GAZGPF71S1106530",
"noun": "wheels",
"asOf": "2026-08-10",
"verdict": "pass",
"findings": []
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wrench-wear-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}fits
wheels.fits · GET /wheels/fits · gate none · sandbox · answers WheelsFits@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1GAZGPF71S1106530 (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 { wheels } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await wheels.fits({"vin":"1GAZGPF71S1106530"})curl 'https://apis.vin/wheels/fits?vin=1GAZGPF71S1106530'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": "WheelsFits@1",
"value": {
"vin": "1GAZGPF71S1106530",
"noun": "wheels",
"asOf": "2026-08-10",
"fitment": {
"fits": true,
"diameterIn": 17,
"boltPattern": "5x120"
}
},
"evidence": {
"vin": "1GAZGPF71S1106530",
"noun": "wheels",
"asOf": "2026-08-10",
"fitment": {
"fits": true,
"diameterIn": 17,
"boltPattern": "5x120"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wrench-wear-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}interchange
wheels.interchange · GET /wheels/interchange · gate none · sandbox · answers WheelsInterchange@1
No input — this capability takes no request body.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1GAZGPF71S1106530 (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 { wheels } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await wheels.interchange()curl 'https://apis.vin/wheels/interchange'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": "WheelsInterchange@1",
"value": {
"vin": "1HGCM82633A004352",
"noun": "wheels",
"asOf": "2026-08-10",
"interchange": [
{
"id": "WHL-65f3c1e4",
"boltPattern": "6x139.7",
"diameterIn": 17
},
{
"id": "WHL-66f3c377",
"boltPattern": "6x139.7",
"diameterIn": 17
}
]
},
"evidence": {
"vin": "1HGCM82633A004352",
"noun": "wheels",
"asOf": "2026-08-10",
"interchange": [
{
"id": "WHL-65f3c1e4",
"boltPattern": "6x139.7",
"diameterIn": 17
},
{
"id": "WHL-66f3c377",
"boltPattern": "6x139.7",
"diameterIn": 17
}
]
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wrench-wear-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}mount
wheels.mount · POST /wheels/mount · gate offer · sandbox · answers WheelsMount@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) · /1GAZGPF71S1106530 (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 — Wheels.mountFailed@1 · Wheels.mountRequested@1 · Wheels.mounted@1.
import { wheels } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await wheels.mount({"vin":"1GAZGPF71S1106530"})curl -X POST https://apis.vin/wheels/mount \
-H 'content-type: application/json' \
-d '{"vin":"1GAZGPF71S1106530"}'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": "WheelsMount@1",
"value": {
"vin": "1GAZGPF71S1106530",
"noun": "wheels",
"asOf": "2026-08-10",
"mount": {
"status": "mounted",
"torqueFtLb": 99,
"verdict": "pass"
}
},
"evidence": {
"vin": "1GAZGPF71S1106530",
"noun": "wheels",
"asOf": "2026-08-10",
"mount": {
"status": "mounted",
"torqueFtLb": 99,
"verdict": "pass"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wrench-wear-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}refinish
wheels.refinish · POST /wheels/refinish · gate offer · sandbox · answers WheelsRefinish@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) · /1GAZGPF71S1106530 (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 — Wheels.refinishRequested@1 · Wheels.refinished@1.
import { wheels } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await wheels.refinish({"vin":"1GAZGPF71S1106530"})curl -X POST https://apis.vin/wheels/refinish \
-H 'content-type: application/json' \
-d '{"vin":"1GAZGPF71S1106530"}'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": "WheelsRefinish@1",
"value": {
"vin": "1GAZGPF71S1106530",
"noun": "wheels",
"asOf": "2026-08-10",
"refinish": {
"status": "nothing-to-repair",
"verdict": "pass"
}
},
"evidence": {
"vin": "1GAZGPF71S1106530",
"noun": "wheels",
"asOf": "2026-08-10",
"refinish": {
"status": "nothing-to-repair",
"verdict": "pass"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wrench-wear-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}straighten
wheels.straighten · POST /wheels/straighten · gate offer · sandbox · answers WheelsStraighten@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) · /1GAZGPF71S1106530 (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 — Wheels.straightenRequested@1 · Wheels.straightened@1.
import { wheels } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await wheels.straighten({"vin":"1GAZGPF71S1106530"})curl -X POST https://apis.vin/wheels/straighten \
-H 'content-type: application/json' \
-d '{"vin":"1GAZGPF71S1106530"}'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": "WheelsStraighten@1",
"value": {
"vin": "1GAZGPF71S1106530",
"noun": "wheels",
"asOf": "2026-08-10",
"straightening": {
"status": "nothing-to-repair",
"verdict": "pass"
}
},
"evidence": {
"vin": "1GAZGPF71S1106530",
"noun": "wheels",
"asOf": "2026-08-10",
"straightening": {
"status": "nothing-to-repair",
"verdict": "pass"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wrench-wear-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}torque
wheels.torque · POST /wheels/torque · gate offer · sandbox · answers WheelsTorque@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) · /1GAZGPF71S1106530 (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 — Wheels.torqueRequested@1 · Wheels.torqued@1.
import { wheels } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await wheels.torque({"vin":"1GAZGPF71S1106530"})curl -X POST https://apis.vin/wheels/torque \
-H 'content-type: application/json' \
-d '{"vin":"1GAZGPF71S1106530"}'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": "WheelsTorque@1",
"value": {
"vin": "1GAZGPF71S1106530",
"noun": "wheels",
"asOf": "2026-08-10",
"torque": {
"torqueFtLb": 99,
"sequence": "star",
"recheckMiles": 50
}
},
"evidence": {
"vin": "1GAZGPF71S1106530",
"noun": "wheels",
"asOf": "2026-08-10",
"torque": {
"torqueFtLb": 99,
"sequence": "star",
"recheckMiles": 50
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wrench-wear-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.
RepairOrder
Modeled
The noun drawn out — its record shape, its lifecycle, and how it is exercised end to end. 3 diagrams, rendered from the estate model.
Wheels · Class model
Wheels · State machine
Wheels · Sequence
Generated from the catalog. Every capability, answer, gate, and entity on this page is a rendered descriptor — it cannot drift from the wire.
warranty
The warranty noun — identity, lifecycle, events, and every capability as an anchored section: 9 capabilities, 0 live, 9 sandbox, 0 declared.
windowSticker
The windowSticker noun — identity, lifecycle, events, and every capability as an anchored section: 8 capabilities, 4 live, 4 sandbox, 0 declared.