tires
The tires noun — identity, lifecycle, events, and every capability as an anchored section: 36 capabilities, 2 live, 34 sandbox, 0 declared.
tires is one of the estate's 317 automotive nouns — a job a car needs done. It carries 36 capabilities: 2 live, 34 sandbox, 0 declared · doors tires.vin · aggregator.vin.
Identity
| Noun | tires |
| Pillar | Data (facets: 13 data · 13 services · 10 commerce) |
| Capabilities | 36 — 2 live · 34 sandbox · 0 declared |
| Entities | RepairOrder |
| Doors | aggregator.vin · tires.vin |
| SDK | Vin.tires.* from apis.vin |
| Address | /catalog/tires#{action} — the anchor IS the wire name minus tires. |
Events
The vocabulary this noun can append to the record — 55 past-tense, versioned event types, each linked to the capability that emits it:
Order.placed@1— emitted byorderServiceOrder.settled@1— emitted byorder·payTires.alignFailed@1— emitted byalignTires.alignRequested@1— emitted byalignTires.aligned@1— emitted byalignTires.balanceFailed@1— emitted bybalanceTires.balanceRequested@1— emitted bybalanceTires.balanced@1— emitted bybalanceTires.charged@1— emitted bypayTires.completed@1— emitted byorderTires.dispatched@1— emitted byorderTires.disposeFeeCharged@1— emitted bydisposeFeeTires.disposeFeeRequested@1— emitted bydisposeFeeTires.disposeRequested@1— emitted bydisposeTires.disposed@1— emitted bydisposeTires.inspected@1— emitted byinspectTires.installBundleRequested@1— emitted byinstallBundleTires.installBundled@1— emitted byinstallBundleTires.mountFailed@1— emitted bymountTires.mountRequested@1— emitted bymountTires.mounted@1— emitted bymountTires.ordered@1— emitted byorderTires.paid@1— emitted bypayTires.patchRequested@1— emitted bypatchTires.patched@1— emitted bypatchTires.payFailed@1— emitted bypayTires.payRequested@1— emitted bypayTires.plugRequested@1— emitted byplugTires.plugged@1— emitted byplugTires.purchased@1— emitted bybuyTires.quoteRequested@1— emitted byquoteTires.quoted@1— emitted byquoteTires.rebateRequested@1— emitted byrebateTires.rebated@1— emitted byrebateTires.refundFailed@1— emitted byrefundTires.refundRequested@1— emitted byrefundTires.refunded@1— emitted byrefundTires.repaired@1— emitted byrepairTires.roadHazardBought@1— emitted byroadHazardBuyTires.roadHazardBuyRequested@1— emitted byroadHazardBuyTires.rotateRequested@1— emitted byrotateTires.rotated@1— emitted byrotateTires.scheduleRequested@1— emitted byscheduleTires.scheduled@1— emitted byscheduleTires.seasonalSwapRequested@1— emitted byseasonalSwapTires.seasonalSwapped@1— emitted byseasonalSwapTires.storeRequested@1— emitted bystoreTires.stored@1— emitted bystoreTires.tpmsRelearnRequested@1— emitted bytpmsRelearnTires.tpmsRelearned@1— emitted bytpmsRelearnTires.warrantyClaimFailed@1— emitted bywarrantyClaimTires.warrantyClaimFiled@1— emitted bywarrantyClaimTires.warrantyClaimRequested@1— emitted bywarrantyClaimWarrantyClaim.approved@1— emitted bywarrantyClaimWarrantyClaim.reimbursed@1— emitted bywarrantyClaim
Discover & read
spec
tires.spec · GET /tires/spec · gate none · live · answers TiresSpec@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — tires.vin serves this noun on its two routes: / (the landing) · /1C4AJWAG9HL738132 (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 { tires } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await tires.spec({"vin":"1C4AJWAG9HL738132"})curl 'https://apis.vin/tires/spec?vin=1C4AJWAG9HL738132'history
tires.history · GET /tires/history · gate none · sandbox · answers TiresHistory@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — tires.vin serves this noun on its two routes: / (the landing) · /1C4AJWAG9HL738132 (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 { tires } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await tires.history({"vin":"1C4AJWAG9HL738132"})curl 'https://apis.vin/tires/history?vin=1C4AJWAG9HL738132'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": "TiresHistory@1",
"value": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"verdict": "pass",
"events": [
{
"date": "2024-03-14",
"kind": "maintenance",
"description": "scheduled tire set service"
}
],
"count": 1
},
"evidence": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"verdict": "pass",
"events": [
{
"date": "2024-03-14",
"kind": "maintenance",
"description": "scheduled tire set service"
}
],
"count": 1
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wear-systems-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}availability
tires.availability · GET /tires/availability · gate none · sandbox · answers TiresAvailability@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — tires.vin serves this noun on its two routes: / (the landing) · /1C4AJWAG9HL738132 (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 { tires } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await tires.availability({"vin":"1C4AJWAG9HL738132"})curl 'https://apis.vin/tires/availability?vin=1C4AJWAG9HL738132'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": "TiresAvailability@1",
"value": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"lookup": "availability",
"component": "tire set",
"size": "225/60R17",
"loadIndex": 99,
"speedRating": "H",
"treadDepthNewMm": "8.7",
"tpms": "direct",
"fits": true,
"inStock": 9,
"unitPriceCents": 22000,
"currency": "USD",
"partSource": "aftermarket"
},
"evidence": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"lookup": "availability",
"component": "tire set",
"size": "225/60R17",
"loadIndex": 99,
"speedRating": "H",
"treadDepthNewMm": "8.7",
"tpms": "direct",
"fits": true,
"inStock": 9,
"unitPriceCents": 22000,
"currency": "USD",
"partSource": "aftermarket"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wear-systems-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}ratingLookup
tires.ratingLookup · GET /tires/rating-lookup · gate none · sandbox · answers TiresRatingLookup@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — tires.vin serves this noun on its two routes: / (the landing) · /1C4AJWAG9HL738132 (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 { tires } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await tires.ratingLookup({"vin":"1C4AJWAG9HL738132"})curl 'https://apis.vin/tires/rating-lookup?vin=1C4AJWAG9HL738132'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": "TiresRatingLookup@1",
"value": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"lookup": "ratingLookup",
"component": "tire set",
"size": "225/60R17",
"loadIndex": 99,
"speedRating": "H",
"treadDepthNewMm": "8.7",
"tpms": "direct",
"fits": true,
"inStock": 12,
"unitPriceCents": 22000,
"currency": "USD",
"partSource": "aftermarket"
},
"evidence": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"lookup": "ratingLookup",
"component": "tire set",
"size": "225/60R17",
"loadIndex": 99,
"speedRating": "H",
"treadDepthNewMm": "8.7",
"tpms": "direct",
"fits": true,
"inStock": 12,
"unitPriceCents": 22000,
"currency": "USD",
"partSource": "aftermarket"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wear-systems-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}conditionRead
tires.conditionRead · GET /tires/condition-read · gate none · sandbox · answers TiresConditionRead@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — tires.vin serves this noun on its two routes: / (the landing) · /1C4AJWAG9HL738132 (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 { tires } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await tires.conditionRead({"vin":"1C4AJWAG9HL738132"})curl 'https://apis.vin/tires/condition-read?vin=1C4AJWAG9HL738132'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": "TiresConditionRead@1",
"value": {
"vin": "1C4AJWAG9HL738132",
"serviceType": "inspection",
"grade": "clean",
"damage": [],
"reconRequired": false,
"reconEstimateCents": 0,
"currency": "USD"
},
"evidence": {
"vin": "1C4AJWAG9HL738132",
"serviceType": "inspection",
"grade": "clean",
"damage": [],
"reconRequired": false,
"reconEstimateCents": 0,
"currency": "USD"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "field-services-rail-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}dotDecode
tires.dotDecode · GET /tires/dot-decode · gate none · sandbox · answers TiresDotDecode@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — tires.vin serves this noun on its two routes: / (the landing) · /1C4AJWAG9HL738132 (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 { tires } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await tires.dotDecode({"vin":"1C4AJWAG9HL738132"})curl 'https://apis.vin/tires/dot-decode?vin=1C4AJWAG9HL738132'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": "TiresDotDecode@1",
"value": {
"dot": "2223",
"plantCode": "22",
"weekOfYear": 22,
"year": 2023
},
"evidence": {
"dot": "2223",
"plantCode": "22",
"weekOfYear": 22,
"year": 2023
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "services-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}sizeDecode
tires.sizeDecode · GET /tires/size-decode · gate none · live · answers TiresSizeDecode@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — tires.vin serves this noun on its two routes: / (the landing) · /1C4AJWAG9HL738132 (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 { tires } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await tires.sizeDecode({"vin":"1C4AJWAG9HL738132"})curl 'https://apis.vin/tires/size-decode?vin=1C4AJWAG9HL738132'wearPredict
tires.wearPredict · GET /tires/wear-predict · gate none · sandbox · answers TiresWearPredict@1
No input — this capability takes no request body.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1C4AJWAG9HL738132 (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 { tires } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await tires.wearPredict()curl 'https://apis.vin/tires/wear-predict'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": "TiresWearPredict@1",
"value": {
"vin": "1HGCM82633A004352",
"system": "tires",
"asOf": "2026-08-10",
"verdict": "pass",
"remainingLifePct": 60,
"failureRiskPct": 11,
"horizonMiles": 12000
},
"evidence": {
"vin": "1HGCM82633A004352",
"system": "tires",
"asOf": "2026-08-10",
"verdict": "pass",
"remainingLifePct": 60,
"failureRiskPct": 11,
"horizonMiles": 12000
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wear-systems-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Quote & price
quote
tires.quote · POST /tires/quote · gate offer · sandbox · answers TiresQuote@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 — tires.vin serves this noun on its two routes: / (the landing) · /1C4AJWAG9HL738132 (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 — Tires.quoteRequested@1 · Tires.quoted@1.
import { tires } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await tires.quote({"vin":"1C4AJWAG9HL738132"})curl -X POST https://apis.vin/tires/quote \
-H 'content-type: application/json' \
-d '{"vin":"1C4AJWAG9HL738132"}'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": "TiresQuote@1",
"value": {
"vin": "1C4AJWAG9HL738132",
"quoteId": "DQ-1",
"serviceType": "repair",
"costCents": 54183,
"priceCents": 70438,
"marginCents": 16255,
"currency": "USD",
"etaMinDays": 1,
"etaMaxDays": 5,
"rush": false,
"expires": "2026-08-17T00:00:00.000Z"
},
"evidence": {
"vin": "1C4AJWAG9HL738132",
"quoteId": "DQ-1",
"serviceType": "repair",
"costCents": 54183,
"priceCents": 70438,
"marginCents": 16255,
"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
}
}price
tires.price · GET /tires/price · gate none · sandbox · answers TiresPrice@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — tires.vin serves this noun on its two routes: / (the landing) · /1C4AJWAG9HL738132 (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 { tires } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await tires.price({"vin":"1C4AJWAG9HL738132"})curl 'https://apis.vin/tires/price?vin=1C4AJWAG9HL738132'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": "TiresPrice@1",
"value": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"lookup": "price",
"component": "tire set",
"size": "225/60R17",
"loadIndex": 99,
"speedRating": "H",
"treadDepthNewMm": "8.7",
"tpms": "direct",
"fits": true,
"inStock": 14,
"unitPriceCents": 22000,
"currency": "USD",
"partSource": "aftermarket"
},
"evidence": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"lookup": "price",
"component": "tire set",
"size": "225/60R17",
"loadIndex": 99,
"speedRating": "H",
"treadDepthNewMm": "8.7",
"tpms": "direct",
"fits": true,
"inStock": 14,
"unitPriceCents": 22000,
"currency": "USD",
"partSource": "aftermarket"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wear-systems-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}priceLookup
tires.priceLookup · GET /tires/price-lookup · gate none · sandbox · answers TiresPriceLookup@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — tires.vin serves this noun on its two routes: / (the landing) · /1C4AJWAG9HL738132 (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 { tires } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await tires.priceLookup({"vin":"1C4AJWAG9HL738132"})curl 'https://apis.vin/tires/price-lookup?vin=1C4AJWAG9HL738132'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": "TiresPriceLookup@1",
"value": {
"size": "225/45R17",
"brandTier": "standard",
"unitPriceCents": 19761,
"currency": "USD",
"inStock": true
},
"evidence": {
"size": "225/45R17",
"brandTier": "standard",
"unitPriceCents": 19761,
"currency": "USD",
"inStock": true
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "services-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}rebate
tires.rebate · POST /tires/rebate · gate offer · sandbox · answers TiresRebate@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 — tires.vin serves this noun on its two routes: / (the landing) · /1C4AJWAG9HL738132 (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 — Tires.rebateRequested@1 · Tires.rebated@1.
import { tires } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await tires.rebate({"vin":"1C4AJWAG9HL738132"})curl -X POST https://apis.vin/tires/rebate \
-H 'content-type: application/json' \
-d '{"vin":"1C4AJWAG9HL738132"}'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": "TiresRebate@1",
"value": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"rebate": {
"id": "RB-a0ab4efe",
"status": "issued",
"amountCents": 4400,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"rebate": {
"id": "RB-a0ab4efe",
"status": "issued",
"amountCents": 4400,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wear-systems-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}disposeFee
tires.disposeFee · POST /tires/dispose-fee · gate offer · sandbox · answers TiresDisposeFee@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 — tires.vin serves this noun on its two routes: / (the landing) · /1C4AJWAG9HL738132 (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 — Tires.disposeFeeCharged@1 · Tires.disposeFeeRequested@1.
import { tires } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await tires.disposeFee({"vin":"1C4AJWAG9HL738132"})curl -X POST https://apis.vin/tires/dispose-fee \
-H 'content-type: application/json' \
-d '{"vin":"1C4AJWAG9HL738132"}'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": "TiresDisposeFee@1",
"value": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"fee": {
"kind": "disposal",
"amountCents": 1800,
"currency": "USD",
"status": "charged"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"fee": {
"kind": "disposal",
"amountCents": 1800,
"currency": "USD",
"status": "charged"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wear-systems-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Apply & book
order
tires.order · POST /tires/order · gate offer · sandbox · answers TiresOrder@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 — tires.vin serves this noun on its two routes: / (the landing) · /1C4AJWAG9HL738132 (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 · Tires.completed@1 · Tires.dispatched@1 · Tires.ordered@1.
import { tires } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await tires.order({"vin":"1C4AJWAG9HL738132"})curl -X POST https://apis.vin/tires/order \
-H 'content-type: application/json' \
-d '{"vin":"1C4AJWAG9HL738132"}'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": "TiresOrder@1",
"value": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"verdict": "pass",
"workOrder": {
"id": "WO-4e577eeb",
"operation": "order",
"status": "scheduled",
"costCents": 44000,
"currency": "USD"
}
},
"evidence": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"verdict": "pass",
"workOrder": {
"id": "WO-4e577eeb",
"operation": "order",
"status": "scheduled",
"costCents": 44000,
"currency": "USD"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wear-systems-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}schedule
tires.schedule · POST /tires/schedule · gate offer · sandbox · answers TiresSchedule@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 — tires.vin serves this noun on its two routes: / (the landing) · /1C4AJWAG9HL738132 (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 — Tires.scheduleRequested@1 · Tires.scheduled@1.
import { tires } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await tires.schedule({"vin":"1C4AJWAG9HL738132"})curl -X POST https://apis.vin/tires/schedule \
-H 'content-type: application/json' \
-d '{"vin":"1C4AJWAG9HL738132"}'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": "TiresSchedule@1",
"value": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"verdict": "pass",
"workOrder": {
"id": "WO-ec341fa8",
"operation": "schedule",
"status": "scheduled",
"costCents": 44000,
"currency": "USD"
}
},
"evidence": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"verdict": "pass",
"workOrder": {
"id": "WO-ec341fa8",
"operation": "schedule",
"status": "scheduled",
"costCents": 44000,
"currency": "USD"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wear-systems-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Pay & settle
pay
tires.pay · POST /tires/pay · gate offer · sandbox · answers TiresPay@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 — tires.vin serves this noun on its two routes: / (the landing) · /1C4AJWAG9HL738132 (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 · Tires.charged@1 · Tires.paid@1 · Tires.payFailed@1 · Tires.payRequested@1.
import { tires } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await tires.pay({"vin":"1C4AJWAG9HL738132"})curl -X POST https://apis.vin/tires/pay \
-H 'content-type: application/json' \
-d '{"vin":"1C4AJWAG9HL738132"}'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": "TiresPay@1",
"value": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"payment": {
"id": "PAY-5e6c8a65",
"status": "settled",
"amountCents": 44000,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"payment": {
"id": "PAY-5e6c8a65",
"status": "settled",
"amountCents": 44000,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wear-systems-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}buy
tires.buy · POST /tires/buy · gate offer · sandbox · answers TiresBuy@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 — tires.vin serves this noun on its two routes: / (the landing) · /1C4AJWAG9HL738132 (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 — Tires.purchased@1.
import { tires } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await tires.buy({"vin":"1C4AJWAG9HL738132"})curl -X POST https://apis.vin/tires/buy \
-H 'content-type: application/json' \
-d '{"vin":"1C4AJWAG9HL738132"}'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": "TiresBuy@1",
"value": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"order": {
"id": "ORD-00fa825f",
"item": "tire set",
"status": "placed",
"amountCents": 88000,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"order": {
"id": "ORD-00fa825f",
"item": "tire set",
"status": "placed",
"amountCents": 88000,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wear-systems-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}refund
tires.refund · POST /tires/refund · gate offer · sandbox · answers TiresRefund@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 — tires.vin serves this noun on its two routes: / (the landing) · /1C4AJWAG9HL738132 (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 — Tires.refundFailed@1 · Tires.refundRequested@1 · Tires.refunded@1.
import { tires } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await tires.refund({"vin":"1C4AJWAG9HL738132"})curl -X POST https://apis.vin/tires/refund \
-H 'content-type: application/json' \
-d '{"vin":"1C4AJWAG9HL738132"}'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": "TiresRefund@1",
"value": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"refund": {
"id": "RF-61d784db",
"status": "issued",
"amountCents": 8800,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"refund": {
"id": "RF-61d784db",
"status": "issued",
"amountCents": 8800,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wear-systems-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}roadHazardBuy
tires.roadHazardBuy · POST /tires/road-hazard-buy · gate offer · sandbox · answers TiresRoadHazardBuy@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 — tires.vin serves this noun on its two routes: / (the landing) · /1C4AJWAG9HL738132 (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 — Tires.roadHazardBought@1 · Tires.roadHazardBuyRequested@1.
import { tires } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await tires.roadHazardBuy({"vin":"1C4AJWAG9HL738132"})curl -X POST https://apis.vin/tires/road-hazard-buy \
-H 'content-type: application/json' \
-d '{"vin":"1C4AJWAG9HL738132"}'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": "TiresRoadHazardBuy@1",
"value": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"order": {
"id": "ORD-aadb3d7d",
"item": "road-hazard coverage",
"status": "placed",
"amountCents": 8800,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"order": {
"id": "ORD-aadb3d7d",
"item": "road-hazard coverage",
"status": "placed",
"amountCents": 8800,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wear-systems-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Fulfill & operate
repair
tires.repair · POST /tires/repair · gate offer · sandbox · answers TiresRepair@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 — tires.vin serves this noun on its two routes: / (the landing) · /1C4AJWAG9HL738132 (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 — Tires.repaired@1.
import { tires } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await tires.repair({"vin":"1C4AJWAG9HL738132"})curl -X POST https://apis.vin/tires/repair \
-H 'content-type: application/json' \
-d '{"vin":"1C4AJWAG9HL738132"}'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": "TiresRepair@1",
"value": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"verdict": "pass",
"workOrder": {
"id": "WO-f5a06090",
"operation": "repair",
"status": "scheduled",
"costCents": 44000,
"currency": "USD"
}
},
"evidence": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"verdict": "pass",
"workOrder": {
"id": "WO-f5a06090",
"operation": "repair",
"status": "scheduled",
"costCents": 44000,
"currency": "USD"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wear-systems-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}inspect
tires.inspect · POST /tires/inspect · gate offer · sandbox · answers TiresInspect@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 — tires.vin serves this noun on its two routes: / (the landing) · /1C4AJWAG9HL738132 (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 — Tires.inspected@1.
import { tires } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await tires.inspect({"vin":"1C4AJWAG9HL738132"})curl -X POST https://apis.vin/tires/inspect \
-H 'content-type: application/json' \
-d '{"vin":"1C4AJWAG9HL738132"}'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": "TiresInspect@1",
"value": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"verdict": "pass",
"findings": []
},
"evidence": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"verdict": "pass",
"findings": []
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wear-systems-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}rotate
tires.rotate · POST /tires/rotate · gate offer · sandbox · answers TiresRotate@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 — tires.vin serves this noun on its two routes: / (the landing) · /1C4AJWAG9HL738132 (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 — Tires.rotateRequested@1 · Tires.rotated@1.
import { tires } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await tires.rotate({"vin":"1C4AJWAG9HL738132"})curl -X POST https://apis.vin/tires/rotate \
-H 'content-type: application/json' \
-d '{"vin":"1C4AJWAG9HL738132"}'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": "TiresRotate@1",
"value": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"verdict": "pass",
"workOrder": {
"id": "WO-958418ce",
"operation": "rotate",
"status": "scheduled",
"costCents": 44000,
"currency": "USD"
}
},
"evidence": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"verdict": "pass",
"workOrder": {
"id": "WO-958418ce",
"operation": "rotate",
"status": "scheduled",
"costCents": 44000,
"currency": "USD"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wear-systems-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Authorize & resolve
warrantyClaim
tires.warrantyClaim · POST /tires/warranty-claim · gate offer · sandbox · answers TiresWarrantyClaim@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 — tires.vin serves this noun on its two routes: / (the landing) · /1C4AJWAG9HL738132 (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 — Tires.warrantyClaimFailed@1 · Tires.warrantyClaimFiled@1 · Tires.warrantyClaimRequested@1 · WarrantyClaim.approved@1 · WarrantyClaim.reimbursed@1.
import { tires } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await tires.warrantyClaim({"vin":"1C4AJWAG9HL738132"})curl -X POST https://apis.vin/tires/warranty-claim \
-H 'content-type: application/json' \
-d '{"vin":"1C4AJWAG9HL738132"}'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": "TiresWarrantyClaim@1",
"value": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"warranty": "expired",
"claim": {
"id": "WC-f8b3bfeb",
"decision": "denied",
"reason": "coverage-expired"
}
},
"evidence": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"warranty": "expired",
"claim": {
"id": "WC-f8b3bfeb",
"decision": "denied",
"reason": "coverage-expired"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wear-systems-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Lifecycle & state
dispose
tires.dispose · POST /tires/dispose · gate offer · sandbox · answers TiresDispose@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 — tires.vin serves this noun on its two routes: / (the landing) · /1C4AJWAG9HL738132 (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 — Tires.disposeRequested@1 · Tires.disposed@1.
import { tires } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await tires.dispose({"vin":"1C4AJWAG9HL738132"})curl -X POST https://apis.vin/tires/dispose \
-H 'content-type: application/json' \
-d '{"vin":"1C4AJWAG9HL738132"}'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": "TiresDispose@1",
"value": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"verdict": "pass",
"workOrder": {
"id": "WO-facdd48a",
"operation": "dispose",
"status": "scheduled",
"costCents": 44000,
"currency": "USD"
}
},
"evidence": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"verdict": "pass",
"workOrder": {
"id": "WO-facdd48a",
"operation": "dispose",
"status": "scheduled",
"costCents": 44000,
"currency": "USD"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wear-systems-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}More actions
align
tires.align · POST /tires/align · gate offer · sandbox · answers TiresAlign@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 — tires.vin serves this noun on its two routes: / (the landing) · /1C4AJWAG9HL738132 (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 — Tires.alignFailed@1 · Tires.alignRequested@1 · Tires.aligned@1.
import { tires } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await tires.align({"vin":"1C4AJWAG9HL738132"})curl -X POST https://apis.vin/tires/align \
-H 'content-type: application/json' \
-d '{"vin":"1C4AJWAG9HL738132"}'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": "TiresAlign@1",
"value": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"verdict": "pass",
"workOrder": {
"id": "WO-a440fcd2",
"operation": "align",
"status": "scheduled",
"costCents": 44000,
"currency": "USD"
}
},
"evidence": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"verdict": "pass",
"workOrder": {
"id": "WO-a440fcd2",
"operation": "align",
"status": "scheduled",
"costCents": 44000,
"currency": "USD"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wear-systems-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}balance
tires.balance · POST /tires/balance · gate offer · sandbox · answers TiresBalance@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 — tires.vin serves this noun on its two routes: / (the landing) · /1C4AJWAG9HL738132 (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 — Tires.balanceFailed@1 · Tires.balanceRequested@1 · Tires.balanced@1.
import { tires } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await tires.balance({"vin":"1C4AJWAG9HL738132"})curl -X POST https://apis.vin/tires/balance \
-H 'content-type: application/json' \
-d '{"vin":"1C4AJWAG9HL738132"}'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": "TiresBalance@1",
"value": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"verdict": "pass",
"workOrder": {
"id": "WO-8af4db5f",
"operation": "balance",
"status": "scheduled",
"costCents": 44000,
"currency": "USD"
}
},
"evidence": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"verdict": "pass",
"workOrder": {
"id": "WO-8af4db5f",
"operation": "balance",
"status": "scheduled",
"costCents": 44000,
"currency": "USD"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wear-systems-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}fits
tires.fits · GET /tires/fits · gate none · sandbox · answers TiresFits@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — tires.vin serves this noun on its two routes: / (the landing) · /1C4AJWAG9HL738132 (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 { tires } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await tires.fits({"vin":"1C4AJWAG9HL738132"})curl 'https://apis.vin/tires/fits?vin=1C4AJWAG9HL738132'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": "TiresFits@1",
"value": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"lookup": "fits",
"component": "tire set",
"size": "225/60R17",
"loadIndex": 99,
"speedRating": "H",
"treadDepthNewMm": "8.7",
"tpms": "direct",
"fits": true,
"inStock": 12,
"unitPriceCents": 22000,
"currency": "USD",
"partSource": "aftermarket"
},
"evidence": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"lookup": "fits",
"component": "tire set",
"size": "225/60R17",
"loadIndex": 99,
"speedRating": "H",
"treadDepthNewMm": "8.7",
"tpms": "direct",
"fits": true,
"inStock": 12,
"unitPriceCents": 22000,
"currency": "USD",
"partSource": "aftermarket"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wear-systems-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}installBundle
tires.installBundle · POST /tires/install-bundle · gate offer · sandbox · answers TiresInstallBundle@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 — tires.vin serves this noun on its two routes: / (the landing) · /1C4AJWAG9HL738132 (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 — Tires.installBundleRequested@1 · Tires.installBundled@1.
import { tires } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await tires.installBundle({"vin":"1C4AJWAG9HL738132"})curl -X POST https://apis.vin/tires/install-bundle \
-H 'content-type: application/json' \
-d '{"vin":"1C4AJWAG9HL738132"}'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": "TiresInstallBundle@1",
"value": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"verdict": "pass",
"workOrder": {
"id": "WO-dcd3340c",
"operation": "installBundle",
"status": "scheduled",
"costCents": 44000,
"currency": "USD"
}
},
"evidence": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"verdict": "pass",
"workOrder": {
"id": "WO-dcd3340c",
"operation": "installBundle",
"status": "scheduled",
"costCents": 44000,
"currency": "USD"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wear-systems-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}interchange
tires.interchange · GET /tires/interchange · gate none · sandbox · answers TiresInterchange@1
No input — this capability takes no request body.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1C4AJWAG9HL738132 (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 { tires } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await tires.interchange()curl 'https://apis.vin/tires/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": "TiresInterchange@1",
"value": {
"vin": "1HGCM82633A004352",
"system": "tires",
"asOf": "2026-08-10",
"lookup": "interchange",
"component": "tire set",
"size": "225/60R17",
"loadIndex": 99,
"speedRating": "H",
"treadDepthNewMm": "8.7",
"tpms": "direct",
"fits": true,
"inStock": 24,
"unitPriceCents": 22000,
"currency": "USD",
"partSource": "aftermarket"
},
"evidence": {
"vin": "1HGCM82633A004352",
"system": "tires",
"asOf": "2026-08-10",
"lookup": "interchange",
"component": "tire set",
"size": "225/60R17",
"loadIndex": 99,
"speedRating": "H",
"treadDepthNewMm": "8.7",
"tpms": "direct",
"fits": true,
"inStock": 24,
"unitPriceCents": 22000,
"currency": "USD",
"partSource": "aftermarket"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wear-systems-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}mount
tires.mount · POST /tires/mount · gate offer · sandbox · answers TiresMount@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 — tires.vin serves this noun on its two routes: / (the landing) · /1C4AJWAG9HL738132 (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 — Tires.mountFailed@1 · Tires.mountRequested@1 · Tires.mounted@1.
import { tires } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await tires.mount({"vin":"1C4AJWAG9HL738132"})curl -X POST https://apis.vin/tires/mount \
-H 'content-type: application/json' \
-d '{"vin":"1C4AJWAG9HL738132"}'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": "TiresMount@1",
"value": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"verdict": "pass",
"workOrder": {
"id": "WO-99eb56ee",
"operation": "mount",
"status": "scheduled",
"costCents": 44000,
"currency": "USD"
}
},
"evidence": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"verdict": "pass",
"workOrder": {
"id": "WO-99eb56ee",
"operation": "mount",
"status": "scheduled",
"costCents": 44000,
"currency": "USD"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wear-systems-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}patch
tires.patch · POST /tires/patch · gate offer · sandbox · answers TiresPatch@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 — tires.vin serves this noun on its two routes: / (the landing) · /1C4AJWAG9HL738132 (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 — Tires.patchRequested@1 · Tires.patched@1.
import { tires } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await tires.patch({"vin":"1C4AJWAG9HL738132"})curl -X POST https://apis.vin/tires/patch \
-H 'content-type: application/json' \
-d '{"vin":"1C4AJWAG9HL738132"}'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": "TiresPatch@1",
"value": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"verdict": "pass",
"workOrder": {
"id": "WO-46e2467d",
"operation": "patch",
"status": "scheduled",
"costCents": 44000,
"currency": "USD"
}
},
"evidence": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"verdict": "pass",
"workOrder": {
"id": "WO-46e2467d",
"operation": "patch",
"status": "scheduled",
"costCents": 44000,
"currency": "USD"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wear-systems-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}plug
tires.plug · POST /tires/plug · gate offer · sandbox · answers TiresPlug@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 — tires.vin serves this noun on its two routes: / (the landing) · /1C4AJWAG9HL738132 (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 — Tires.plugRequested@1 · Tires.plugged@1.
import { tires } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await tires.plug({"vin":"1C4AJWAG9HL738132"})curl -X POST https://apis.vin/tires/plug \
-H 'content-type: application/json' \
-d '{"vin":"1C4AJWAG9HL738132"}'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": "TiresPlug@1",
"value": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"verdict": "pass",
"workOrder": {
"id": "WO-811c1335",
"operation": "plug",
"status": "scheduled",
"costCents": 44000,
"currency": "USD"
}
},
"evidence": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"verdict": "pass",
"workOrder": {
"id": "WO-811c1335",
"operation": "plug",
"status": "scheduled",
"costCents": 44000,
"currency": "USD"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wear-systems-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}rating
tires.rating · GET /tires/rating · gate none · sandbox · answers TiresRating@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — tires.vin serves this noun on its two routes: / (the landing) · /1C4AJWAG9HL738132 (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 { tires } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await tires.rating({"vin":"1C4AJWAG9HL738132"})curl 'https://apis.vin/tires/rating?vin=1C4AJWAG9HL738132'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": "TiresRating@1",
"value": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"lookup": "rating",
"component": "tire set",
"size": "225/60R17",
"loadIndex": 99,
"speedRating": "H",
"treadDepthNewMm": "8.7",
"tpms": "direct",
"fits": true,
"inStock": 7,
"unitPriceCents": 22000,
"currency": "USD",
"partSource": "aftermarket"
},
"evidence": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"lookup": "rating",
"component": "tire set",
"size": "225/60R17",
"loadIndex": 99,
"speedRating": "H",
"treadDepthNewMm": "8.7",
"tpms": "direct",
"fits": true,
"inStock": 7,
"unitPriceCents": 22000,
"currency": "USD",
"partSource": "aftermarket"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wear-systems-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}seasonalSwap
tires.seasonalSwap · POST /tires/seasonal-swap · gate offer · sandbox · answers TiresSeasonalSwap@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 — tires.vin serves this noun on its two routes: / (the landing) · /1C4AJWAG9HL738132 (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 — Tires.seasonalSwapped@1 · Tires.seasonalSwapRequested@1.
import { tires } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await tires.seasonalSwap({"vin":"1C4AJWAG9HL738132"})curl -X POST https://apis.vin/tires/seasonal-swap \
-H 'content-type: application/json' \
-d '{"vin":"1C4AJWAG9HL738132"}'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": "TiresSeasonalSwap@1",
"value": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"verdict": "pass",
"workOrder": {
"id": "WO-f3f65d4a",
"operation": "seasonalSwap",
"status": "scheduled",
"costCents": 44000,
"currency": "USD"
}
},
"evidence": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"verdict": "pass",
"workOrder": {
"id": "WO-f3f65d4a",
"operation": "seasonalSwap",
"status": "scheduled",
"costCents": 44000,
"currency": "USD"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wear-systems-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}store
tires.store · POST /tires/store · gate offer · sandbox · answers TiresStore@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 — tires.vin serves this noun on its two routes: / (the landing) · /1C4AJWAG9HL738132 (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 — Tires.storeRequested@1 · Tires.stored@1.
import { tires } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await tires.store({"vin":"1C4AJWAG9HL738132"})curl -X POST https://apis.vin/tires/store \
-H 'content-type: application/json' \
-d '{"vin":"1C4AJWAG9HL738132"}'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": "TiresStore@1",
"value": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"verdict": "pass",
"workOrder": {
"id": "WO-87171a92",
"operation": "store",
"status": "scheduled",
"costCents": 44000,
"currency": "USD"
}
},
"evidence": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"verdict": "pass",
"workOrder": {
"id": "WO-87171a92",
"operation": "store",
"status": "scheduled",
"costCents": 44000,
"currency": "USD"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wear-systems-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}tpmsRelearn
tires.tpmsRelearn · POST /tires/tpms-relearn · gate offer · sandbox · answers TiresTpmsRelearn@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 — tires.vin serves this noun on its two routes: / (the landing) · /1C4AJWAG9HL738132 (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 — Tires.tpmsRelearnRequested@1 · Tires.tpmsRelearned@1.
import { tires } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await tires.tpmsRelearn({"vin":"1C4AJWAG9HL738132"})curl -X POST https://apis.vin/tires/tpms-relearn \
-H 'content-type: application/json' \
-d '{"vin":"1C4AJWAG9HL738132"}'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": "TiresTpmsRelearn@1",
"value": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"verdict": "pass",
"workOrder": {
"id": "WO-5efc025a",
"operation": "tpmsRelearn",
"status": "scheduled",
"costCents": 44000,
"currency": "USD"
}
},
"evidence": {
"vin": "1C4AJWAG9HL738132",
"system": "tires",
"asOf": "2026-08-10",
"verdict": "pass",
"workOrder": {
"id": "WO-5efc025a",
"operation": "tpmsRelearn",
"status": "scheduled",
"costCents": 44000,
"currency": "USD"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "wear-systems-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.
Tires · Class model
Tires · State machine
Tires · Sequence
Generated from the catalog. Every capability, answer, gate, and entity on this page is a rendered descriptor — it cannot drift from the wire.
theft
The theft noun — identity, lifecycle, events, and every capability as an anchored section: 12 capabilities, 0 live, 12 sandbox, 0 declared.
titleWashing
The titleWashing noun — identity, lifecycle, events, and every capability as an anchored section: 3 capabilities, 0 live, 3 sandbox, 0 declared.