catastrophe
The catastrophe noun — identity, lifecycle, events, and every capability as an anchored section: 9 capabilities, 0 live, 9 sandbox, 0 declared.
catastrophe is one of the estate's 317 automotive nouns — a job a car needs done. It carries 9 capabilities: 0 live, 9 sandbox, 0 declared · doors aggregator.vin.
Identity
| Noun | catastrophe |
| Pillar | Services (facets: 2 data · 5 services · 2 commerce) |
| Capabilities | 9 — 0 live · 9 sandbox · 0 declared |
| Entities | Claim |
| Doors | aggregator.vin |
| SDK | Vin.catastrophe.* from apis.vin |
| Address | /catalog/catastrophe#{action} — the anchor IS the wire name minus catastrophe. |
Events
The vocabulary this noun can append to the record — 8 past-tense, versioned event types, each linked to the capability that emits it:
Catastrophe.deadlineWaived@1— emitted bydeadlineWaiverCatastrophe.eventDeclared@1— emitted bydeclareEventCatastrophe.feeWaived@1— emitted byfeeWaiveCatastrophe.femaCoordinated@1— emitted byfemaCoordinateCatastrophe.hailSaleAnnounced@1— emitted byhailSaleEventCatastrophe.inventoryTriaged@1— emitted byinventoryTriageCatastrophe.recallStormSurged@1— emitted byrecallStormSurgeCatastrophe.salvageSurgeRouted@1— emitted bysalvageSurgeRoute
Discover & read
floodExposureCheck
catastrophe.floodExposureCheck · GET /catastrophes/flood-exposure-check · gate none · sandbox · answers CatastropheFloodExposureCheck@1
No input — this capability takes no request body.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /4S4SLDL61T3024796 (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 { catastrophe } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await catastrophe.floodExposureCheck()curl 'https://apis.vin/catastrophes/flood-exposure-check'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": "CatastropheFloodExposureCheck@1",
"value": {
"vin": "1HGCM82633A004352",
"noun": "catastrophe",
"asOf": "2026-08-10",
"claim": {
"status": "no-claim-on-file"
},
"exposure": {
"exposed": false,
"brands": [],
"basis": "title-brands"
},
"fleetFloodBranded": 0
},
"evidence": {
"vin": "1HGCM82633A004352",
"noun": "catastrophe",
"asOf": "2026-08-10",
"claim": {
"status": "no-claim-on-file"
},
"exposure": {
"exposed": false,
"brands": [],
"basis": "title-brands"
},
"fleetFloodBranded": 0
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "cat-desk-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Authorize & resolve
feeWaive
catastrophe.feeWaive · POST /catastrophes/fee-waive · gate key · sandbox · answers CatastropheFeeWaive@1
No input — this capability takes no request body.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /4S4SLDL61T3024796 (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 — Catastrophe.feeWaived@1.
import { catastrophe } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await catastrophe.feeWaive()curl -X POST https://apis.vin/catastrophes/fee-waive \
-H 'content-type: application/json' \
-d '{}'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": "CatastropheFeeWaive@1",
"value": {
"vin": "1HGCM82633A004352",
"noun": "catastrophe",
"asOf": "2026-08-10",
"claim": {
"status": "no-claim-on-file"
},
"waiver": {
"status": "nothing-to-waive",
"amountCents": 0
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "1HGCM82633A004352",
"noun": "catastrophe",
"asOf": "2026-08-10",
"claim": {
"status": "no-claim-on-file"
},
"waiver": {
"status": "nothing-to-waive",
"amountCents": 0
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "cat-desk-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}More actions
deadlineWaiver
catastrophe.deadlineWaiver · POST /catastrophes/deadline-waiver · gate key · sandbox · answers CatastropheDeadlineWaiver@1
No input — this capability takes no request body.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /4S4SLDL61T3024796 (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 — Catastrophe.deadlineWaived@1.
import { catastrophe } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await catastrophe.deadlineWaiver()curl -X POST https://apis.vin/catastrophes/deadline-waiver \
-H 'content-type: application/json' \
-d '{}'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": "CatastropheDeadlineWaiver@1",
"value": {
"vin": "1HGCM82633A004352",
"noun": "catastrophe",
"asOf": "2026-08-10",
"claim": {
"status": "no-claim-on-file"
},
"waiver": {
"id": "CATDW-4f3228bc",
"status": "waived",
"enforcement": "clock-still-fires"
},
"deadlines": [
{
"monitor": "insurance-lapse",
"on": "Insurance.lapsed@1",
"dueAt": "2026-08-31T00:00:00.000Z",
"capability": "insurance.lapseMonitor"
},
{
"monitor": "usage-cycle",
"on": "Usage.reset@1",
"dueAt": "2026-09-01T00:00:00.000Z",
"capability": "usage.meter"
},
{
"monitor": "search-window",
"on": "Search.unmatched@1",
"dueAt": "2026-09-09T00:00:00.000Z",
"capability": "search.provide"
},
{
"monitor": "registration-expiry",
"on": "Registration.expired@1",
"dueAt": "2026-10-09T00:00:00.000Z",
"capability": "registration.remind"
},
{
"monitor": "maintenance-due",
"on": "Vehicle.maintenanceDue@1",
"dueAt": "2026-11-08T00:00:00.000Z",
"capability": "maintenance.dueCheck"
},
{
"monitor": "campaign-flight-end",
"on": "Campaign.completed@1",
"dueAt": "2026-12-08T00:00:00.000Z",
"capability": "campaign.status"
}
]
},
"evidence": {
"vin": "1HGCM82633A004352",
"noun": "catastrophe",
"asOf": "2026-08-10",
"claim": {
"status": "no-claim-on-file"
},
"waiver": {
"id": "CATDW-4f3228bc",
"status": "waived",
"enforcement": "clock-still-fires"
},
"deadlines": [
{
"monitor": "insurance-lapse",
"on": "Insurance.lapsed@1",
"dueAt": "2026-08-31T00:00:00.000Z",
"capability": "insurance.lapseMonitor"
},
{
"monitor": "usage-cycle",
"on": "Usage.reset@1",
"dueAt": "2026-09-01T00:00:00.000Z",
"capability": "usage.meter"
},
{
"monitor": "search-window",
"on": "Search.unmatched@1",
"dueAt": "2026-09-09T00:00:00.000Z",
"capability": "search.provide"
},
{
"monitor": "registration-expiry",
"on": "Registration.expired@1",
"dueAt": "2026-10-09T00:00:00.000Z",
"capability": "registration.remind"
},
{
"monitor": "maintenance-due",
"on": "Vehicle.maintenanceDue@1",
"dueAt": "2026-11-08T00:00:00.000Z",
"capability": "maintenance.dueCheck"
},
{
"monitor": "campaign-flight-end",
"on": "Campaign.completed@1",
"dueAt": "2026-12-08T00:00:00.000Z",
"capability": "campaign.status"
}
]
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "cat-desk-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}declareEvent
catastrophe.declareEvent · POST /catastrophes/declare-event · gate key · sandbox · answers CatastropheDeclareEvent@1
No input — this capability takes no request body.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /4S4SLDL61T3024796 (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 — Catastrophe.eventDeclared@1.
import { catastrophe } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await catastrophe.declareEvent()curl -X POST https://apis.vin/catastrophes/declare-event \
-H 'content-type: application/json' \
-d '{}'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": "CatastropheDeclareEvent@1",
"value": {
"vin": "1HGCM82633A004352",
"noun": "catastrophe",
"asOf": "2026-08-10",
"claim": {
"status": "no-claim-on-file"
},
"event": {
"id": "CAT-be67edc1",
"status": "declared",
"scope": "fleet"
},
"exposure": {
"fleet": 90,
"claimsByPosition": {
"Opened": 1,
"AcvDetermined": 1,
"Approved": 1,
"Appealed": 1,
"Settled": 1,
"Denied": 1,
"Reversed": 1
},
"openClaims": 6,
"totalLoss": 4,
"salvagePool": 4,
"accidents": 17,
"openRecalls": 1,
"floodBranded": 0,
"hailBranded": 0
}
},
"evidence": {
"vin": "1HGCM82633A004352",
"noun": "catastrophe",
"asOf": "2026-08-10",
"claim": {
"status": "no-claim-on-file"
},
"event": {
"id": "CAT-be67edc1",
"status": "declared",
"scope": "fleet"
},
"exposure": {
"fleet": 90,
"claimsByPosition": {
"Opened": 1,
"AcvDetermined": 1,
"Approved": 1,
"Appealed": 1,
"Settled": 1,
"Denied": 1,
"Reversed": 1
},
"openClaims": 6,
"totalLoss": 4,
"salvagePool": 4,
"accidents": 17,
"openRecalls": 1,
"floodBranded": 0,
"hailBranded": 0
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "cat-desk-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}femaCoordinate
catastrophe.femaCoordinate · POST /catastrophes/fema-coordinate · gate key · sandbox · answers CatastropheFemaCoordinate@1
No input — this capability takes no request body.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /4S4SLDL61T3024796 (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 — Catastrophe.femaCoordinated@1.
import { catastrophe } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await catastrophe.femaCoordinate()curl -X POST https://apis.vin/catastrophes/fema-coordinate \
-H 'content-type: application/json' \
-d '{}'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": "CatastropheFemaCoordinate@1",
"value": {
"vin": "1HGCM82633A004352",
"noun": "catastrophe",
"asOf": "2026-08-10",
"claim": {
"status": "no-claim-on-file"
},
"coordination": {
"id": "FEMA-ed196353",
"agency": "fema",
"role": "counterparty",
"event": "CAT-be67edc1",
"status": "coordinated",
"exposure": {
"totalLoss": 4,
"salvagePool": 4
}
}
},
"evidence": {
"vin": "1HGCM82633A004352",
"noun": "catastrophe",
"asOf": "2026-08-10",
"claim": {
"status": "no-claim-on-file"
},
"coordination": {
"id": "FEMA-ed196353",
"agency": "fema",
"role": "counterparty",
"event": "CAT-be67edc1",
"status": "coordinated",
"exposure": {
"totalLoss": 4,
"salvagePool": 4
}
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "cat-desk-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}hailSaleEvent
catastrophe.hailSaleEvent · POST /catastrophes/hail-sale-event · gate key · sandbox · answers CatastropheHailSaleEvent@1
No input — this capability takes no request body.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /4S4SLDL61T3024796 (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 — Catastrophe.hailSaleAnnounced@1.
import { catastrophe } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await catastrophe.hailSaleEvent()curl -X POST https://apis.vin/catastrophes/hail-sale-event \
-H 'content-type: application/json' \
-d '{}'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": "CatastropheHailSaleEvent@1",
"value": {
"vin": "1HGCM82633A004352",
"noun": "catastrophe",
"asOf": "2026-08-10",
"claim": {
"status": "no-claim-on-file"
},
"sale": {
"id": "HS-0de76c83",
"status": "announced",
"lot": {
"salvagePool": 4,
"accidents": 17,
"hailDamaged": 0
}
}
},
"evidence": {
"vin": "1HGCM82633A004352",
"noun": "catastrophe",
"asOf": "2026-08-10",
"claim": {
"status": "no-claim-on-file"
},
"sale": {
"id": "HS-0de76c83",
"status": "announced",
"lot": {
"salvagePool": 4,
"accidents": 17,
"hailDamaged": 0
}
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "cat-desk-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}inventoryTriage
catastrophe.inventoryTriage · POST /catastrophes/inventory-triage · gate key · sandbox · answers CatastropheInventoryTriage@1
No input — this capability takes no request body.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /4S4SLDL61T3024796 (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 — Catastrophe.inventoryTriaged@1.
import { catastrophe } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await catastrophe.inventoryTriage()curl -X POST https://apis.vin/catastrophes/inventory-triage \
-H 'content-type: application/json' \
-d '{}'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": "CatastropheInventoryTriage@1",
"value": {
"vin": "1HGCM82633A004352",
"noun": "catastrophe",
"asOf": "2026-08-10",
"claim": {
"status": "no-claim-on-file"
},
"triage": {
"id": "CATTR-238a7c70",
"fleet": 90,
"buckets": {
"openClaims": 6,
"totalLoss": 4,
"salvagePool": 4,
"accidents": 17,
"clean": 73
}
}
},
"evidence": {
"vin": "1HGCM82633A004352",
"noun": "catastrophe",
"asOf": "2026-08-10",
"claim": {
"status": "no-claim-on-file"
},
"triage": {
"id": "CATTR-238a7c70",
"fleet": 90,
"buckets": {
"openClaims": 6,
"totalLoss": 4,
"salvagePool": 4,
"accidents": 17,
"clean": 73
}
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "cat-desk-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}recallStormSurge
catastrophe.recallStormSurge · POST /catastrophes/recall-storm-surge · gate key · sandbox · answers CatastropheRecallStormSurge@1
No input — this capability takes no request body.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /4S4SLDL61T3024796 (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 — Catastrophe.recallStormSurged@1.
import { catastrophe } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await catastrophe.recallStormSurge()curl -X POST https://apis.vin/catastrophes/recall-storm-surge \
-H 'content-type: application/json' \
-d '{}'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": "CatastropheRecallStormSurge@1",
"value": {
"vin": "1HGCM82633A004352",
"noun": "catastrophe",
"asOf": "2026-08-10",
"claim": {
"status": "no-claim-on-file"
},
"surge": {
"openRecallSubjects": 1,
"subject": {
"open": false
}
}
},
"evidence": {
"vin": "1HGCM82633A004352",
"noun": "catastrophe",
"asOf": "2026-08-10",
"claim": {
"status": "no-claim-on-file"
},
"surge": {
"openRecallSubjects": 1,
"subject": {
"open": false
}
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "cat-desk-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}salvageSurgeRoute
catastrophe.salvageSurgeRoute · POST /catastrophes/salvage-surge-route · gate key · sandbox · answers CatastropheSalvageSurgeRoute@1
No input — this capability takes no request body.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /4S4SLDL61T3024796 (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 — Catastrophe.salvageSurgeRouted@1.
import { catastrophe } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await catastrophe.salvageSurgeRoute()curl -X POST https://apis.vin/catastrophes/salvage-surge-route \
-H 'content-type: application/json' \
-d '{}'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": "CatastropheSalvageSurgeRoute@1",
"value": {
"vin": "1HGCM82633A004352",
"noun": "catastrophe",
"asOf": "2026-08-10",
"claim": {
"status": "no-claim-on-file"
},
"routing": {
"status": "not-in-salvage-pool"
},
"pool": {
"units": 4
}
},
"evidence": {
"vin": "1HGCM82633A004352",
"noun": "catastrophe",
"asOf": "2026-08-10",
"claim": {
"status": "no-claim-on-file"
},
"routing": {
"status": "not-in-salvage-pool"
},
"pool": {
"units": 4
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "cat-desk-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.
Claim
Generated from the catalog. Every capability, answer, gate, and entity on this page is a rendered descriptor — it cannot drift from the wire.
buyersGuide
The buyersGuide noun — identity, lifecycle, events, and every capability as an anchored section: 5 capabilities, 0 live, 5 sandbox, 0 declared.
certificateOfDestruction
The certificateOfDestruction noun — identity, lifecycle, events, and every capability as an anchored section: 1 capability, 0 live, 1 sandbox, 0 declared.