glass
The glass noun — identity, lifecycle, events, and every capability as an anchored section: 20 capabilities, 4 live, 16 sandbox, 0 declared.
glass is one of the estate's 317 automotive nouns — a job a car needs done. It carries 20 capabilities: 4 live, 16 sandbox, 0 declared · doors aggregator.vin.
Identity
| Noun | glass |
| Pillar | Data (facets: 7 data · 7 services · 6 commerce) |
| Capabilities | 20 — 4 live · 16 sandbox · 0 declared |
| Entities | RepairOrder |
| Doors | aggregator.vin |
| SDK | Vin.glass.* from apis.vin |
| Address | /catalog/glass#{action} — the anchor IS the wire name minus glass. |
Events
The vocabulary this noun can append to the record — 37 past-tense, versioned event types, each linked to the capability that emits it:
Glass.adasRecalibrated@1— emitted byrecalibrateAdasGlass.charged@1— emitted bypayGlass.chipRepairFailed@1— emitted bychipRepairGlass.chipRepairRequested@1— emitted bychipRepairGlass.chipRepaired@1— emitted bychipRepairGlass.completed@1— emitted byorderGlass.crackRepairFailed@1— emitted bycrackRepairGlass.crackRepairRequested@1— emitted bycrackRepairGlass.crackRepaired@1— emitted bycrackRepairGlass.damageAssessed@1— emitted bydamageAssessGlass.deductibleCollectRequested@1— emitted bydeductibleCollectGlass.deductibleCollected@1— emitted bydeductibleCollectGlass.dispatched@1— emitted byorderGlass.insuranceBillRequested@1— emitted byinsuranceBillGlass.insuranceBilled@1— emitted byinsuranceBillGlass.mobileDispatchFailed@1— emitted bymobileDispatchGlass.mobileDispatchRequested@1— emitted bymobileDispatchGlass.mobileDispatched@1— emitted bymobileDispatchGlass.ordered@1— emitted byorderGlass.paid@1— emitted bypayGlass.payFailed@1— emitted bypayGlass.payRequested@1— emitted bypayGlass.quoteRequested@1— emitted byquoteGlass.quoted@1— emitted byquoteGlass.recalibrateAdasFailed@1— emitted byrecalibrateAdasGlass.recalibrateAdasRequested@1— emitted byrecalibrateAdasGlass.recalibrated@1— emitted byrecalibrateGlass.replaceFailed@1— emitted byreplaceGlass.replaceRequested@1— emitted byreplaceGlass.replaced@1— emitted byreplaceGlass.scheduleRequested@1— emitted byscheduleGlass.scheduled@1— emitted byscheduleGlass.warrantyClaimFiled@1— emitted bywarrantyClaimOrder.placed@1— emitted byorderServiceOrder.settled@1— emitted byorder·payWarrantyClaim.approved@1— emitted bywarrantyClaimWarrantyClaim.reimbursed@1— emitted bywarrantyClaim
Discover & read
spec
glass.spec · GET /glass/spec · gate none · live · answers GlassSpec@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1C6HJTAGXML605992 (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 { glass } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await glass.spec({"vin":"1C6HJTAGXML605992"})curl 'https://apis.vin/glass/spec?vin=1C6HJTAGXML605992'availability
glass.availability · GET /glass/availability · gate none · sandbox · answers GlassAvailability@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1C6HJTAGXML605992 (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 { glass } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await glass.availability({"vin":"1C6HJTAGXML605992"})curl 'https://apis.vin/glass/availability?vin=1C6HJTAGXML605992'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": "GlassAvailability@1",
"value": {
"vin": "1C6HJTAGXML605992",
"noun": "glass",
"asOf": "2026-08-10",
"condition": "intact",
"availability": {
"inStock": true,
"etaDays": 2
}
},
"evidence": {
"vin": "1C6HJTAGXML605992",
"noun": "glass",
"asOf": "2026-08-10",
"condition": "intact",
"availability": {
"inStock": true,
"etaDays": 2
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "condition-care-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}fitment
glass.fitment · GET /glass/fitment · gate none · live · answers GlassFitment@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1C6HJTAGXML605992 (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 { glass } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await glass.fitment({"vin":"1C6HJTAGXML605992"})curl 'https://apis.vin/glass/fitment?vin=1C6HJTAGXML605992'damageAssess
glass.damageAssess · GET /glass/damage-assess · gate none · sandbox · answers GlassDamageAssess@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1C6HJTAGXML605992 (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 — Glass.damageAssessed@1.
import { glass } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await glass.damageAssess({"vin":"1C6HJTAGXML605992"})curl 'https://apis.vin/glass/damage-assess?vin=1C6HJTAGXML605992'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": "GlassDamageAssess@1",
"value": {
"vin": "1C6HJTAGXML605992",
"noun": "glass",
"asOf": "2026-08-10",
"condition": "intact",
"glass": {
"condition": "intact",
"repairable": false,
"replaceRequired": false
}
},
"evidence": {
"vin": "1C6HJTAGXML605992",
"noun": "glass",
"asOf": "2026-08-10",
"condition": "intact",
"glass": {
"condition": "intact",
"repairable": false,
"replaceRequired": false
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "condition-care-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Quote & price
quote
glass.quote · POST /glass/quote · gate offer · sandbox · answers GlassQuote@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) · /1C6HJTAGXML605992 (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 — Glass.quoteRequested@1 · Glass.quoted@1.
import { glass } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await glass.quote({"vin":"1C6HJTAGXML605992"})curl -X POST https://apis.vin/glass/quote \
-H 'content-type: application/json' \
-d '{"vin":"1C6HJTAGXML605992"}'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": "GlassQuote@1",
"value": {
"vin": "1C6HJTAGXML605992",
"quoteId": "DQ-1",
"serviceType": "recon",
"costCents": 39880,
"priceCents": 51844,
"marginCents": 11964,
"currency": "USD",
"etaMinDays": 1,
"etaMaxDays": 5,
"rush": false,
"expires": "2026-08-17T00:00:00.000Z"
},
"evidence": {
"vin": "1C6HJTAGXML605992",
"quoteId": "DQ-1",
"serviceType": "recon",
"costCents": 39880,
"priceCents": 51844,
"marginCents": 11964,
"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
glass.price · GET /glass/price · gate none · live · answers GlassPrice@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1C6HJTAGXML605992 (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 { glass } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await glass.price({"vin":"1C6HJTAGXML605992"})curl 'https://apis.vin/glass/price?vin=1C6HJTAGXML605992'priceLookup
glass.priceLookup · GET /glass/price-lookup · gate none · live · answers GlassPriceLookup@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1C6HJTAGXML605992 (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 { glass } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await glass.priceLookup({"vin":"1C6HJTAGXML605992"})curl 'https://apis.vin/glass/price-lookup?vin=1C6HJTAGXML605992'Apply & book
order
glass.order · POST /glass/order · gate offer · sandbox · answers GlassOrder@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) · /1C6HJTAGXML605992 (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 — Glass.completed@1 · Glass.dispatched@1 · Glass.ordered@1 · Order.placed@1 · ServiceOrder.settled@1.
import { glass } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await glass.order({"vin":"1C6HJTAGXML605992"})curl -X POST https://apis.vin/glass/order \
-H 'content-type: application/json' \
-d '{"vin":"1C6HJTAGXML605992"}'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": "GlassOrder@1",
"value": {
"vin": "1C6HJTAGXML605992",
"noun": "glass",
"asOf": "2026-08-10",
"condition": "intact",
"order": {
"id": "ORD-16e01705",
"item": "windshield",
"status": "placed",
"amountCents": 42000,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "1C6HJTAGXML605992",
"noun": "glass",
"asOf": "2026-08-10",
"condition": "intact",
"order": {
"id": "ORD-16e01705",
"item": "windshield",
"status": "placed",
"amountCents": 42000,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "condition-care-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}schedule
glass.schedule · POST /glass/schedule · gate offer · sandbox · answers GlassSchedule@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) · /1C6HJTAGXML605992 (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 — Glass.scheduleRequested@1 · Glass.scheduled@1.
import { glass } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await glass.schedule({"vin":"1C6HJTAGXML605992"})curl -X POST https://apis.vin/glass/schedule \
-H 'content-type: application/json' \
-d '{"vin":"1C6HJTAGXML605992"}'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": "GlassSchedule@1",
"value": {
"vin": "1C6HJTAGXML605992",
"noun": "glass",
"asOf": "2026-08-10",
"condition": "intact",
"appointment": {
"status": "nothing-to-schedule"
}
},
"evidence": {
"vin": "1C6HJTAGXML605992",
"noun": "glass",
"asOf": "2026-08-10",
"condition": "intact",
"appointment": {
"status": "nothing-to-schedule"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "condition-care-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}mobileDispatch
glass.mobileDispatch · POST /glass/mobile-dispatch · gate offer · sandbox · answers GlassMobileDispatch@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) · /1C6HJTAGXML605992 (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 — Glass.mobileDispatchFailed@1 · Glass.mobileDispatchRequested@1 · Glass.mobileDispatched@1.
import { glass } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await glass.mobileDispatch({"vin":"1C6HJTAGXML605992"})curl -X POST https://apis.vin/glass/mobile-dispatch \
-H 'content-type: application/json' \
-d '{"vin":"1C6HJTAGXML605992"}'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": "GlassMobileDispatch@1",
"value": {
"vin": "1C6HJTAGXML605992",
"noun": "glass",
"asOf": "2026-08-10",
"condition": "intact",
"appointment": {
"status": "nothing-to-schedule"
}
},
"evidence": {
"vin": "1C6HJTAGXML605992",
"noun": "glass",
"asOf": "2026-08-10",
"condition": "intact",
"appointment": {
"status": "nothing-to-schedule"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "condition-care-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Pay & settle
pay
glass.pay · POST /glass/pay · gate offer · sandbox · answers GlassPay@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) · /1C6HJTAGXML605992 (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 — Glass.charged@1 · Glass.paid@1 · Glass.payFailed@1 · Glass.payRequested@1 · ServiceOrder.settled@1.
import { glass } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await glass.pay({"vin":"1C6HJTAGXML605992"})curl -X POST https://apis.vin/glass/pay \
-H 'content-type: application/json' \
-d '{"vin":"1C6HJTAGXML605992"}'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": "GlassPay@1",
"value": {
"vin": "1C6HJTAGXML605992",
"noun": "glass",
"asOf": "2026-08-10",
"condition": "intact",
"payment": {
"id": "PAY-e0f19233",
"status": "settled",
"amountCents": 8900,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "1C6HJTAGXML605992",
"noun": "glass",
"asOf": "2026-08-10",
"condition": "intact",
"payment": {
"id": "PAY-e0f19233",
"status": "settled",
"amountCents": 8900,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "condition-care-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}deductibleCollect
glass.deductibleCollect · POST /glass/deductible-collect · gate offer · sandbox · answers GlassDeductibleCollect@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) · /1C6HJTAGXML605992 (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 — Glass.deductibleCollectRequested@1 · Glass.deductibleCollected@1.
import { glass } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await glass.deductibleCollect({"vin":"1C6HJTAGXML605992"})curl -X POST https://apis.vin/glass/deductible-collect \
-H 'content-type: application/json' \
-d '{"vin":"1C6HJTAGXML605992"}'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": "GlassDeductibleCollect@1",
"value": {
"vin": "1C6HJTAGXML605992",
"noun": "glass",
"asOf": "2026-08-10",
"condition": "intact",
"collection": {
"amountCents": 10000,
"currency": "USD",
"status": "collected"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "1C6HJTAGXML605992",
"noun": "glass",
"asOf": "2026-08-10",
"condition": "intact",
"collection": {
"amountCents": 10000,
"currency": "USD",
"status": "collected"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "condition-care-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}insuranceBill
glass.insuranceBill · POST /glass/insurance-bill · gate offer · sandbox · answers GlassInsuranceBill@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) · /1C6HJTAGXML605992 (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 — Glass.insuranceBillRequested@1 · Glass.insuranceBilled@1.
import { glass } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await glass.insuranceBill({"vin":"1C6HJTAGXML605992"})curl -X POST https://apis.vin/glass/insurance-bill \
-H 'content-type: application/json' \
-d '{"vin":"1C6HJTAGXML605992"}'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": "GlassInsuranceBill@1",
"value": {
"vin": "1C6HJTAGXML605992",
"noun": "glass",
"asOf": "2026-08-10",
"condition": "intact",
"bill": {
"id": "GB-603415c5",
"billedTo": "policy",
"amountCents": 8900,
"currency": "USD",
"status": "submitted"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "1C6HJTAGXML605992",
"noun": "glass",
"asOf": "2026-08-10",
"condition": "intact",
"bill": {
"id": "GB-603415c5",
"billedTo": "policy",
"amountCents": 8900,
"currency": "USD",
"status": "submitted"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "condition-care-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Fulfill & operate
replace
glass.replace · POST /glass/replace · gate offer · sandbox · answers GlassReplace@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) · /1C6HJTAGXML605992 (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 — Glass.replaceFailed@1 · Glass.replaceRequested@1 · Glass.replaced@1.
import { glass } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await glass.replace({"vin":"1C6HJTAGXML605992"})curl -X POST https://apis.vin/glass/replace \
-H 'content-type: application/json' \
-d '{"vin":"1C6HJTAGXML605992"}'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": "GlassReplace@1",
"value": {
"vin": "1C6HJTAGXML605992",
"noun": "glass",
"asOf": "2026-08-10",
"condition": "intact",
"replacement": {
"status": "no-replacement-needed"
}
},
"evidence": {
"vin": "1C6HJTAGXML605992",
"noun": "glass",
"asOf": "2026-08-10",
"condition": "intact",
"replacement": {
"status": "no-replacement-needed"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "condition-care-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}chipRepair
glass.chipRepair · POST /glass/chip-repair · gate offer · sandbox · answers GlassChipRepair@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) · /1C6HJTAGXML605992 (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 — Glass.chipRepairFailed@1 · Glass.chipRepairRequested@1 · Glass.chipRepaired@1.
import { glass } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await glass.chipRepair({"vin":"1C6HJTAGXML605992"})curl -X POST https://apis.vin/glass/chip-repair \
-H 'content-type: application/json' \
-d '{"vin":"1C6HJTAGXML605992"}'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": "GlassChipRepair@1",
"value": {
"vin": "1C6HJTAGXML605992",
"noun": "glass",
"asOf": "2026-08-10",
"condition": "intact",
"repair": {
"status": "no-damage-found"
}
},
"evidence": {
"vin": "1C6HJTAGXML605992",
"noun": "glass",
"asOf": "2026-08-10",
"condition": "intact",
"repair": {
"status": "no-damage-found"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "condition-care-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}crackRepair
glass.crackRepair · POST /glass/crack-repair · gate offer · sandbox · answers GlassCrackRepair@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) · /1C6HJTAGXML605992 (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 — Glass.crackRepairFailed@1 · Glass.crackRepairRequested@1 · Glass.crackRepaired@1.
import { glass } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await glass.crackRepair({"vin":"1C6HJTAGXML605992"})curl -X POST https://apis.vin/glass/crack-repair \
-H 'content-type: application/json' \
-d '{"vin":"1C6HJTAGXML605992"}'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": "GlassCrackRepair@1",
"value": {
"vin": "1C6HJTAGXML605992",
"noun": "glass",
"asOf": "2026-08-10",
"condition": "intact",
"repair": {
"status": "no-damage-found"
}
},
"evidence": {
"vin": "1C6HJTAGXML605992",
"noun": "glass",
"asOf": "2026-08-10",
"condition": "intact",
"repair": {
"status": "no-damage-found"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "condition-care-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}recalibrate
glass.recalibrate · POST /glass/recalibrate · gate offer · sandbox · answers GlassRecalibrate@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) · /1C6HJTAGXML605992 (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 — Glass.recalibrated@1.
import { glass } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await glass.recalibrate({"vin":"1C6HJTAGXML605992"})curl -X POST https://apis.vin/glass/recalibrate \
-H 'content-type: application/json' \
-d '{"vin":"1C6HJTAGXML605992"}'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": "GlassRecalibrate@1",
"value": {
"vin": "1C6HJTAGXML605992",
"noun": "glass",
"asOf": "2026-08-10",
"condition": "intact",
"calibration": {
"standing": "not-required",
"status": "no-calibration-required"
}
},
"evidence": {
"vin": "1C6HJTAGXML605992",
"noun": "glass",
"asOf": "2026-08-10",
"condition": "intact",
"calibration": {
"standing": "not-required",
"status": "no-calibration-required"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "condition-care-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Authorize & resolve
warrantyClaim
glass.warrantyClaim · POST /glass/warranty-claim · gate offer · sandbox · answers GlassWarrantyClaim@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) · /1C6HJTAGXML605992 (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 — Glass.warrantyClaimFiled@1 · WarrantyClaim.approved@1 · WarrantyClaim.reimbursed@1.
import { glass } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await glass.warrantyClaim({"vin":"1C6HJTAGXML605992"})curl -X POST https://apis.vin/glass/warranty-claim \
-H 'content-type: application/json' \
-d '{"vin":"1C6HJTAGXML605992"}'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": "GlassWarrantyClaim@1",
"value": {
"vin": "1C6HJTAGXML605992",
"noun": "glass",
"asOf": "2026-08-10",
"condition": "intact",
"warranty": "active",
"claim": {
"id": "WC-89c852dd",
"decision": "approved"
}
},
"evidence": {
"vin": "1C6HJTAGXML605992",
"noun": "glass",
"asOf": "2026-08-10",
"condition": "intact",
"warranty": "active",
"claim": {
"id": "WC-89c852dd",
"decision": "approved"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "condition-care-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}More actions
oemVsAftermarket
glass.oemVsAftermarket · GET /glass/oem-vs-aftermarket · gate none · sandbox · answers GlassOemVsAftermarket@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1C6HJTAGXML605992 (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 { glass } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await glass.oemVsAftermarket({"vin":"1C6HJTAGXML605992"})curl 'https://apis.vin/glass/oem-vs-aftermarket?vin=1C6HJTAGXML605992'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": "GlassOemVsAftermarket@1",
"value": {
"vin": "1C6HJTAGXML605992",
"noun": "glass",
"asOf": "2026-08-10",
"condition": "intact",
"comparison": {
"oemCents": 42000,
"aftermarketCents": 26000,
"currency": "USD",
"recommendation": "oem"
}
},
"evidence": {
"vin": "1C6HJTAGXML605992",
"noun": "glass",
"asOf": "2026-08-10",
"condition": "intact",
"comparison": {
"oemCents": 42000,
"aftermarketCents": 26000,
"currency": "USD",
"recommendation": "oem"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "condition-care-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}recalibrateAdas
glass.recalibrateAdas · POST /glass/recalibrate-adas · gate offer · sandbox · answers GlassRecalibrateAdas@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) · /1C6HJTAGXML605992 (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 — Glass.recalibrateAdasFailed@1 · Glass.recalibrateAdasRequested@1 · Glass.adasRecalibrated@1.
import { glass } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await glass.recalibrateAdas({"vin":"1C6HJTAGXML605992"})curl -X POST https://apis.vin/glass/recalibrate-adas \
-H 'content-type: application/json' \
-d '{"vin":"1C6HJTAGXML605992"}'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": "GlassRecalibrateAdas@1",
"value": {
"vin": "1C6HJTAGXML605992",
"noun": "glass",
"asOf": "2026-08-10",
"condition": "intact",
"calibration": {
"standing": "not-required",
"status": "no-calibration-required"
}
},
"evidence": {
"vin": "1C6HJTAGXML605992",
"noun": "glass",
"asOf": "2026-08-10",
"condition": "intact",
"calibration": {
"standing": "not-required",
"status": "no-calibration-required"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "condition-care-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.
Glass · Class model
Glass · State machine
Glass · Sequence
Generated from the catalog. Every capability, answer, gate, and entity on this page is a rendered descriptor — it cannot drift from the wire.