collision
The collision noun — identity, lifecycle, events, and every capability as an anchored section: 22 capabilities, 0 live, 22 sandbox, 0 declared.
collision is one of the estate's 317 automotive nouns — a job a car needs done. It carries 22 capabilities: 0 live, 22 sandbox, 0 declared · doors aggregator.vin.
Identity
| Noun | collision |
| Pillar | Services (facets: 6 data · 9 services · 7 commerce) |
| Capabilities | 22 — 0 live · 22 sandbox · 0 declared |
| Entities | Collision |
| Doors | aggregator.vin |
| SDK | Vin.collision.* from apis.vin |
| Address | /catalog/collision#{action} — the anchor IS the wire name minus collision. |
Lifecycle
Collision — CollisionFSM: 10 states, 9 transitions — Scheduled · Estimated · Blueprinted · TornDown · Repaired · Reassembled · Calibrated · QCed · Completed · Settled. Each transition is a past-tense event on the record.
Events
The vocabulary this noun can append to the record — 40 past-tense, versioned event types, each linked to the capability that emits it:
Collision.adasCalibrated@1— emitted bycalibrateAdasCollision.approveSupplementRequested@1— emitted byapproveSupplementCollision.blueprintRequested@1— emitted byblueprintCollision.blueprinted@1— emitted byblueprintCollision.calibrateAdasRequested@1— emitted bycalibrateAdasCollision.calibrateAdased@1— emitted bycalibrateAdasCollision.claimBillRequested@1— emitted byclaimBillCollision.claimBilled@1— emitted byclaimBillCollision.completeRequested@1— emitted bycompleteCollision.completed@1— emitted bycomplete·orderCollision.deductibleCollectRequested@1— emitted bydeductibleCollectCollision.deductibleCollected@1— emitted bydeductibleCollectCollision.dispatched@1— emitted byorderCollision.estimateRequested@1— emitted byestimateCollision.estimated@1— emitted byestimateCollision.framePullFailed@1— emitted byframePullCollision.framePullRequested@1— emitted byframePullCollision.framePulled@1— emitted byframePullCollision.ordered@1— emitted byorderCollision.paid@1— emitted bypayCollision.payFailed@1— emitted bypayCollision.payRequested@1— emitted bypayCollision.qcRequested@1— emitted byqcCollision.qced@1— emitted byqcCollision.reassembleRequested@1— emitted byreassembleCollision.reassembled@1— emitted byreassembleCollision.repairFailed@1— emitted byrepairCollision.repairRequested@1— emitted byrepairCollision.repaired@1— emitted byrepairCollision.scheduleRequested@1— emitted byscheduleCollision.scheduled@1— emitted byscheduleCollision.settleFailed@1— emitted bysettleCollision.settleRequested@1— emitted bysettleCollision.settled@1— emitted bysettleCollision.severitied@1— emitted byseverityCollision.supplementApproved@1— emitted byapproveSupplementCollision.teardownFailed@1— emitted byteardownCollision.teardownRequested@1— emitted byteardownCollision.teardowned@1— emitted byteardownServiceOrder.settled@1— emitted byorder
Discover & read
history
collision.history · GET /collisions/history · gate none · sandbox · answers CollisionHistory@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /5NMS2DAJ7PH655610 (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 { collision } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await collision.history({"vin":"5NMS2DAJ7PH655610"})curl 'https://apis.vin/collisions/history?vin=5NMS2DAJ7PH655610'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": "CollisionHistory@1",
"value": {
"vin": "5NMS2DAJ7PH655610",
"noun": "collision",
"asOf": "2026-08-10",
"position": "NoLoss",
"events": [
{
"date": "2024-03-14",
"kind": "routine",
"description": "routine collision repair record"
}
]
},
"evidence": {
"vin": "5NMS2DAJ7PH655610",
"noun": "collision",
"asOf": "2026-08-10",
"position": "NoLoss",
"events": [
{
"date": "2024-03-14",
"kind": "routine",
"description": "routine collision repair record"
}
]
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "shop-arc-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}status
collision.status · GET /collisions/status · gate none · sandbox · answers CollisionStatus@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /5NMS2DAJ7PH655610 (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 { collision } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await collision.status({"vin":"5NMS2DAJ7PH655610"})curl 'https://apis.vin/collisions/status?vin=5NMS2DAJ7PH655610'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": "CollisionStatus@1",
"value": {
"vin": "5NMS2DAJ7PH655610",
"noun": "collision",
"asOf": "2026-08-10",
"position": "NoLoss",
"repairId": "COL-d71f1110",
"open": false,
"grade": "clean"
},
"evidence": {
"vin": "5NMS2DAJ7PH655610",
"noun": "collision",
"asOf": "2026-08-10",
"position": "NoLoss",
"repairId": "COL-d71f1110",
"open": false,
"grade": "clean"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "shop-arc-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}photos
collision.photos · GET /collisions/photos · gate none · sandbox · answers CollisionPhotos@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /5NMS2DAJ7PH655610 (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 { collision } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await collision.photos({"vin":"5NMS2DAJ7PH655610"})curl 'https://apis.vin/collisions/photos?vin=5NMS2DAJ7PH655610'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": "CollisionPhotos@1",
"value": {
"vin": "5NMS2DAJ7PH655610",
"noun": "collision",
"asOf": "2026-08-10",
"position": "NoLoss",
"photos": 0,
"damagePanels": 0
},
"evidence": {
"vin": "5NMS2DAJ7PH655610",
"noun": "collision",
"asOf": "2026-08-10",
"position": "NoLoss",
"photos": 0,
"damagePanels": 0
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "shop-arc-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Quote & price
estimate
collision.estimate · POST /collisions/estimate · gate offer · sandbox · answers CollisionEstimate@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) · /5NMS2DAJ7PH655610 (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 — Collision.estimateRequested@1 · Collision.estimated@1.
import { collision } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await collision.estimate({"vin":"5NMS2DAJ7PH655610"})curl -X POST https://apis.vin/collisions/estimate \
-H 'content-type: application/json' \
-d '{"vin":"5NMS2DAJ7PH655610"}'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": "CollisionEstimate@1",
"value": {
"vin": "5NMS2DAJ7PH655610",
"noun": "collision",
"asOf": "2026-08-10",
"position": "NoLoss",
"status": "no-loss-recorded",
"amountCents": 0,
"currency": "USD"
},
"evidence": {
"vin": "5NMS2DAJ7PH655610",
"noun": "collision",
"asOf": "2026-08-10",
"position": "NoLoss",
"status": "no-loss-recorded",
"amountCents": 0,
"currency": "USD"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "shop-arc-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Apply & book
order
collision.order · POST /collisions/order · gate offer · sandbox · answers CollisionOrder@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) · /5NMS2DAJ7PH655610 (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 — Collision.completed@1 · Collision.dispatched@1 · Collision.ordered@1 · ServiceOrder.settled@1.
import { collision } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await collision.order({"vin":"5NMS2DAJ7PH655610"})curl -X POST https://apis.vin/collisions/order \
-H 'content-type: application/json' \
-d '{"vin":"5NMS2DAJ7PH655610"}'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": "CollisionOrder@1",
"value": {
"vin": "5NMS2DAJ7PH655610",
"noun": "collision",
"asOf": "2026-08-10",
"position": "NoLoss",
"order": {
"id": "ORD-68cf30e7",
"item": "collision parts",
"status": "nothing-to-order",
"amountCents": 0,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "5NMS2DAJ7PH655610",
"noun": "collision",
"asOf": "2026-08-10",
"position": "NoLoss",
"order": {
"id": "ORD-68cf30e7",
"item": "collision parts",
"status": "nothing-to-order",
"amountCents": 0,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "shop-arc-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}schedule
collision.schedule · POST /collisions/schedule · gate offer · sandbox · answers CollisionSchedule@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) · /5NMS2DAJ7PH655610 (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 — Collision.scheduleRequested@1 · Collision.scheduled@1.
import { collision } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await collision.schedule({"vin":"5NMS2DAJ7PH655610"})curl -X POST https://apis.vin/collisions/schedule \
-H 'content-type: application/json' \
-d '{"vin":"5NMS2DAJ7PH655610"}'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": "CollisionSchedule@1",
"value": {
"vin": "5NMS2DAJ7PH655610",
"noun": "collision",
"asOf": "2026-08-10",
"position": "NoLoss",
"status": "no-open-repair"
},
"evidence": {
"vin": "5NMS2DAJ7PH655610",
"noun": "collision",
"asOf": "2026-08-10",
"position": "NoLoss",
"status": "no-open-repair"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "shop-arc-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Pay & settle
pay
collision.pay · POST /collisions/pay · gate offer · sandbox · answers CollisionPay@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) · /5NMS2DAJ7PH655610 (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 — Collision.paid@1 · Collision.payFailed@1 · Collision.payRequested@1.
import { collision } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await collision.pay({"vin":"5NMS2DAJ7PH655610"})curl -X POST https://apis.vin/collisions/pay \
-H 'content-type: application/json' \
-d '{"vin":"5NMS2DAJ7PH655610"}'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": "CollisionPay@1",
"value": {
"vin": "5NMS2DAJ7PH655610",
"noun": "collision",
"asOf": "2026-08-10",
"position": "NoLoss",
"payment": {
"id": "PAY-4b720d99",
"status": "settled",
"amountCents": 0,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "5NMS2DAJ7PH655610",
"noun": "collision",
"asOf": "2026-08-10",
"position": "NoLoss",
"payment": {
"id": "PAY-4b720d99",
"status": "settled",
"amountCents": 0,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "shop-arc-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}settle
collision.settle · POST /collisions/settle · gate offer · sandbox · answers CollisionSettle@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) · /5NMS2DAJ7PH655610 (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 — Collision.settleFailed@1 · Collision.settleRequested@1 · Collision.settled@1.
import { collision } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await collision.settle({"vin":"5NMS2DAJ7PH655610"})curl -X POST https://apis.vin/collisions/settle \
-H 'content-type: application/json' \
-d '{"vin":"5NMS2DAJ7PH655610"}'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": "CollisionSettle@1",
"value": {
"vin": "5NMS2DAJ7PH655610",
"noun": "collision",
"asOf": "2026-08-10",
"position": "NoLoss",
"payment": {
"id": "PAY-9e521e8a",
"status": "settled",
"amountCents": 0,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "5NMS2DAJ7PH655610",
"noun": "collision",
"asOf": "2026-08-10",
"position": "NoLoss",
"payment": {
"id": "PAY-9e521e8a",
"status": "settled",
"amountCents": 0,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "shop-arc-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}deductibleCollect
collision.deductibleCollect · POST /collisions/deductible-collect · gate offer · sandbox · answers CollisionDeductibleCollect@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) · /5NMS2DAJ7PH655610 (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 — Collision.deductibleCollectRequested@1 · Collision.deductibleCollected@1.
import { collision } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await collision.deductibleCollect({"vin":"5NMS2DAJ7PH655610"})curl -X POST https://apis.vin/collisions/deductible-collect \
-H 'content-type: application/json' \
-d '{"vin":"5NMS2DAJ7PH655610"}'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": "CollisionDeductibleCollect@1",
"value": {
"vin": "5NMS2DAJ7PH655610",
"noun": "collision",
"asOf": "2026-08-10",
"position": "NoLoss",
"deductible": {
"amountCents": 0,
"currency": "USD",
"status": "no-claim"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "5NMS2DAJ7PH655610",
"noun": "collision",
"asOf": "2026-08-10",
"position": "NoLoss",
"deductible": {
"amountCents": 0,
"currency": "USD",
"status": "no-claim"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "shop-arc-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}claimBill
collision.claimBill · POST /collisions/claim-bill · gate offer · sandbox · answers CollisionClaimBill@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) · /5NMS2DAJ7PH655610 (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 — Collision.claimBillRequested@1 · Collision.claimBilled@1.
import { collision } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await collision.claimBill({"vin":"5NMS2DAJ7PH655610"})curl -X POST https://apis.vin/collisions/claim-bill \
-H 'content-type: application/json' \
-d '{"vin":"5NMS2DAJ7PH655610"}'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": "CollisionClaimBill@1",
"value": {
"vin": "5NMS2DAJ7PH655610",
"noun": "collision",
"asOf": "2026-08-10",
"position": "NoLoss",
"bill": {
"id": "CB-40bec33a",
"billTo": "insurer",
"status": "billed",
"amountCents": 0,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "5NMS2DAJ7PH655610",
"noun": "collision",
"asOf": "2026-08-10",
"position": "NoLoss",
"bill": {
"id": "CB-40bec33a",
"billTo": "insurer",
"status": "billed",
"amountCents": 0,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "shop-arc-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Fulfill & operate
repair
collision.repair · POST /collisions/repair · gate offer · sandbox · answers CollisionRepair@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) · /5NMS2DAJ7PH655610 (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 — Collision.repairFailed@1 · Collision.repairRequested@1 · Collision.repaired@1.
import { collision } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await collision.repair({"vin":"5NMS2DAJ7PH655610"})curl -X POST https://apis.vin/collisions/repair \
-H 'content-type: application/json' \
-d '{"vin":"5NMS2DAJ7PH655610"}'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": "CollisionRepair@1",
"value": {
"vin": "5NMS2DAJ7PH655610",
"noun": "collision",
"asOf": "2026-08-10",
"position": "NoLoss",
"operation": "repair",
"status": "no-open-repair"
},
"evidence": {
"vin": "5NMS2DAJ7PH655610",
"noun": "collision",
"asOf": "2026-08-10",
"position": "NoLoss",
"operation": "repair",
"status": "no-open-repair"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "shop-arc-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}complete
collision.complete · POST /collisions/complete · gate offer · sandbox · answers CollisionComplete@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) · /5NMS2DAJ7PH655610 (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 — Collision.completeRequested@1 · Collision.completed@1.
import { collision } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await collision.complete({"vin":"5NMS2DAJ7PH655610"})curl -X POST https://apis.vin/collisions/complete \
-H 'content-type: application/json' \
-d '{"vin":"5NMS2DAJ7PH655610"}'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": "CollisionComplete@1",
"value": {
"vin": "5NMS2DAJ7PH655610",
"noun": "collision",
"asOf": "2026-08-10",
"position": "NoLoss",
"operation": "complete",
"status": "no-open-repair"
},
"evidence": {
"vin": "5NMS2DAJ7PH655610",
"noun": "collision",
"asOf": "2026-08-10",
"position": "NoLoss",
"operation": "complete",
"status": "no-open-repair"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "shop-arc-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}reassemble
collision.reassemble · POST /collisions/reassemble · gate offer · sandbox · answers CollisionReassemble@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) · /5NMS2DAJ7PH655610 (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 — Collision.reassembleRequested@1 · Collision.reassembled@1.
import { collision } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await collision.reassemble({"vin":"5NMS2DAJ7PH655610"})curl -X POST https://apis.vin/collisions/reassemble \
-H 'content-type: application/json' \
-d '{"vin":"5NMS2DAJ7PH655610"}'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": "CollisionReassemble@1",
"value": {
"vin": "5NMS2DAJ7PH655610",
"noun": "collision",
"asOf": "2026-08-10",
"position": "NoLoss",
"operation": "reassemble",
"status": "no-open-repair"
},
"evidence": {
"vin": "5NMS2DAJ7PH655610",
"noun": "collision",
"asOf": "2026-08-10",
"position": "NoLoss",
"operation": "reassemble",
"status": "no-open-repair"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "shop-arc-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}blueprint
collision.blueprint · POST /collisions/blueprint · gate offer · sandbox · answers CollisionBlueprint@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) · /5NMS2DAJ7PH655610 (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 — Collision.blueprintRequested@1 · Collision.blueprinted@1.
import { collision } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await collision.blueprint({"vin":"5NMS2DAJ7PH655610"})curl -X POST https://apis.vin/collisions/blueprint \
-H 'content-type: application/json' \
-d '{"vin":"5NMS2DAJ7PH655610"}'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": "CollisionBlueprint@1",
"value": {
"vin": "5NMS2DAJ7PH655610",
"noun": "collision",
"asOf": "2026-08-10",
"position": "NoLoss",
"operation": "blueprint",
"status": "no-open-repair"
},
"evidence": {
"vin": "5NMS2DAJ7PH655610",
"noun": "collision",
"asOf": "2026-08-10",
"position": "NoLoss",
"operation": "blueprint",
"status": "no-open-repair"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "shop-arc-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}More actions
approveSupplement
collision.approveSupplement · POST /collisions/approve-supplement · gate offer · sandbox · answers CollisionApproveSupplement@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) · /5NMS2DAJ7PH655610 (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 — Collision.approveSupplementRequested@1 · Collision.supplementApproved@1.
import { collision } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await collision.approveSupplement({"vin":"5NMS2DAJ7PH655610"})curl -X POST https://apis.vin/collisions/approve-supplement \
-H 'content-type: application/json' \
-d '{"vin":"5NMS2DAJ7PH655610"}'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": "CollisionApproveSupplement@1",
"value": {
"vin": "5NMS2DAJ7PH655610",
"noun": "collision",
"asOf": "2026-08-10",
"position": "NoLoss",
"operation": "approveSupplement",
"status": "no-open-repair"
},
"evidence": {
"vin": "5NMS2DAJ7PH655610",
"noun": "collision",
"asOf": "2026-08-10",
"position": "NoLoss",
"operation": "approveSupplement",
"status": "no-open-repair"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "shop-arc-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}calibrateAdas
collision.calibrateAdas · POST /collisions/calibrate-adas · gate offer · sandbox · answers CollisionCalibrateAdas@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) · /5NMS2DAJ7PH655610 (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 — Collision.calibrateAdasRequested@1 · Collision.adasCalibrated@1 · Collision.calibrateAdased@1.
import { collision } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await collision.calibrateAdas({"vin":"5NMS2DAJ7PH655610"})curl -X POST https://apis.vin/collisions/calibrate-adas \
-H 'content-type: application/json' \
-d '{"vin":"5NMS2DAJ7PH655610"}'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": "CollisionCalibrateAdas@1",
"value": {
"vin": "5NMS2DAJ7PH655610",
"noun": "collision",
"asOf": "2026-08-10",
"position": "NoLoss",
"operation": "calibrateAdas",
"status": "no-open-repair"
},
"evidence": {
"vin": "5NMS2DAJ7PH655610",
"noun": "collision",
"asOf": "2026-08-10",
"position": "NoLoss",
"operation": "calibrateAdas",
"status": "no-open-repair"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "shop-arc-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}framePull
collision.framePull · POST /collisions/frame-pull · gate offer · sandbox · answers CollisionFramePull@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) · /5NMS2DAJ7PH655610 (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 — Collision.framePullFailed@1 · Collision.framePullRequested@1 · Collision.framePulled@1.
import { collision } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await collision.framePull({"vin":"5NMS2DAJ7PH655610"})curl -X POST https://apis.vin/collisions/frame-pull \
-H 'content-type: application/json' \
-d '{"vin":"5NMS2DAJ7PH655610"}'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": "CollisionFramePull@1",
"value": {
"vin": "5NMS2DAJ7PH655610",
"noun": "collision",
"asOf": "2026-08-10",
"position": "NoLoss",
"operation": "framePull",
"status": "no-open-repair"
},
"evidence": {
"vin": "5NMS2DAJ7PH655610",
"noun": "collision",
"asOf": "2026-08-10",
"position": "NoLoss",
"operation": "framePull",
"status": "no-open-repair"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "shop-arc-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}qc
collision.qc · POST /collisions/qc · gate offer · sandbox · answers CollisionQc@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) · /5NMS2DAJ7PH655610 (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 — Collision.qcRequested@1 · Collision.qced@1.
import { collision } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await collision.qc({"vin":"5NMS2DAJ7PH655610"})curl -X POST https://apis.vin/collisions/qc \
-H 'content-type: application/json' \
-d '{"vin":"5NMS2DAJ7PH655610"}'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": "CollisionQc@1",
"value": {
"vin": "5NMS2DAJ7PH655610",
"noun": "collision",
"asOf": "2026-08-10",
"position": "NoLoss",
"operation": "qc",
"status": "no-open-repair"
},
"evidence": {
"vin": "5NMS2DAJ7PH655610",
"noun": "collision",
"asOf": "2026-08-10",
"position": "NoLoss",
"operation": "qc",
"status": "no-open-repair"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "shop-arc-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}severity
collision.severity · GET /collisions/severity · gate key · sandbox · answers CollisionSeverity@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /5NMS2DAJ7PH655610 (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 — Collision.severitied@1.
import { collision } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await collision.severity({"vin":"5NMS2DAJ7PH655610"})curl 'https://apis.vin/collisions/severity?vin=5NMS2DAJ7PH655610'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": "CollisionSeverity@1",
"value": {
"vin": "5NMS2DAJ7PH655610",
"noun": "collision",
"asOf": "2026-08-10",
"position": "NoLoss",
"severity": "none",
"grade": "clean"
},
"evidence": {
"vin": "5NMS2DAJ7PH655610",
"noun": "collision",
"asOf": "2026-08-10",
"position": "NoLoss",
"severity": "none",
"grade": "clean"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "shop-arc-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}supplement
collision.supplement · GET /collisions/supplement · gate none · sandbox · answers CollisionSupplement@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /5NMS2DAJ7PH655610 (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 { collision } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await collision.supplement({"vin":"5NMS2DAJ7PH655610"})curl 'https://apis.vin/collisions/supplement?vin=5NMS2DAJ7PH655610'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": "CollisionSupplement@1",
"value": {
"vin": "5NMS2DAJ7PH655610",
"noun": "collision",
"asOf": "2026-08-10",
"position": "NoLoss",
"operation": "supplement",
"status": "no-open-repair"
},
"evidence": {
"vin": "5NMS2DAJ7PH655610",
"noun": "collision",
"asOf": "2026-08-10",
"position": "NoLoss",
"operation": "supplement",
"status": "no-open-repair"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "shop-arc-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}teardown
collision.teardown · POST /collisions/teardown · gate offer · sandbox · answers CollisionTeardown@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) · /5NMS2DAJ7PH655610 (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 — Collision.teardownFailed@1 · Collision.teardownRequested@1 · Collision.teardowned@1.
import { collision } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await collision.teardown({"vin":"5NMS2DAJ7PH655610"})curl -X POST https://apis.vin/collisions/teardown \
-H 'content-type: application/json' \
-d '{"vin":"5NMS2DAJ7PH655610"}'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": "CollisionTeardown@1",
"value": {
"vin": "5NMS2DAJ7PH655610",
"noun": "collision",
"asOf": "2026-08-10",
"position": "NoLoss",
"operation": "teardown",
"status": "no-open-repair"
},
"evidence": {
"vin": "5NMS2DAJ7PH655610",
"noun": "collision",
"asOf": "2026-08-10",
"position": "NoLoss",
"operation": "teardown",
"status": "no-open-repair"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "shop-arc-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}totalLossEval
collision.totalLossEval · GET /collisions/total-loss-eval · gate none · sandbox · answers CollisionTotalLossEval@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /5NMS2DAJ7PH655610 (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 { collision } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await collision.totalLossEval({"vin":"5NMS2DAJ7PH655610"})curl 'https://apis.vin/collisions/total-loss-eval?vin=5NMS2DAJ7PH655610'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": "CollisionTotalLossEval@1",
"value": {
"vin": "5NMS2DAJ7PH655610",
"noun": "collision",
"asOf": "2026-08-10",
"position": "NoLoss",
"evaluation": "no-loss-recorded"
},
"evidence": {
"vin": "5NMS2DAJ7PH655610",
"noun": "collision",
"asOf": "2026-08-10",
"position": "NoLoss",
"evaluation": "no-loss-recorded"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "shop-arc-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.
Collision
Schema
| Property | Type | Notes |
|---|---|---|
id | id | col_ |
vin | string | — |
claimId | ref→Claim | — |
estimateId | ref→Estimate | — |
shopId | ref→Provider | — |
status | CollisionFSM | — |
Relationships
| From | To | Cardinality | As |
|---|---|---|---|
collision | vehicle | *:1 | repairs |
collision | insuranceClaim | *:0..1 | bills |
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.
Collision · Class model
Collision · State machine
Collision · Sequence
Generated from the catalog. Every capability, answer, gate, and entity on this page is a rendered descriptor — it cannot drift from the wire.
chargerInstall
The chargerInstall noun — identity, lifecycle, events, and every capability as an anchored section: 13 capabilities, 0 live, 13 sandbox, 0 declared.
comms
The comms noun — identity, lifecycle, events, and every capability as an anchored section: 20 capabilities, 0 live, 20 sandbox, 0 declared.