docs.vin

diagnostic

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

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

Identity

Noundiagnostic
PillarData (facets: 10 data · 7 services · 4 commerce)
Capabilities21 — 0 live · 21 sandbox · 0 declared
EntitiesRepairOrder
Doorsaggregator.vin
SDKVin.diagnostic.* from apis.vin
Address/catalog/diagnostic#{action} — the anchor IS the wire name minus diagnostic.

Events

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

Discover & read

history

diagnostic.history · GET /diagnostics/history · gate none · sandbox · answers DiagnosticHistory@1

FieldTypeRequiredNotes
vinstringno

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

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

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:10.349Z · HTTP 200
{
  "type": "OK",
  "answers": "DiagnosticHistory@1",
  "value": {
    "vin": "JN1BJ1CVXLW550653",
    "noun": "diagnostic",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "events": [
      {
        "date": "2024-03-14",
        "kind": "routine",
        "description": "routine diagnostic scan record"
      },
      {
        "date": "2024-11-02",
        "kind": "routine",
        "description": "routine diagnostic scan record"
      }
    ]
  },
  "evidence": {
    "vin": "JN1BJ1CVXLW550653",
    "noun": "diagnostic",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "events": [
      {
        "date": "2024-03-14",
        "kind": "routine",
        "description": "routine diagnostic scan record"
      },
      {
        "date": "2024-11-02",
        "kind": "routine",
        "description": "routine diagnostic scan record"
      }
    ]
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "shop-arc-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

scan

diagnostic.scan · POST /diagnostics/scan · gate offer · sandbox · answers DiagnosticScan@1

FieldTypeRequiredNotes
vinstringno

The gate is a 402 OFFER — the price and a hard ceiling on the wire, with a durable intent that executes on settlement. Never a wall, never "contact sales". Price: not posted — see /pricing.

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

EmitsDiagnostic.scanned@1.

the SDK — diagnostic.scan
import { diagnostic } from 'apis.vin'

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

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:10.367Z · HTTP 200
{
  "type": "OK",
  "answers": "DiagnosticScan@1",
  "value": {
    "vin": "JN1BJ1CVXLW550653",
    "noun": "diagnostic",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "scan": {
      "id": "SCAN-38f091e7",
      "status": "performed",
      "codes": [],
      "systems": [
        {
          "system": "engine",
          "verdict": "pass"
        },
        {
          "system": "transmission",
          "verdict": "pass"
        },
        {
          "system": "driveline",
          "verdict": "pass"
        },
        {
          "system": "cooling",
          "verdict": "pass"
        },
        {
          "system": "electrical",
          "verdict": "pass"
        },
        {
          "system": "fuelSystem",
          "verdict": "pass"
        }
      ]
    }
  },
  "evidence": {
    "vin": "JN1BJ1CVXLW550653",
    "noun": "diagnostic",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "scan": {
      "id": "SCAN-38f091e7",
      "status": "performed",
      "codes": [],
      "systems": [
        {
          "system": "engine",
          "verdict": "pass"
        },
        {
          "system": "transmission",
          "verdict": "pass"
        },
        {
          "system": "driveline",
          "verdict": "pass"
        },
        {
          "system": "cooling",
          "verdict": "pass"
        },
        {
          "system": "electrical",
          "verdict": "pass"
        },
        {
          "system": "fuelSystem",
          "verdict": "pass"
        }
      ]
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "shop-arc-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

predict

diagnostic.predict · GET /diagnostics/predict · gate key · sandbox · answers DiagnosticPredict@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /JN1BJ1CVXLW550653 (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 — diagnostic.predict
import { diagnostic } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await diagnostic.predict({"vin":"JN1BJ1CVXLW550653"})
GET /diagnostics/predict
curl 'https://apis.vin/diagnostics/predict?vin=JN1BJ1CVXLW550653'

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:10.353Z · HTTP 200
{
  "type": "OK",
  "answers": "DiagnosticPredict@1",
  "value": {
    "vin": "JN1BJ1CVXLW550653",
    "noun": "diagnostic",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "prediction": {
      "failureRisk": "low",
      "horizonDays": 180
    }
  },
  "evidence": {
    "vin": "JN1BJ1CVXLW550653",
    "noun": "diagnostic",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "prediction": {
      "failureRisk": "low",
      "horizonDays": 180
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "shop-arc-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

tsbLookup

diagnostic.tsbLookup · GET /diagnostics/tsb-lookup · gate none · sandbox · answers DiagnosticTsbLookup@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /JN1BJ1CVXLW550653 (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 — diagnostic.tsbLookup
import { diagnostic } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await diagnostic.tsbLookup({"vin":"JN1BJ1CVXLW550653"})
GET /diagnostics/tsb-lookup
curl 'https://apis.vin/diagnostics/tsb-lookup?vin=JN1BJ1CVXLW550653'

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:10.381Z · HTTP 200
{
  "type": "OK",
  "answers": "DiagnosticTsbLookup@1",
  "value": {
    "vin": "JN1BJ1CVXLW550653",
    "noun": "diagnostic",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "bulletins": [
      {
        "id": "TSB-0b7be309",
        "subject": "general service bulletin"
      }
    ]
  },
  "evidence": {
    "vin": "JN1BJ1CVXLW550653",
    "noun": "diagnostic",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "bulletins": [
      {
        "id": "TSB-0b7be309",
        "subject": "general service bulletin"
      }
    ]
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "shop-arc-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

dtcRead

diagnostic.dtcRead · GET /diagnostics/dtc-read · gate none · sandbox · answers DiagnosticDtcRead@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /JN1BJ1CVXLW550653 (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 — diagnostic.dtcRead
import { diagnostic } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await diagnostic.dtcRead({"vin":"JN1BJ1CVXLW550653"})
GET /diagnostics/dtc-read
curl 'https://apis.vin/diagnostics/dtc-read?vin=JN1BJ1CVXLW550653'

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:10.331Z · HTTP 200
{
  "type": "OK",
  "answers": "DiagnosticDtcRead@1",
  "value": {
    "vin": "JN1BJ1CVXLW550653",
    "noun": "diagnostic",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "scanId": "SCAN-38f091e7",
    "codes": [],
    "count": 0
  },
  "evidence": {
    "vin": "JN1BJ1CVXLW550653",
    "noun": "diagnostic",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "scanId": "SCAN-38f091e7",
    "codes": [],
    "count": 0
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "shop-arc-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

freezeFrameRead

diagnostic.freezeFrameRead · GET /diagnostics/freeze-frame-read · gate none · sandbox · answers DiagnosticFreezeFrameRead@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /JN1BJ1CVXLW550653 (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 — diagnostic.freezeFrameRead
import { diagnostic } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await diagnostic.freezeFrameRead({"vin":"JN1BJ1CVXLW550653"})
GET /diagnostics/freeze-frame-read
curl 'https://apis.vin/diagnostics/freeze-frame-read?vin=JN1BJ1CVXLW550653'

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:10.341Z · HTTP 200
{
  "type": "OK",
  "answers": "DiagnosticFreezeFrameRead@1",
  "value": {
    "vin": "JN1BJ1CVXLW550653",
    "noun": "diagnostic",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "freezeFrame": {
      "available": false,
      "reason": "no-stored-fault"
    }
  },
  "evidence": {
    "vin": "JN1BJ1CVXLW550653",
    "noun": "diagnostic",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "freezeFrame": {
      "available": false,
      "reason": "no-stored-fault"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "shop-arc-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

readinessRead

diagnostic.readinessRead · GET /diagnostics/readiness-read · gate none · sandbox · answers DiagnosticReadinessRead@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /JN1BJ1CVXLW550653 (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 — diagnostic.readinessRead
import { diagnostic } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await diagnostic.readinessRead({"vin":"JN1BJ1CVXLW550653"})
GET /diagnostics/readiness-read
curl 'https://apis.vin/diagnostics/readiness-read?vin=JN1BJ1CVXLW550653'

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:10.353Z · HTTP 200
{
  "type": "OK",
  "answers": "DiagnosticReadinessRead@1",
  "value": {
    "vin": "JN1BJ1CVXLW550653",
    "noun": "diagnostic",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "monitors": [
      {
        "monitor": "engine",
        "ready": true
      },
      {
        "monitor": "transmission",
        "ready": true
      },
      {
        "monitor": "driveline",
        "ready": true
      },
      {
        "monitor": "cooling",
        "ready": true
      },
      {
        "monitor": "electrical",
        "ready": true
      },
      {
        "monitor": "fuelSystem",
        "ready": true
      }
    ],
    "allReady": true
  },
  "evidence": {
    "vin": "JN1BJ1CVXLW550653",
    "noun": "diagnostic",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "monitors": [
      {
        "monitor": "engine",
        "ready": true
      },
      {
        "monitor": "transmission",
        "ready": true
      },
      {
        "monitor": "driveline",
        "ready": true
      },
      {
        "monitor": "cooling",
        "ready": true
      },
      {
        "monitor": "electrical",
        "ready": true
      },
      {
        "monitor": "fuelSystem",
        "ready": true
      }
    ],
    "allReady": true
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "shop-arc-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

dtcDecode

diagnostic.dtcDecode · GET /diagnostics/dtc-decode · gate key · sandbox · answers DiagnosticDtcDecode@1

FieldTypeRequiredNotes
vinstringno

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

EmitsDiagnostic.dtcDecoded@1.

the SDK — diagnostic.dtcDecode
import { diagnostic } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await diagnostic.dtcDecode({"vin":"JN1BJ1CVXLW550653"})
GET /diagnostics/dtc-decode
curl 'https://apis.vin/diagnostics/dtc-decode?vin=JN1BJ1CVXLW550653'

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:10.330Z · HTTP 200
{
  "type": "OK",
  "answers": "DiagnosticDtcDecode@1",
  "value": {
    "vin": "JN1BJ1CVXLW550653",
    "noun": "diagnostic",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "code": "",
    "decoded": {
      "status": "no-stored-codes"
    }
  },
  "evidence": {
    "vin": "JN1BJ1CVXLW550653",
    "noun": "diagnostic",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "code": "",
    "decoded": {
      "status": "no-stored-codes"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "shop-arc-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

symptomMatch

diagnostic.symptomMatch · GET /diagnostics/symptom-match · gate none · sandbox · answers DiagnosticSymptomMatch@1

FieldTypeRequiredNotes
vinstringno

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

EmitsDiagnostic.symptomMatched@1.

the SDK — diagnostic.symptomMatch
import { diagnostic } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await diagnostic.symptomMatch({"vin":"JN1BJ1CVXLW550653"})
GET /diagnostics/symptom-match
curl 'https://apis.vin/diagnostics/symptom-match?vin=JN1BJ1CVXLW550653'

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:10.380Z · HTTP 200
{
  "type": "OK",
  "answers": "DiagnosticSymptomMatch@1",
  "value": {
    "vin": "JN1BJ1CVXLW550653",
    "noun": "diagnostic",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "match": {
      "status": "no-fault-found"
    }
  },
  "evidence": {
    "vin": "JN1BJ1CVXLW550653",
    "noun": "diagnostic",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "match": {
      "status": "no-fault-found"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "shop-arc-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Quote & price

quote

diagnostic.quote · POST /diagnostics/quote · gate offer · sandbox · answers DiagnosticQuote@1

FieldTypeRequiredNotes
vinstringno

The gate is a 402 OFFER — the price and a hard ceiling on the wire, with a durable intent that executes on settlement. Never a wall, never "contact sales". Price: not posted — see /pricing.

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

EmitsDiagnostic.quoteRequested@1 · Diagnostic.quoted@1.

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

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

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:10.353Z · HTTP 200
{
  "type": "OK",
  "answers": "DiagnosticQuote@1",
  "value": {
    "vin": "JN1BJ1CVXLW550653",
    "noun": "diagnostic",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "quote": {
      "id": "DQ-bde5a006",
      "amountCents": 18500,
      "currency": "USD",
      "status": "extended"
    }
  },
  "evidence": {
    "vin": "JN1BJ1CVXLW550653",
    "noun": "diagnostic",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "quote": {
      "id": "DQ-bde5a006",
      "amountCents": 18500,
      "currency": "USD",
      "status": "extended"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "shop-arc-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Apply & book

order

diagnostic.order · POST /diagnostics/order · gate offer · sandbox · answers DiagnosticOrder@1

FieldTypeRequiredNotes
vinstringno

The gate is a 402 OFFER — the price and a hard ceiling on the wire, with a durable intent that executes on settlement. Never a wall, never "contact sales". Price: not posted — see /pricing.

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

EmitsDiagnostic.completed@1 · Diagnostic.dispatched@1 · Diagnostic.ordered@1 · Order.placed@1 · ServiceOrder.settled@1.

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

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

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:10.350Z · HTTP 200
{
  "type": "OK",
  "answers": "DiagnosticOrder@1",
  "value": {
    "vin": "JN1BJ1CVXLW550653",
    "noun": "diagnostic",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "order": {
      "id": "ORD-55c17902",
      "service": "diagnostic scan",
      "status": "placed",
      "amountCents": 18500,
      "currency": "USD"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "JN1BJ1CVXLW550653",
    "noun": "diagnostic",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "order": {
      "id": "ORD-55c17902",
      "service": "diagnostic scan",
      "status": "placed",
      "amountCents": 18500,
      "currency": "USD"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "shop-arc-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

schedule

diagnostic.schedule · POST /diagnostics/schedule · gate offer · sandbox · answers DiagnosticSchedule@1

FieldTypeRequiredNotes
vinstringno

The gate is a 402 OFFER — the price and a hard ceiling on the wire, with a durable intent that executes on settlement. Never a wall, never "contact sales". Price: not posted — see /pricing.

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

EmitsDiagnostic.scheduleRequested@1 · Diagnostic.scheduled@1.

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

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

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:10.373Z · HTTP 200
{
  "type": "OK",
  "answers": "DiagnosticSchedule@1",
  "value": {
    "vin": "JN1BJ1CVXLW550653",
    "noun": "diagnostic",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "appointment": {
      "id": "AP-7b463baf",
      "date": "2026-08-12",
      "status": "scheduled"
    }
  },
  "evidence": {
    "vin": "JN1BJ1CVXLW550653",
    "noun": "diagnostic",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "appointment": {
      "id": "AP-7b463baf",
      "date": "2026-08-12",
      "status": "scheduled"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "shop-arc-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Pay & settle

pay

diagnostic.pay · POST /diagnostics/pay · gate offer · sandbox · answers DiagnosticPay@1

FieldTypeRequiredNotes
vinstringno

The gate is a 402 OFFER — the price and a hard ceiling on the wire, with a durable intent that executes on settlement. Never a wall, never "contact sales". Price: not posted — see /pricing.

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

EmitsDiagnostic.charged@1 · Diagnostic.paid@1 · Diagnostic.payFailed@1 · Diagnostic.payRequested@1 · ServiceOrder.settled@1.

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

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

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:10.350Z · HTTP 200
{
  "type": "OK",
  "answers": "DiagnosticPay@1",
  "value": {
    "vin": "JN1BJ1CVXLW550653",
    "noun": "diagnostic",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "payment": {
      "id": "PAY-042b966c",
      "status": "settled",
      "amountCents": 18500,
      "currency": "USD"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "JN1BJ1CVXLW550653",
    "noun": "diagnostic",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "payment": {
      "id": "PAY-042b966c",
      "status": "settled",
      "amountCents": 18500,
      "currency": "USD"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "shop-arc-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Fulfill & operate

perform

diagnostic.perform · POST /diagnostics/perform · gate offer · sandbox · answers DiagnosticPerform@1

FieldTypeRequiredNotes
vinstringno

The gate is a 402 OFFER — the price and a hard ceiling on the wire, with a durable intent that executes on settlement. Never a wall, never "contact sales". Price: not posted — see /pricing.

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

EmitsDiagnostic.performFailed@1 · Diagnostic.performRequested@1 · Diagnostic.performed@1.

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

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

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:10.351Z · HTTP 200
{
  "type": "OK",
  "answers": "DiagnosticPerform@1",
  "value": {
    "vin": "JN1BJ1CVXLW550653",
    "noun": "diagnostic",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "scan": {
      "id": "SCAN-38f091e7",
      "status": "performed",
      "codes": [],
      "systems": [
        {
          "system": "engine",
          "verdict": "pass"
        },
        {
          "system": "transmission",
          "verdict": "pass"
        },
        {
          "system": "driveline",
          "verdict": "pass"
        },
        {
          "system": "cooling",
          "verdict": "pass"
        },
        {
          "system": "electrical",
          "verdict": "pass"
        },
        {
          "system": "fuelSystem",
          "verdict": "pass"
        }
      ]
    }
  },
  "evidence": {
    "vin": "JN1BJ1CVXLW550653",
    "noun": "diagnostic",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "scan": {
      "id": "SCAN-38f091e7",
      "status": "performed",
      "codes": [],
      "systems": [
        {
          "system": "engine",
          "verdict": "pass"
        },
        {
          "system": "transmission",
          "verdict": "pass"
        },
        {
          "system": "driveline",
          "verdict": "pass"
        },
        {
          "system": "cooling",
          "verdict": "pass"
        },
        {
          "system": "electrical",
          "verdict": "pass"
        },
        {
          "system": "fuelSystem",
          "verdict": "pass"
        }
      ]
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "shop-arc-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

creditTowardRepair

diagnostic.creditTowardRepair · POST /diagnostics/credit-toward-repair · gate offer · sandbox · answers DiagnosticCreditTowardRepair@1

FieldTypeRequiredNotes
vinstringno

The gate is a 402 OFFER — the price and a hard ceiling on the wire, with a durable intent that executes on settlement. Never a wall, never "contact sales". Price: not posted — see /pricing.

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

EmitsDiagnostic.creditTowardRepairFailed@1 · Diagnostic.creditTowardRepairRequested@1 · Diagnostic.creditedTowardRepair@1.

the SDK — diagnostic.creditTowardRepair
import { diagnostic } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await diagnostic.creditTowardRepair({"vin":"JN1BJ1CVXLW550653"})
POST /diagnostics/credit-toward-repair
curl -X POST https://apis.vin/diagnostics/credit-toward-repair \
  -H 'content-type: application/json' \
  -d '{"vin":"JN1BJ1CVXLW550653"}'

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:10.329Z · HTTP 200
{
  "type": "OK",
  "answers": "DiagnosticCreditTowardRepair@1",
  "value": {
    "vin": "JN1BJ1CVXLW550653",
    "noun": "diagnostic",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "credit": {
      "credited": false,
      "amountCents": 0,
      "currency": "USD",
      "reason": "no-fault-found"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "JN1BJ1CVXLW550653",
    "noun": "diagnostic",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "credit": {
      "credited": false,
      "amountCents": 0,
      "currency": "USD",
      "reason": "no-fault-found"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "shop-arc-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

More actions

clearCodes

diagnostic.clearCodes · POST /diagnostics/clear-codes · gate offer · sandbox · answers DiagnosticClearCodes@1

FieldTypeRequiredNotes
vinstringno

The gate is a 402 OFFER — the price and a hard ceiling on the wire, with a durable intent that executes on settlement. Never a wall, never "contact sales". Price: not posted — see /pricing.

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

EmitsDiagnostic.clearCodesRequested@1 · Diagnostic.codesCleared@1.

the SDK — diagnostic.clearCodes
import { diagnostic } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await diagnostic.clearCodes({"vin":"JN1BJ1CVXLW550653"})
POST /diagnostics/clear-codes
curl -X POST https://apis.vin/diagnostics/clear-codes \
  -H 'content-type: application/json' \
  -d '{"vin":"JN1BJ1CVXLW550653"}'

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:10.311Z · HTTP 200
{
  "type": "OK",
  "answers": "DiagnosticClearCodes@1",
  "value": {
    "vin": "JN1BJ1CVXLW550653",
    "noun": "diagnostic",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "clear": {
      "status": "cleared",
      "willReturn": false
    }
  },
  "evidence": {
    "vin": "JN1BJ1CVXLW550653",
    "noun": "diagnostic",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "clear": {
      "status": "cleared",
      "willReturn": false
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "shop-arc-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

freezeFrame

diagnostic.freezeFrame · GET /diagnostics/freeze-frame · gate none · sandbox · answers DiagnosticFreezeFrame@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /JN1BJ1CVXLW550653 (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 — diagnostic.freezeFrame
import { diagnostic } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await diagnostic.freezeFrame({"vin":"JN1BJ1CVXLW550653"})
GET /diagnostics/freeze-frame
curl 'https://apis.vin/diagnostics/freeze-frame?vin=JN1BJ1CVXLW550653'

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:10.339Z · HTTP 200
{
  "type": "OK",
  "answers": "DiagnosticFreezeFrame@1",
  "value": {
    "vin": "JN1BJ1CVXLW550653",
    "noun": "diagnostic",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "freezeFrame": {
      "available": false,
      "reason": "no-stored-fault"
    }
  },
  "evidence": {
    "vin": "JN1BJ1CVXLW550653",
    "noun": "diagnostic",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "freezeFrame": {
      "available": false,
      "reason": "no-stored-fault"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "shop-arc-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

liveData

diagnostic.liveData · GET /diagnostics/live-data · gate none · sandbox · answers DiagnosticLiveData@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /JN1BJ1CVXLW550653 (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 — diagnostic.liveData
import { diagnostic } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await diagnostic.liveData({"vin":"JN1BJ1CVXLW550653"})
GET /diagnostics/live-data
curl 'https://apis.vin/diagnostics/live-data?vin=JN1BJ1CVXLW550653'

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:10.349Z · HTTP 200
{
  "type": "OK",
  "answers": "DiagnosticLiveData@1",
  "value": {
    "vin": "JN1BJ1CVXLW550653",
    "noun": "diagnostic",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "live": {
      "rpm": 770,
      "coolantTempC": 95,
      "voltageTenths": 138
    }
  },
  "evidence": {
    "vin": "JN1BJ1CVXLW550653",
    "noun": "diagnostic",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "live": {
      "rpm": 770,
      "coolantTempC": 95,
      "voltageTenths": 138
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "shop-arc-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

pinpoint

diagnostic.pinpoint · POST /diagnostics/pinpoint · gate offer · sandbox · answers DiagnosticPinpoint@1

FieldTypeRequiredNotes
vinstringno

The gate is a 402 OFFER — the price and a hard ceiling on the wire, with a durable intent that executes on settlement. Never a wall, never "contact sales". Price: not posted — see /pricing.

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

EmitsDiagnostic.pinpointRequested@1 · Diagnostic.pinpointed@1.

the SDK — diagnostic.pinpoint
import { diagnostic } from 'apis.vin'

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

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:10.351Z · HTTP 200
{
  "type": "OK",
  "answers": "DiagnosticPinpoint@1",
  "value": {
    "vin": "JN1BJ1CVXLW550653",
    "noun": "diagnostic",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "match": {
      "status": "no-fault-found"
    }
  },
  "evidence": {
    "vin": "JN1BJ1CVXLW550653",
    "noun": "diagnostic",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "match": {
      "status": "no-fault-found"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "shop-arc-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

reproduce

diagnostic.reproduce · POST /diagnostics/reproduce · gate offer · sandbox · answers DiagnosticReproduce@1

FieldTypeRequiredNotes
vinstringno

The gate is a 402 OFFER — the price and a hard ceiling on the wire, with a durable intent that executes on settlement. Never a wall, never "contact sales". Price: not posted — see /pricing.

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

EmitsDiagnostic.reproduceRequested@1 · Diagnostic.reproduced@1.

the SDK — diagnostic.reproduce
import { diagnostic } from 'apis.vin'

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

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:10.354Z · HTTP 200
{
  "type": "OK",
  "answers": "DiagnosticReproduce@1",
  "value": {
    "vin": "JN1BJ1CVXLW550653",
    "noun": "diagnostic",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "test": {
      "id": "RT-efe494a9",
      "reproduced": false
    }
  },
  "evidence": {
    "vin": "JN1BJ1CVXLW550653",
    "noun": "diagnostic",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "test": {
      "id": "RT-efe494a9",
      "reproduced": false
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "shop-arc-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

roadTest

diagnostic.roadTest · POST /diagnostics/road-test · gate offer · sandbox · answers DiagnosticRoadTest@1

FieldTypeRequiredNotes
vinstringno

The gate is a 402 OFFER — the price and a hard ceiling on the wire, with a durable intent that executes on settlement. Never a wall, never "contact sales". Price: not posted — see /pricing.

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

EmitsDiagnostic.roadTestRequested@1 · Diagnostic.roadTested@1.

the SDK — diagnostic.roadTest
import { diagnostic } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await diagnostic.roadTest({"vin":"JN1BJ1CVXLW550653"})
POST /diagnostics/road-test
curl -X POST https://apis.vin/diagnostics/road-test \
  -H 'content-type: application/json' \
  -d '{"vin":"JN1BJ1CVXLW550653"}'

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:10.354Z · HTTP 200
{
  "type": "OK",
  "answers": "DiagnosticRoadTest@1",
  "value": {
    "vin": "JN1BJ1CVXLW550653",
    "noun": "diagnostic",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "test": {
      "id": "RT-508ef91c",
      "reproduced": false
    }
  },
  "evidence": {
    "vin": "JN1BJ1CVXLW550653",
    "noun": "diagnostic",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "test": {
      "id": "RT-508ef91c",
      "reproduced": false
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "shop-arc-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Data model

The record shape behind this noun — one entity, each property an evidence field. See the whole estate model on the data model page.

RepairOrder

Modeled

The noun drawn out — its record shape, its lifecycle, and how it is exercised end to end. 2 diagrams, rendered from the estate model.

Diagnostic · Class model

Diagnostic · State machine


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