docs.vin

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

Nouncollision
PillarServices (facets: 6 data · 9 services · 7 commerce)
Capabilities22 — 0 live · 22 sandbox · 0 declared
EntitiesCollision
Doorsaggregator.vin
SDKVin.collision.* from apis.vin
Address/catalog/collision#{action} — the anchor IS the wire name minus collision.

Lifecycle

CollisionCollisionFSM: 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:

Discover & read

history

collision.history · GET /collisions/history · gate none · sandbox · answers CollisionHistory@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.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.

the SDK — collision.history
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"})
GET /collisions/history
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.

receipt · executed 2026-08-17T12:42:09.206Z · HTTP 200
{
  "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

FieldTypeRequiredNotes
vinstringno

Dooraggregator.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.

the SDK — collision.status
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"})
GET /collisions/status
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.

receipt · executed 2026-08-17T12:42:09.210Z · HTTP 200
{
  "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

FieldTypeRequiredNotes
vinstringno

Dooraggregator.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.

the SDK — collision.photos
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"})
GET /collisions/photos
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.

receipt · executed 2026-08-17T12:42:09.207Z · HTTP 200
{
  "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

FieldTypeRequiredNotes
vinstringno

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.

Dooraggregator.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.

EmitsCollision.estimateRequested@1 · Collision.estimated@1.

the SDK — collision.estimate
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"})
POST /collisions/estimate
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.

receipt · executed 2026-08-17T12:42:09.205Z · HTTP 200
{
  "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

FieldTypeRequiredNotes
vinstringno

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.

Dooraggregator.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.

EmitsCollision.completed@1 · Collision.dispatched@1 · Collision.ordered@1 · ServiceOrder.settled@1.

the SDK — collision.order
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"})
POST /collisions/order
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.

receipt · executed 2026-08-17T12:42:09.206Z · HTTP 200
{
  "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

FieldTypeRequiredNotes
vinstringno

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.

Dooraggregator.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.

EmitsCollision.scheduleRequested@1 · Collision.scheduled@1.

the SDK — collision.schedule
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"})
POST /collisions/schedule
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.

receipt · executed 2026-08-17T12:42:09.209Z · HTTP 200
{
  "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

FieldTypeRequiredNotes
vinstringno

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.

Dooraggregator.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.

EmitsCollision.paid@1 · Collision.payFailed@1 · Collision.payRequested@1.

the SDK — collision.pay
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"})
POST /collisions/pay
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.

receipt · executed 2026-08-17T12:42:09.206Z · HTTP 200
{
  "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

FieldTypeRequiredNotes
vinstringno

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.

Dooraggregator.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.

EmitsCollision.settleFailed@1 · Collision.settleRequested@1 · Collision.settled@1.

the SDK — collision.settle
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"})
POST /collisions/settle
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.

receipt · executed 2026-08-17T12:42:09.209Z · HTTP 200
{
  "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

FieldTypeRequiredNotes
vinstringno

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.

Dooraggregator.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.

EmitsCollision.deductibleCollectRequested@1 · Collision.deductibleCollected@1.

the SDK — collision.deductibleCollect
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"})
POST /collisions/deductible-collect
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.

receipt · executed 2026-08-17T12:42:09.204Z · HTTP 200
{
  "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

FieldTypeRequiredNotes
vinstringno

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.

Dooraggregator.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.

EmitsCollision.claimBillRequested@1 · Collision.claimBilled@1.

the SDK — collision.claimBill
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"})
POST /collisions/claim-bill
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.

receipt · executed 2026-08-17T12:42:09.101Z · HTTP 200
{
  "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

FieldTypeRequiredNotes
vinstringno

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.

Dooraggregator.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.

EmitsCollision.repairFailed@1 · Collision.repairRequested@1 · Collision.repaired@1.

the SDK — collision.repair
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"})
POST /collisions/repair
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.

receipt · executed 2026-08-17T12:42:09.208Z · HTTP 200
{
  "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

FieldTypeRequiredNotes
vinstringno

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.

Dooraggregator.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.

EmitsCollision.completeRequested@1 · Collision.completed@1.

the SDK — collision.complete
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"})
POST /collisions/complete
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.

receipt · executed 2026-08-17T12:42:09.101Z · HTTP 200
{
  "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

FieldTypeRequiredNotes
vinstringno

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.

Dooraggregator.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.

EmitsCollision.reassembleRequested@1 · Collision.reassembled@1.

the SDK — collision.reassemble
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"})
POST /collisions/reassemble
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.

receipt · executed 2026-08-17T12:42:09.208Z · HTTP 200
{
  "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

FieldTypeRequiredNotes
vinstringno

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.

Dooraggregator.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.

EmitsCollision.blueprintRequested@1 · Collision.blueprinted@1.

the SDK — collision.blueprint
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"})
POST /collisions/blueprint
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.

receipt · executed 2026-08-17T12:42:09.099Z · HTTP 200
{
  "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

FieldTypeRequiredNotes
vinstringno

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.

Dooraggregator.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.

EmitsCollision.approveSupplementRequested@1 · Collision.supplementApproved@1.

the SDK — collision.approveSupplement
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"})
POST /collisions/approve-supplement
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.

receipt · executed 2026-08-17T12:42:09.091Z · HTTP 200
{
  "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

FieldTypeRequiredNotes
vinstringno

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.

Dooraggregator.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.

EmitsCollision.calibrateAdasRequested@1 · Collision.adasCalibrated@1 · Collision.calibrateAdased@1.

the SDK — collision.calibrateAdas
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"})
POST /collisions/calibrate-adas
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.

receipt · executed 2026-08-17T12:42:09.100Z · HTTP 200
{
  "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

FieldTypeRequiredNotes
vinstringno

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.

Dooraggregator.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.

EmitsCollision.framePullFailed@1 · Collision.framePullRequested@1 · Collision.framePulled@1.

the SDK — collision.framePull
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"})
POST /collisions/frame-pull
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.

receipt · executed 2026-08-17T12:42:09.205Z · HTTP 200
{
  "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

FieldTypeRequiredNotes
vinstringno

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.

Dooraggregator.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.

EmitsCollision.qcRequested@1 · Collision.qced@1.

the SDK — collision.qc
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"})
POST /collisions/qc
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.

receipt · executed 2026-08-17T12:42:09.207Z · HTTP 200
{
  "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

FieldTypeRequiredNotes
vinstringno

Dooraggregator.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.

EmitsCollision.severitied@1.

the SDK — collision.severity
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"})
GET /collisions/severity
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.

receipt · executed 2026-08-17T12:42:09.210Z · HTTP 200
{
  "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

FieldTypeRequiredNotes
vinstringno

Dooraggregator.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.

the SDK — collision.supplement
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"})
GET /collisions/supplement
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.

receipt · executed 2026-08-17T12:42:09.210Z · HTTP 200
{
  "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

FieldTypeRequiredNotes
vinstringno

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.

Dooraggregator.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.

EmitsCollision.teardownFailed@1 · Collision.teardownRequested@1 · Collision.teardowned@1.

the SDK — collision.teardown
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"})
POST /collisions/teardown
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.

receipt · executed 2026-08-17T12:42:09.211Z · HTTP 200
{
  "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

FieldTypeRequiredNotes
vinstringno

Dooraggregator.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.

the SDK — collision.totalLossEval
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"})
GET /collisions/total-loss-eval
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.

receipt · executed 2026-08-17T12:42:09.240Z · HTTP 200
{
  "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

PropertyTypeNotes
ididcol_
vinstring
claimIdref→Claim
estimateIdref→Estimate
shopIdref→Provider
statusCollisionFSM

Relationships

FromToCardinalityAs
collisionvehicle*:1repairs
collisioninsuranceClaim*:0..1bills

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.