docs.vin

inspection

The inspection noun — identity, lifecycle, events, and every capability as an anchored section: 32 capabilities, 0 live, 32 sandbox, 0 declared.

inspection is one of the estate's 317 automotive nouns — a job a car needs done. It carries 32 capabilities: 0 live, 32 sandbox, 0 declared · doors inspection.vin · aggregator.vin.

Identity

Nouninspection
PillarData (facets: 13 data · 11 services · 8 commerce)
Capabilities32 — 0 live · 32 sandbox · 0 declared
EntitiesInspection
Doorsaggregator.vin · inspection.vin
SDKVin.inspection.* from apis.vin
Address/catalog/inspection#{action} — the anchor IS the wire name minus inspection.

Lifecycle

InspectionInspectionFSM: 6 states, 5 transitions — Ordered · Scheduled · InProgress · Completed · Passed · Failed. Each transition is a past-tense event on the record.

Events

The vocabulary this noun can append to the record — 47 past-tense, versioned event types, each linked to the capability that emits it:

Discover & read

history

inspection.history · GET /inspections/history · gate none · sandbox · answers InspectionHistory@1

FieldTypeRequiredNotes
vinstringno

Doorinspection.vin serves this noun on its two routes: / (the landing) · /1C4RJFBG2KC555096 (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 — inspection.history
import { inspection } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await inspection.history({"vin":"1C4RJFBG2KC555096"})
GET /inspections/history
curl 'https://apis.vin/inspections/history?vin=1C4RJFBG2KC555096'

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:12.533Z · HTTP 200
{
  "type": "OK",
  "answers": "InspectionHistory@1",
  "value": {
    "vin": "1C4RJFBG2KC555096",
    "noun": "inspection",
    "asOf": "2026-08-10",
    "position": "Passed",
    "events": [
      {
        "date": "2024-03-14",
        "kind": "routine",
        "description": "routine inspection record"
      },
      {
        "date": "2024-11-02",
        "kind": "routine",
        "description": "routine inspection record"
      }
    ]
  },
  "evidence": {
    "vin": "1C4RJFBG2KC555096",
    "noun": "inspection",
    "asOf": "2026-08-10",
    "position": "Passed",
    "events": [
      {
        "date": "2024-03-14",
        "kind": "routine",
        "description": "routine inspection record"
      },
      {
        "date": "2024-11-02",
        "kind": "routine",
        "description": "routine inspection record"
      }
    ]
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "counterparty-logistics-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

verify

inspection.verify · GET /inspections/verify · gate none · sandbox · answers InspectionVerify@1

FieldTypeRequiredNotes
vinstringno

Doorinspection.vin serves this noun on its two routes: / (the landing) · /1C4RJFBG2KC555096 (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 — inspection.verify
import { inspection } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await inspection.verify({"vin":"1C4RJFBG2KC555096"})
GET /inspections/verify
curl 'https://apis.vin/inspections/verify?vin=1C4RJFBG2KC555096'

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:12.602Z · HTTP 200
{
  "type": "OK",
  "answers": "InspectionVerify@1",
  "value": {
    "vin": "1C4RJFBG2KC555096",
    "noun": "inspection",
    "asOf": "2026-08-10",
    "position": "Passed",
    "inspectionId": "INSP-850e3583",
    "result": "passed",
    "requestedVerb": "verify"
  },
  "evidence": {
    "vin": "1C4RJFBG2KC555096",
    "noun": "inspection",
    "asOf": "2026-08-10",
    "position": "Passed",
    "inspectionId": "INSP-850e3583",
    "result": "passed",
    "requestedVerb": "verify"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "counterparty-logistics-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

result

inspection.result · GET /inspections/result · gate key · sandbox · answers InspectionResult@1

FieldTypeRequiredNotes
vinstringno

Doorinspection.vin serves this noun on its two routes: / (the landing) · /1C4RJFBG2KC555096 (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.

EmitsInspection.resulted@1.

the SDK — inspection.result
import { inspection } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await inspection.result({"vin":"1C4RJFBG2KC555096"})
GET /inspections/result
curl 'https://apis.vin/inspections/result?vin=1C4RJFBG2KC555096'

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:12.572Z · HTTP 200
{
  "type": "OK",
  "answers": "InspectionResult@1",
  "value": {
    "vin": "1C4RJFBG2KC555096",
    "result": "fail",
    "inspectedAtMileage": 45000,
    "advisories": [
      "brake-pad-wear"
    ]
  },
  "evidence": {
    "vin": "1C4RJFBG2KC555096",
    "result": "fail",
    "inspectedAtMileage": 45000,
    "advisories": [
      "brake-pad-wear"
    ]
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "services-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

compare

inspection.compare · GET /inspections/compare · gate none · sandbox · answers InspectionCompare@1

FieldTypeRequiredNotes
vinstringno

Doorinspection.vin serves this noun on its two routes: / (the landing) · /1C4RJFBG2KC555096 (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 — inspection.compare
import { inspection } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await inspection.compare({"vin":"1C4RJFBG2KC555096"})
GET /inspections/compare
curl 'https://apis.vin/inspections/compare?vin=1C4RJFBG2KC555096'

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:12.528Z · HTTP 200
{
  "type": "OK",
  "answers": "InspectionCompare@1",
  "value": {
    "vin": "1C4RJFBG2KC555096",
    "noun": "inspection",
    "asOf": "2026-08-10",
    "position": "Passed",
    "inspectionId": "INSP-850e3583",
    "priorResult": "passed",
    "delta": "none",
    "consistent": true
  },
  "evidence": {
    "vin": "1C4RJFBG2KC555096",
    "noun": "inspection",
    "asOf": "2026-08-10",
    "position": "Passed",
    "inspectionId": "INSP-850e3583",
    "priorResult": "passed",
    "delta": "none",
    "consistent": true
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "counterparty-logistics-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

grade

inspection.grade · GET /inspections/grade · gate key · sandbox · answers InspectionGrade@1

FieldTypeRequiredNotes
vinstringno

Doorinspection.vin serves this noun on its two routes: / (the landing) · /1C4RJFBG2KC555096 (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.

EmitsInspection.graded@1.

the SDK — inspection.grade
import { inspection } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await inspection.grade({"vin":"1C4RJFBG2KC555096"})
GET /inspections/grade
curl 'https://apis.vin/inspections/grade?vin=1C4RJFBG2KC555096'

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:12.530Z · HTTP 200
{
  "type": "OK",
  "answers": "InspectionGrade@1",
  "value": {
    "vin": "1C4RJFBG2KC555096",
    "serviceType": "inspection",
    "grade": "average",
    "damage": [
      {
        "panel": "front-bumper",
        "type": "scuff",
        "severity": "minor",
        "estimateCents": 6308
      }
    ],
    "reconRequired": false,
    "reconEstimateCents": 6308,
    "currency": "USD"
  },
  "evidence": {
    "vin": "1C4RJFBG2KC555096",
    "serviceType": "inspection",
    "grade": "average",
    "damage": [
      {
        "panel": "front-bumper",
        "type": "scuff",
        "severity": "minor",
        "estimateCents": 6308
      }
    ],
    "reconRequired": false,
    "reconEstimateCents": 6308,
    "currency": "USD"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "field-services-rail-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

photos

inspection.photos · GET /inspections/photos · gate none · sandbox · answers InspectionPhotos@1

FieldTypeRequiredNotes
vinstringno

Doorinspection.vin serves this noun on its two routes: / (the landing) · /1C4RJFBG2KC555096 (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 — inspection.photos
import { inspection } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await inspection.photos({"vin":"1C4RJFBG2KC555096"})
GET /inspections/photos
curl 'https://apis.vin/inspections/photos?vin=1C4RJFBG2KC555096'

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:12.570Z · HTTP 200
{
  "type": "OK",
  "answers": "InspectionPhotos@1",
  "value": {
    "vin": "1C4RJFBG2KC555096",
    "noun": "inspection",
    "asOf": "2026-08-10",
    "position": "Passed",
    "artifacts": {
      "inspectionId": "INSP-850e3583",
      "photos": 7,
      "annotations": 1
    }
  },
  "evidence": {
    "vin": "1C4RJFBG2KC555096",
    "noun": "inspection",
    "asOf": "2026-08-10",
    "position": "Passed",
    "artifacts": {
      "inspectionId": "INSP-850e3583",
      "photos": 7,
      "annotations": 1
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "counterparty-logistics-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

requirementsLookup

inspection.requirementsLookup · GET /inspections/requirements-lookup · gate none · sandbox · answers InspectionRequirementsLookup@1

FieldTypeRequiredNotes
vinstringno

Doorinspection.vin serves this noun on its two routes: / (the landing) · /1C4RJFBG2KC555096 (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 — inspection.requirementsLookup
import { inspection } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await inspection.requirementsLookup({"vin":"1C4RJFBG2KC555096"})
GET /inspections/requirements-lookup
curl 'https://apis.vin/inspections/requirements-lookup?vin=1C4RJFBG2KC555096'

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:12.572Z · HTTP 200
{
  "type": "OK",
  "answers": "InspectionRequirementsLookup@1",
  "value": {
    "state": "CA",
    "safetyRequired": false,
    "emissionsRequired": true,
    "obdRequired": false,
    "cadenceMonths": 24
  },
  "evidence": {
    "state": "CA",
    "safetyRequired": false,
    "emissionsRequired": true,
    "obdRequired": false,
    "cadenceMonths": 24
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "services-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

resultLookup

inspection.resultLookup · GET /inspections/result-lookup · gate none · sandbox · answers InspectionResultLookup@1

FieldTypeRequiredNotes
vinstringno

Doorinspection.vin serves this noun on its two routes: / (the landing) · /1C4RJFBG2KC555096 (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 — inspection.resultLookup
import { inspection } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await inspection.resultLookup({"vin":"1C4RJFBG2KC555096"})
GET /inspections/result-lookup
curl 'https://apis.vin/inspections/result-lookup?vin=1C4RJFBG2KC555096'

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:12.575Z · HTTP 200
{
  "type": "OK",
  "answers": "InspectionResultLookup@1",
  "value": {
    "vin": "1C4RJFBG2KC555096",
    "noun": "inspection",
    "asOf": "2026-08-10",
    "position": "Passed",
    "inspectionId": "INSP-850e3583",
    "result": "passed",
    "grade": "clean"
  },
  "evidence": {
    "vin": "1C4RJFBG2KC555096",
    "noun": "inspection",
    "asOf": "2026-08-10",
    "position": "Passed",
    "inspectionId": "INSP-850e3583",
    "result": "passed",
    "grade": "clean"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "counterparty-logistics-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

checklist

inspection.checklist · GET /inspections/checklist · gate none · sandbox · answers InspectionChecklist@1

FieldTypeRequiredNotes
vinstringno

Doorinspection.vin serves this noun on its two routes: / (the landing) · /1C4RJFBG2KC555096 (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 — inspection.checklist
import { inspection } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await inspection.checklist({"vin":"1C4RJFBG2KC555096"})
GET /inspections/checklist
curl 'https://apis.vin/inspections/checklist?vin=1C4RJFBG2KC555096'

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:12.523Z · HTTP 200
{
  "type": "OK",
  "answers": "InspectionChecklist@1",
  "value": {
    "vin": "1C4RJFBG2KC555096",
    "checklist": [
      {
        "item": "brakes",
        "status": "pass"
      },
      {
        "item": "tires",
        "status": "pass"
      },
      {
        "item": "lights",
        "status": "pass"
      },
      {
        "item": "wipers",
        "status": "pass"
      },
      {
        "item": "suspension",
        "status": "pass"
      },
      {
        "item": "exhaust",
        "status": "pass"
      },
      {
        "item": "horn",
        "status": "pass"
      },
      {
        "item": "mirrors",
        "status": "pass"
      }
    ],
    "itemCount": 8
  },
  "evidence": {
    "vin": "1C4RJFBG2KC555096",
    "checklist": [
      {
        "item": "brakes",
        "status": "pass"
      },
      {
        "item": "tires",
        "status": "pass"
      },
      {
        "item": "lights",
        "status": "pass"
      },
      {
        "item": "wipers",
        "status": "pass"
      },
      {
        "item": "suspension",
        "status": "pass"
      },
      {
        "item": "exhaust",
        "status": "pass"
      },
      {
        "item": "horn",
        "status": "pass"
      },
      {
        "item": "mirrors",
        "status": "pass"
      }
    ],
    "itemCount": 8
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "services-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

expiryCheck

inspection.expiryCheck · GET /inspections/expiry-check · gate none · sandbox · answers InspectionExpiryCheck@1

FieldTypeRequiredNotes
vinstringno

Doorinspection.vin serves this noun on its two routes: / (the landing) · /1C4RJFBG2KC555096 (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 — inspection.expiryCheck
import { inspection } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await inspection.expiryCheck({"vin":"1C4RJFBG2KC555096"})
GET /inspections/expiry-check
curl 'https://apis.vin/inspections/expiry-check?vin=1C4RJFBG2KC555096'

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:12.528Z · HTTP 200
{
  "type": "OK",
  "answers": "InspectionExpiryCheck@1",
  "value": {
    "vin": "1C4RJFBG2KC555096",
    "noun": "inspection",
    "asOf": "2026-08-10",
    "position": "Passed",
    "valid": true,
    "validThrough": "2027-08-31"
  },
  "evidence": {
    "vin": "1C4RJFBG2KC555096",
    "noun": "inspection",
    "asOf": "2026-08-10",
    "position": "Passed",
    "valid": true,
    "validThrough": "2027-08-31"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "counterparty-logistics-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

statusCheck

inspection.statusCheck · GET /inspections/status-check · gate none · sandbox · answers InspectionStatusCheck@1

FieldTypeRequiredNotes
vinstringno

Doorinspection.vin serves this noun on its two routes: / (the landing) · /1C4RJFBG2KC555096 (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 — inspection.statusCheck
import { inspection } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await inspection.statusCheck({"vin":"1C4RJFBG2KC555096"})
GET /inspections/status-check
curl 'https://apis.vin/inspections/status-check?vin=1C4RJFBG2KC555096'

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:12.575Z · HTTP 200
{
  "type": "OK",
  "answers": "InspectionStatusCheck@1",
  "value": {
    "vin": "1C4RJFBG2KC555096",
    "noun": "inspection",
    "asOf": "2026-08-10",
    "position": "Passed",
    "inspectionId": "INSP-850e3583",
    "result": "passed",
    "grade": "clean"
  },
  "evidence": {
    "vin": "1C4RJFBG2KC555096",
    "noun": "inspection",
    "asOf": "2026-08-10",
    "position": "Passed",
    "inspectionId": "INSP-850e3583",
    "result": "passed",
    "grade": "clean"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "counterparty-logistics-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

stickerVerify

inspection.stickerVerify · GET /inspections/sticker-verify · gate none · sandbox · answers InspectionStickerVerify@1

FieldTypeRequiredNotes
vinstringno

Doorinspection.vin serves this noun on its two routes: / (the landing) · /1C4RJFBG2KC555096 (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 — inspection.stickerVerify
import { inspection } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await inspection.stickerVerify({"vin":"1C4RJFBG2KC555096"})
GET /inspections/sticker-verify
curl 'https://apis.vin/inspections/sticker-verify?vin=1C4RJFBG2KC555096'

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:12.575Z · HTTP 200
{
  "type": "OK",
  "answers": "InspectionStickerVerify@1",
  "value": {
    "vin": "1C4RJFBG2KC555096",
    "noun": "inspection",
    "asOf": "2026-08-10",
    "position": "Passed",
    "valid": true,
    "stickerId": "STK-d3d790d1"
  },
  "evidence": {
    "vin": "1C4RJFBG2KC555096",
    "noun": "inspection",
    "asOf": "2026-08-10",
    "position": "Passed",
    "valid": true,
    "stickerId": "STK-d3d790d1"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "counterparty-logistics-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Quote & price

quote

inspection.quote · POST /inspections/quote · gate offer · sandbox · answers InspectionQuote@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.

Doorinspection.vin serves this noun on its two routes: / (the landing) · /1C4RJFBG2KC555096 (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.

EmitsInspection.quoteRequested@1 · Inspection.quoted@1.

the SDK — inspection.quote
import { inspection } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await inspection.quote({"vin":"1C4RJFBG2KC555096"})
POST /inspections/quote
curl -X POST https://apis.vin/inspections/quote \
  -H 'content-type: application/json' \
  -d '{"vin":"1C4RJFBG2KC555096"}'

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:12.570Z · HTTP 200
{
  "type": "OK",
  "answers": "InspectionQuote@1",
  "value": {
    "vin": "1C4RJFBG2KC555096",
    "quoteId": "DQ-1",
    "serviceType": "inspection",
    "costCents": 11148,
    "priceCents": 14492,
    "marginCents": 3344,
    "currency": "USD",
    "etaMinDays": 1,
    "etaMaxDays": 2,
    "rush": false,
    "expires": "2026-08-17T00:00:00.000Z"
  },
  "evidence": {
    "vin": "1C4RJFBG2KC555096",
    "quoteId": "DQ-1",
    "serviceType": "inspection",
    "costCents": 11148,
    "priceCents": 14492,
    "marginCents": 3344,
    "currency": "USD",
    "etaMinDays": 1,
    "etaMaxDays": 2,
    "rush": false,
    "expires": "2026-08-17T00:00:00.000Z"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "field-services-rail-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

fee

inspection.fee · POST /inspections/fee · gate offer · sandbox · answers InspectionFee@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.

Doorinspection.vin serves this noun on its two routes: / (the landing) · /1C4RJFBG2KC555096 (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.

EmitsInspection.feeCharged@1.

the SDK — inspection.fee
import { inspection } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await inspection.fee({"vin":"1C4RJFBG2KC555096"})
POST /inspections/fee
curl -X POST https://apis.vin/inspections/fee \
  -H 'content-type: application/json' \
  -d '{"vin":"1C4RJFBG2KC555096"}'

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:12.528Z · HTTP 200
{
  "type": "OK",
  "answers": "InspectionFee@1",
  "value": {
    "vin": "1C4RJFBG2KC555096",
    "noun": "inspection",
    "asOf": "2026-08-10",
    "position": "Passed",
    "fee": {
      "kind": "inspection-fee",
      "amountCents": 12500,
      "currency": "USD",
      "status": "charged"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "1C4RJFBG2KC555096",
    "noun": "inspection",
    "asOf": "2026-08-10",
    "position": "Passed",
    "fee": {
      "kind": "inspection-fee",
      "amountCents": 12500,
      "currency": "USD",
      "status": "charged"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "counterparty-logistics-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Apply & book

order

inspection.order · POST /inspections/order · gate offer · sandbox · answers InspectionOrder@1

FieldTypeRequiredNotes
vinstringyes
typestringyesone of pre-purchase, post-purchase, safety, mechanical, condition, arbitration
locationobjectno
subjectstringno
authoritystringno

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.

Delegated calls require a typed Mandate{ ceiling, perAction, expires, tripwires }; the ceiling is a field, not a conversation.

Doorinspection.vin serves this noun on its two routes: / (the landing) · /1C4RJFBG2KC555096 (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.

EmitsInspection.completed@1 · Inspection.dispatched@1 · Inspection.ordered@1 · Inspection.scheduled@1 · Order.placed@1 · ServiceOrder.settled@1.

the SDK — inspection.order
import { inspection } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await inspection.order({"vin":"1C4RJFBG2KC555096","type":"pre-purchase"})
POST /inspections/order
curl -X POST https://apis.vin/inspections/order \
  -H 'content-type: application/json' \
  -d '{"vin":"1C4RJFBG2KC555096","type":"pre-purchase"}'

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:12.561Z · HTTP 200
{
  "type": "OK",
  "answers": "InspectionOrder@1",
  "value": {
    "vin": "1C4RJFBG2KC555096",
    "orderId": "serviceorder_EMVh3MmY1dFQ",
    "quoteId": "DQ-1",
    "serviceType": "inspection",
    "status": "Active",
    "priceCents": 14492,
    "currency": "USD"
  },
  "evidence": {
    "vin": "1C4RJFBG2KC555096",
    "orderId": "serviceorder_EMVh3MmY1dFQ",
    "quoteId": "DQ-1",
    "serviceType": "inspection",
    "status": "Active",
    "priceCents": 14492,
    "currency": "USD"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "field-services-rail-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

schedule

inspection.schedule · POST /inspections/schedule · gate offer · sandbox · answers InspectionSchedule@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.

Doorinspection.vin serves this noun on its two routes: / (the landing) · /1C4RJFBG2KC555096 (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.

EmitsInspection.scheduleRequested@1 · Inspection.scheduled@1.

the SDK — inspection.schedule
import { inspection } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await inspection.schedule({"vin":"1C4RJFBG2KC555096"})
POST /inspections/schedule
curl -X POST https://apis.vin/inspections/schedule \
  -H 'content-type: application/json' \
  -d '{"vin":"1C4RJFBG2KC555096"}'

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:12.575Z · HTTP 200
{
  "type": "OK",
  "answers": "InspectionSchedule@1",
  "value": {
    "vin": "1C4RJFBG2KC555096",
    "noun": "inspection",
    "asOf": "2026-08-10",
    "position": "Passed",
    "appointment": {
      "id": "AP-78fab5ab",
      "date": "2026-08-12",
      "status": "scheduled",
      "providerId": "PRV-5237f84a"
    }
  },
  "evidence": {
    "vin": "1C4RJFBG2KC555096",
    "noun": "inspection",
    "asOf": "2026-08-10",
    "position": "Passed",
    "appointment": {
      "id": "AP-78fab5ab",
      "date": "2026-08-12",
      "status": "scheduled",
      "providerId": "PRV-5237f84a"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "counterparty-logistics-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

subscribe

inspection.subscribe · POST /inspections/subscribe · gate key · sandbox · answers InspectionSubscribe@1

No input — this capability takes no request body.

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /1C4RJFBG2KC555096 (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.

EmitsInspection.subscribed@1.

the SDK — inspection.subscribe
import { inspection } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await inspection.subscribe()
POST /inspections/subscribe
curl -X POST https://apis.vin/inspections/subscribe \
  -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.

receipt · executed 2026-08-16T14:50:09.869Z · HTTP 200
{
  "type": "OK",
  "answers": "InspectionSubscribe@1",
  "value": {
    "vin": "1HGCM82633A004352",
    "noun": "inspection",
    "asOf": "2026-08-10",
    "position": "Passed",
    "subscription": {
      "id": "SB-f587f7a8",
      "topic": "inspection-status",
      "status": "active"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "1HGCM82633A004352",
    "noun": "inspection",
    "asOf": "2026-08-10",
    "position": "Passed",
    "subscription": {
      "id": "SB-f587f7a8",
      "topic": "inspection-status",
      "status": "active"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "counterparty-logistics-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Pay & settle

pay

inspection.pay · POST /inspections/pay · gate offer · sandbox · answers InspectionPay@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.

Doorinspection.vin serves this noun on its two routes: / (the landing) · /1C4RJFBG2KC555096 (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.

EmitsInspection.charged@1 · Inspection.paid@1 · Inspection.payFailed@1 · Inspection.payRequested@1 · ServiceOrder.settled@1.

the SDK — inspection.pay
import { inspection } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await inspection.pay({"vin":"1C4RJFBG2KC555096"})
POST /inspections/pay
curl -X POST https://apis.vin/inspections/pay \
  -H 'content-type: application/json' \
  -d '{"vin":"1C4RJFBG2KC555096"}'

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:12.561Z · HTTP 200
{
  "type": "OK",
  "answers": "InspectionPay@1",
  "value": {
    "vin": "1C4RJFBG2KC555096",
    "noun": "inspection",
    "asOf": "2026-08-10",
    "position": "Passed",
    "payment": {
      "id": "PAY-97ec4898",
      "status": "settled",
      "amountCents": 12500,
      "currency": "USD"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "1C4RJFBG2KC555096",
    "noun": "inspection",
    "asOf": "2026-08-10",
    "position": "Passed",
    "payment": {
      "id": "PAY-97ec4898",
      "status": "settled",
      "amountCents": 12500,
      "currency": "USD"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "counterparty-logistics-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

capture

inspection.capture · POST /inspections/capture · gate offer · sandbox · answers InspectionCapture@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.

Doorinspection.vin serves this noun on its two routes: / (the landing) · /1C4RJFBG2KC555096 (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.

EmitsInspection.captureFailed@1 · Inspection.captureRequested@1 · Inspection.captured@1.

the SDK — inspection.capture
import { inspection } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await inspection.capture({"vin":"1C4RJFBG2KC555096"})
POST /inspections/capture
curl -X POST https://apis.vin/inspections/capture \
  -H 'content-type: application/json' \
  -d '{"vin":"1C4RJFBG2KC555096"}'

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:12.518Z · HTTP 200
{
  "type": "OK",
  "answers": "InspectionCapture@1",
  "value": {
    "vin": "1C4RJFBG2KC555096",
    "noun": "inspection",
    "asOf": "2026-08-10",
    "position": "Passed",
    "artifacts": {
      "inspectionId": "INSP-850e3583",
      "photos": 7,
      "annotations": 1
    }
  },
  "evidence": {
    "vin": "1C4RJFBG2KC555096",
    "noun": "inspection",
    "asOf": "2026-08-10",
    "position": "Passed",
    "artifacts": {
      "inspectionId": "INSP-850e3583",
      "photos": 7,
      "annotations": 1
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "counterparty-logistics-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

invoice

inspection.invoice · POST /inspections/invoice · gate offer · sandbox · answers InspectionInvoice@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.

Doorinspection.vin serves this noun on its two routes: / (the landing) · /1C4RJFBG2KC555096 (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.

EmitsInspection.invoiceFailed@1 · Inspection.invoiceRequested@1 · Inspection.invoiced@1.

the SDK — inspection.invoice
import { inspection } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await inspection.invoice({"vin":"1C4RJFBG2KC555096"})
POST /inspections/invoice
curl -X POST https://apis.vin/inspections/invoice \
  -H 'content-type: application/json' \
  -d '{"vin":"1C4RJFBG2KC555096"}'

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:12.533Z · HTTP 200
{
  "type": "OK",
  "answers": "InspectionInvoice@1",
  "value": {
    "vin": "1C4RJFBG2KC555096",
    "noun": "inspection",
    "asOf": "2026-08-10",
    "position": "Passed",
    "invoice": {
      "id": "INV-a8ed3275",
      "status": "issued",
      "amountCents": 12500,
      "currency": "USD"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "1C4RJFBG2KC555096",
    "noun": "inspection",
    "asOf": "2026-08-10",
    "position": "Passed",
    "invoice": {
      "id": "INV-a8ed3275",
      "status": "issued",
      "amountCents": 12500,
      "currency": "USD"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "counterparty-logistics-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

settle

inspection.settle · POST /inspections/settle · gate offer · sandbox · answers InspectionSettle@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.

Doorinspection.vin serves this noun on its two routes: / (the landing) · /1C4RJFBG2KC555096 (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.

EmitsInspection.settleFailed@1 · Inspection.settleRequested@1 · Inspection.settled@1.

the SDK — inspection.settle
import { inspection } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await inspection.settle({"vin":"1C4RJFBG2KC555096"})
POST /inspections/settle
curl -X POST https://apis.vin/inspections/settle \
  -H 'content-type: application/json' \
  -d '{"vin":"1C4RJFBG2KC555096"}'

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:12.575Z · HTTP 200
{
  "type": "OK",
  "answers": "InspectionSettle@1",
  "value": {
    "vin": "1C4RJFBG2KC555096",
    "noun": "inspection",
    "asOf": "2026-08-10",
    "position": "Passed",
    "payment": {
      "id": "PAY-366c2c51",
      "status": "settled",
      "amountCents": 12500,
      "currency": "USD"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "1C4RJFBG2KC555096",
    "noun": "inspection",
    "asOf": "2026-08-10",
    "position": "Passed",
    "payment": {
      "id": "PAY-366c2c51",
      "status": "settled",
      "amountCents": 12500,
      "currency": "USD"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "counterparty-logistics-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

refund

inspection.refund · POST /inspections/refund · gate offer · sandbox · answers InspectionRefund@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.

Doorinspection.vin serves this noun on its two routes: / (the landing) · /1C4RJFBG2KC555096 (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.

EmitsInspection.refundFailed@1 · Inspection.refundRequested@1 · Inspection.refunded@1.

the SDK — inspection.refund
import { inspection } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await inspection.refund({"vin":"1C4RJFBG2KC555096"})
POST /inspections/refund
curl -X POST https://apis.vin/inspections/refund \
  -H 'content-type: application/json' \
  -d '{"vin":"1C4RJFBG2KC555096"}'

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:12.570Z · HTTP 200
{
  "type": "OK",
  "answers": "InspectionRefund@1",
  "value": {
    "vin": "1C4RJFBG2KC555096",
    "noun": "inspection",
    "asOf": "2026-08-10",
    "position": "Passed",
    "refund": {
      "id": "RFD-64cf3aac",
      "status": "issued",
      "amountCents": 12500,
      "currency": "USD"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "1C4RJFBG2KC555096",
    "noun": "inspection",
    "asOf": "2026-08-10",
    "position": "Passed",
    "refund": {
      "id": "RFD-64cf3aac",
      "status": "issued",
      "amountCents": 12500,
      "currency": "USD"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "counterparty-logistics-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Fulfill & operate

perform

inspection.perform · POST /inspections/perform · gate offer · sandbox · answers InspectionPerform@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.

Doorinspection.vin serves this noun on its two routes: / (the landing) · /1C4RJFBG2KC555096 (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.

EmitsInspection.performFailed@1 · Inspection.performRequested@1 · Inspection.performed@1.

the SDK — inspection.perform
import { inspection } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await inspection.perform({"vin":"1C4RJFBG2KC555096"})
POST /inspections/perform
curl -X POST https://apis.vin/inspections/perform \
  -H 'content-type: application/json' \
  -d '{"vin":"1C4RJFBG2KC555096"}'

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:12.566Z · HTTP 200
{
  "type": "OK",
  "answers": "InspectionPerform@1",
  "value": {
    "vin": "1C4RJFBG2KC555096",
    "noun": "inspection",
    "asOf": "2026-08-10",
    "position": "Passed",
    "work": {
      "id": "INSP-850e3583",
      "status": "performed",
      "outcome": "passed"
    }
  },
  "evidence": {
    "vin": "1C4RJFBG2KC555096",
    "noun": "inspection",
    "asOf": "2026-08-10",
    "position": "Passed",
    "work": {
      "id": "INSP-850e3583",
      "status": "performed",
      "outcome": "passed"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "counterparty-logistics-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

complete

inspection.complete · POST /inspections/complete · gate offer · sandbox · answers InspectionComplete@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.

Doorinspection.vin serves this noun on its two routes: / (the landing) · /1C4RJFBG2KC555096 (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.

EmitsInspection.completeRequested@1 · Inspection.completed@1.

the SDK — inspection.complete
import { inspection } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await inspection.complete({"vin":"1C4RJFBG2KC555096"})
POST /inspections/complete
curl -X POST https://apis.vin/inspections/complete \
  -H 'content-type: application/json' \
  -d '{"vin":"1C4RJFBG2KC555096"}'

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:12.528Z · HTTP 200
{
  "type": "OK",
  "answers": "InspectionComplete@1",
  "value": {
    "orderId": "serviceorder_EMVh3MmY1dFQ",
    "completed": true,
    "status": "Complete",
    "eventName": "ServiceOrder.inspected@1",
    "vin": "1C4RJFBG2KC555096",
    "serviceType": "inspection",
    "grade": "average",
    "damage": [
      {
        "panel": "front-bumper",
        "type": "scuff",
        "severity": "minor",
        "estimateCents": 6308
      }
    ],
    "reconRequired": false,
    "reconEstimateCents": 6308,
    "currency": "USD"
  },
  "evidence": {
    "orderId": "serviceorder_EMVh3MmY1dFQ",
    "completed": true,
    "status": "Complete",
    "eventName": "ServiceOrder.inspected@1",
    "vin": "1C4RJFBG2KC555096",
    "serviceType": "inspection",
    "grade": "average",
    "damage": [
      {
        "panel": "front-bumper",
        "type": "scuff",
        "severity": "minor",
        "estimateCents": 6308
      }
    ],
    "reconRequired": false,
    "reconEstimateCents": 6308,
    "currency": "USD"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "field-services-rail-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

annotate

inspection.annotate · POST /inspections/annotate · gate offer · sandbox · answers InspectionAnnotate@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.

Doorinspection.vin serves this noun on its two routes: / (the landing) · /1C4RJFBG2KC555096 (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.

EmitsInspection.annotateRequested@1 · Inspection.annotated@1.

the SDK — inspection.annotate
import { inspection } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await inspection.annotate({"vin":"1C4RJFBG2KC555096"})
POST /inspections/annotate
curl -X POST https://apis.vin/inspections/annotate \
  -H 'content-type: application/json' \
  -d '{"vin":"1C4RJFBG2KC555096"}'

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:12.518Z · HTTP 200
{
  "type": "OK",
  "answers": "InspectionAnnotate@1",
  "value": {
    "vin": "1C4RJFBG2KC555096",
    "noun": "inspection",
    "asOf": "2026-08-10",
    "position": "Passed",
    "artifacts": {
      "inspectionId": "INSP-850e3583",
      "photos": 7,
      "annotations": 1
    }
  },
  "evidence": {
    "vin": "1C4RJFBG2KC555096",
    "noun": "inspection",
    "asOf": "2026-08-10",
    "position": "Passed",
    "artifacts": {
      "inspectionId": "INSP-850e3583",
      "photos": 7,
      "annotations": 1
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "counterparty-logistics-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

remind

inspection.remind · POST /inspections/remind · gate key · sandbox · answers InspectionRemind@1

No input — this capability takes no request body.

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /1C4RJFBG2KC555096 (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.

EmitsInspection.reminded@1.

the SDK — inspection.remind
import { inspection } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await inspection.remind()
POST /inspections/remind
curl -X POST https://apis.vin/inspections/remind \
  -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.

receipt · executed 2026-08-16T14:50:09.868Z · HTTP 200
{
  "type": "OK",
  "answers": "InspectionRemind@1",
  "value": {
    "vin": "1HGCM82633A004352",
    "noun": "inspection",
    "asOf": "2026-08-10",
    "position": "Passed",
    "reminder": {
      "id": "RM-05934525",
      "channel": "message",
      "status": "sent"
    }
  },
  "evidence": {
    "vin": "1HGCM82633A004352",
    "noun": "inspection",
    "asOf": "2026-08-10",
    "position": "Passed",
    "reminder": {
      "id": "RM-05934525",
      "channel": "message",
      "status": "sent"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "counterparty-logistics-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

reInspect

inspection.reInspect · POST /inspections/re-inspect · gate offer · sandbox · answers InspectionReInspect@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.

Doorinspection.vin serves this noun on its two routes: / (the landing) · /1C4RJFBG2KC555096 (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.

EmitsInspection.reInspectRequested@1 · Inspection.reInspected@1.

the SDK — inspection.reInspect
import { inspection } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await inspection.reInspect({"vin":"1C4RJFBG2KC555096"})
POST /inspections/re-inspect
curl -X POST https://apis.vin/inspections/re-inspect \
  -H 'content-type: application/json' \
  -d '{"vin":"1C4RJFBG2KC555096"}'

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:12.570Z · HTTP 200
{
  "type": "OK",
  "answers": "InspectionReInspect@1",
  "value": {
    "vin": "1C4RJFBG2KC555096",
    "noun": "inspection",
    "asOf": "2026-08-10",
    "position": "Passed",
    "reinspection": {
      "id": "RI-ada0b35d",
      "required": false,
      "status": "not-required"
    }
  },
  "evidence": {
    "vin": "1C4RJFBG2KC555096",
    "noun": "inspection",
    "asOf": "2026-08-10",
    "position": "Passed",
    "reinspection": {
      "id": "RI-ada0b35d",
      "required": false,
      "status": "not-required"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "counterparty-logistics-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Authorize & resolve

dispute

inspection.dispute · POST /inspections/dispute · gate offer · sandbox · answers InspectionDispute@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.

Doorinspection.vin serves this noun on its two routes: / (the landing) · /1C4RJFBG2KC555096 (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.

EmitsInspection.disputeRequested@1 · Inspection.disputed@1.

the SDK — inspection.dispute
import { inspection } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await inspection.dispute({"vin":"1C4RJFBG2KC555096"})
POST /inspections/dispute
curl -X POST https://apis.vin/inspections/dispute \
  -H 'content-type: application/json' \
  -d '{"vin":"1C4RJFBG2KC555096"}'

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:12.528Z · HTTP 200
{
  "type": "OK",
  "answers": "InspectionDispute@1",
  "value": {
    "vin": "1C4RJFBG2KC555096",
    "noun": "inspection",
    "asOf": "2026-08-10",
    "position": "Passed",
    "dispute": {
      "id": "DSP-72deddd6",
      "status": "no-grounds"
    }
  },
  "evidence": {
    "vin": "1C4RJFBG2KC555096",
    "noun": "inspection",
    "asOf": "2026-08-10",
    "position": "Passed",
    "dispute": {
      "id": "DSP-72deddd6",
      "status": "no-grounds"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "counterparty-logistics-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

pass

inspection.pass · POST /inspections/pass · gate offer · sandbox · answers InspectionPass@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.

Doorinspection.vin serves this noun on its two routes: / (the landing) · /1C4RJFBG2KC555096 (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.

EmitsInspection.passRequested@1 · Inspection.passed@1.

the SDK — inspection.pass
import { inspection } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await inspection.pass({"vin":"1C4RJFBG2KC555096"})
POST /inspections/pass
curl -X POST https://apis.vin/inspections/pass \
  -H 'content-type: application/json' \
  -d '{"vin":"1C4RJFBG2KC555096"}'

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:12.561Z · HTTP 200
{
  "type": "OK",
  "answers": "InspectionPass@1",
  "value": {
    "vin": "1C4RJFBG2KC555096",
    "noun": "inspection",
    "asOf": "2026-08-10",
    "position": "Passed",
    "inspectionId": "INSP-850e3583",
    "result": "passed",
    "requestedVerb": "pass"
  },
  "evidence": {
    "vin": "1C4RJFBG2KC555096",
    "noun": "inspection",
    "asOf": "2026-08-10",
    "position": "Passed",
    "inspectionId": "INSP-850e3583",
    "result": "passed",
    "requestedVerb": "pass"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "counterparty-logistics-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

fail

inspection.fail · POST /inspections/fail · gate offer · sandbox · answers InspectionFail@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.

Doorinspection.vin serves this noun on its two routes: / (the landing) · /1C4RJFBG2KC555096 (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.

EmitsInspection.failRequested@1 · Inspection.failed@1.

the SDK — inspection.fail
import { inspection } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await inspection.fail({"vin":"1C4RJFBG2KC555096"})
POST /inspections/fail
curl -X POST https://apis.vin/inspections/fail \
  -H 'content-type: application/json' \
  -d '{"vin":"1C4RJFBG2KC555096"}'

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:12.528Z · HTTP 200
{
  "type": "OK",
  "answers": "InspectionFail@1",
  "value": {
    "vin": "1C4RJFBG2KC555096",
    "noun": "inspection",
    "asOf": "2026-08-10",
    "position": "Passed",
    "inspectionId": "INSP-850e3583",
    "result": "passed",
    "requestedVerb": "fail"
  },
  "evidence": {
    "vin": "1C4RJFBG2KC555096",
    "noun": "inspection",
    "asOf": "2026-08-10",
    "position": "Passed",
    "inspectionId": "INSP-850e3583",
    "result": "passed",
    "requestedVerb": "fail"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "counterparty-logistics-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

More actions

dispatchInspector

inspection.dispatchInspector · POST /inspections/dispatch-inspector · gate offer · sandbox · answers InspectionDispatchInspector@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.

Doorinspection.vin serves this noun on its two routes: / (the landing) · /1C4RJFBG2KC555096 (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.

EmitsInspection.dispatchInspectorRequested@1 · Inspection.inspectorDispatched@1.

the SDK — inspection.dispatchInspector
import { inspection } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await inspection.dispatchInspector({"vin":"1C4RJFBG2KC555096"})
POST /inspections/dispatch-inspector
curl -X POST https://apis.vin/inspections/dispatch-inspector \
  -H 'content-type: application/json' \
  -d '{"vin":"1C4RJFBG2KC555096"}'

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:12.528Z · HTTP 200
{
  "type": "OK",
  "answers": "InspectionDispatchInspector@1",
  "value": {
    "vin": "1C4RJFBG2KC555096",
    "orderId": "serviceorder_EMVh3MmY1dFQ",
    "serviceType": "inspection",
    "dispatched": true,
    "status": "Dispatched",
    "etaMinDays": 1,
    "etaMaxDays": 2
  },
  "evidence": {
    "vin": "1C4RJFBG2KC555096",
    "orderId": "serviceorder_EMVh3MmY1dFQ",
    "serviceType": "inspection",
    "dispatched": true,
    "status": "Dispatched",
    "etaMinDays": 1,
    "etaMaxDays": 2
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "field-services-rail-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

issueSticker

inspection.issueSticker · POST /inspections/issue-sticker · gate offer · sandbox · answers InspectionIssueSticker@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.

Doorinspection.vin serves this noun on its two routes: / (the landing) · /1C4RJFBG2KC555096 (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.

EmitsInspection.issueStickered@1.

the SDK — inspection.issueSticker
import { inspection } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await inspection.issueSticker({"vin":"1C4RJFBG2KC555096"})
POST /inspections/issue-sticker
curl -X POST https://apis.vin/inspections/issue-sticker \
  -H 'content-type: application/json' \
  -d '{"vin":"1C4RJFBG2KC555096"}'

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:12.559Z · HTTP 200
{
  "type": "OK",
  "answers": "InspectionIssueSticker@1",
  "value": {
    "vin": "1C4RJFBG2KC555096",
    "noun": "inspection",
    "asOf": "2026-08-10",
    "position": "Passed",
    "sticker": {
      "issued": true,
      "stickerId": "STK-d3d790d1",
      "validThrough": "2027-08-31"
    }
  },
  "evidence": {
    "vin": "1C4RJFBG2KC555096",
    "noun": "inspection",
    "asOf": "2026-08-10",
    "position": "Passed",
    "sticker": {
      "issued": true,
      "stickerId": "STK-d3d790d1",
      "validThrough": "2027-08-31"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "counterparty-logistics-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.

Inspection

Schema

PropertyTypeNotes
idid
vinstring
typeenumPPI|MPI|arbitration|leaseReturn|CPO
locationstring
inspectorIdref→Provider
gradestring
damagesDamage[]
photosMedia[]
statusInspectionFSM

Relationships

FromToCardinalityAs
vehicleinspection1:0..*inspected
inspectionconditionReport1:0..1produces
inspectionrecon1:0..*triggers

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.

Inspection · Class model

Inspection · State machine

Inspection · Sequence


Generated from the catalog. Every capability, answer, gate, and entity on this page is a rendered descriptor — it cannot drift from the wire.