docs.vin

detail

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

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

Identity

Noundetail
PillarServices (facets: 4 data · 10 services · 5 commerce)
Capabilities19 — 0 live · 19 sandbox · 0 declared
EntitiesReconditioning
Doorsdetail.vin
SDKVin.detail.* from apis.vin
Address/catalog/detail#{action} — the anchor IS the wire name minus detail.

Events

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

Discover & read

history

detail.history · GET /details/history · gate none · sandbox · answers DetailHistory@1

FieldTypeRequiredNotes
vinstringno

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

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

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.256Z · HTTP 200
{
  "type": "OK",
  "answers": "DetailHistory@1",
  "value": {
    "vin": "1GNEVHKW4PJ163009",
    "noun": "detail",
    "asOf": "2026-08-10",
    "grade": "clean",
    "package": "maintenance-detail",
    "events": [
      {
        "date": "2024-03-14",
        "kind": "routine",
        "description": "routine detail record"
      },
      {
        "date": "2024-11-02",
        "kind": "routine",
        "description": "routine detail record"
      }
    ]
  },
  "evidence": {
    "vin": "1GNEVHKW4PJ163009",
    "noun": "detail",
    "asOf": "2026-08-10",
    "grade": "clean",
    "package": "maintenance-detail",
    "events": [
      {
        "date": "2024-03-14",
        "kind": "routine",
        "description": "routine detail record"
      },
      {
        "date": "2024-11-02",
        "kind": "routine",
        "description": "routine detail record"
      }
    ]
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "condition-care-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

status

detail.status · GET /details/status · gate none · sandbox · answers DetailStatus@1

FieldTypeRequiredNotes
vinstringno

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

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

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.305Z · HTTP 200
{
  "type": "OK",
  "answers": "DetailStatus@1",
  "value": {
    "vin": "1GNEVHKW4PJ163009",
    "noun": "detail",
    "asOf": "2026-08-10",
    "grade": "clean",
    "package": "maintenance-detail",
    "detail": {
      "package": "maintenance-detail",
      "lastDetailDate": "2026-07-08"
    }
  },
  "evidence": {
    "vin": "1GNEVHKW4PJ163009",
    "noun": "detail",
    "asOf": "2026-08-10",
    "grade": "clean",
    "package": "maintenance-detail",
    "detail": {
      "package": "maintenance-detail",
      "lastDetailDate": "2026-07-08"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "condition-care-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

packageLookup

detail.packageLookup · GET /details/package-lookup · gate none · sandbox · answers DetailPackageLookup@1

FieldTypeRequiredNotes
vinstringno

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

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await detail.packageLookup({"vin":"1GNEVHKW4PJ163009"})
GET /details/package-lookup
curl 'https://apis.vin/details/package-lookup?vin=1GNEVHKW4PJ163009'

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.302Z · HTTP 200
{
  "type": "OK",
  "answers": "DetailPackageLookup@1",
  "value": {
    "vin": "1GNEVHKW4PJ163009",
    "noun": "detail",
    "asOf": "2026-08-10",
    "grade": "clean",
    "package": "maintenance-detail",
    "packageOffer": {
      "name": "maintenance-detail",
      "amountCents": 22000,
      "currency": "USD"
    }
  },
  "evidence": {
    "vin": "1GNEVHKW4PJ163009",
    "noun": "detail",
    "asOf": "2026-08-10",
    "grade": "clean",
    "package": "maintenance-detail",
    "packageOffer": {
      "name": "maintenance-detail",
      "amountCents": 22000,
      "currency": "USD"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "condition-care-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Quote & price

quote

detail.quote · POST /details/quote · gate offer · sandbox · answers DetailQuote@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.

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

EmitsDetail.quoteRequested@1 · Detail.quoted@1.

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

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

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.304Z · HTTP 200
{
  "type": "OK",
  "answers": "DetailQuote@1",
  "value": {
    "vin": "1GNEVHKW4PJ163009",
    "quoteId": "DQ-1",
    "serviceType": "recon",
    "costCents": 36212,
    "priceCents": 47076,
    "marginCents": 10864,
    "currency": "USD",
    "etaMinDays": 1,
    "etaMaxDays": 5,
    "rush": false,
    "expires": "2026-08-17T00:00:00.000Z"
  },
  "evidence": {
    "vin": "1GNEVHKW4PJ163009",
    "quoteId": "DQ-1",
    "serviceType": "recon",
    "costCents": 36212,
    "priceCents": 47076,
    "marginCents": 10864,
    "currency": "USD",
    "etaMinDays": 1,
    "etaMaxDays": 5,
    "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
  }
}

Apply & book

order

detail.order · POST /details/order · gate offer · sandbox · answers DetailOrder@1

FieldTypeRequiredNotes
vinstringyes
tierstringyesone of basic, standard, premium, full-detail
locationobjectno
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.

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

EmitsDetail.completed@1 · Detail.dispatched@1 · Detail.ordered@1 · ServiceOrder.detailed@1 · ServiceOrder.ordered@1 · ServiceOrder.settled@1.

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

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

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.300Z · HTTP 200
{
  "type": "OK",
  "answers": "DetailOrder@1",
  "value": {
    "vin": "1GNEVHKW4PJ163009",
    "noun": "detail",
    "asOf": "2026-08-10",
    "grade": "clean",
    "package": "maintenance-detail",
    "order": {
      "id": "ORD-64f77d46",
      "package": "maintenance-detail",
      "status": "placed",
      "amountCents": 22000,
      "currency": "USD"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "1GNEVHKW4PJ163009",
    "noun": "detail",
    "asOf": "2026-08-10",
    "grade": "clean",
    "package": "maintenance-detail",
    "order": {
      "id": "ORD-64f77d46",
      "package": "maintenance-detail",
      "status": "placed",
      "amountCents": 22000,
      "currency": "USD"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "condition-care-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

schedule

detail.schedule · POST /details/schedule · gate offer · sandbox · answers DetailSchedule@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.

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

EmitsDetail.scheduleRequested@1 · Detail.scheduled@1.

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

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

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.305Z · HTTP 200
{
  "type": "OK",
  "answers": "DetailSchedule@1",
  "value": {
    "vin": "1GNEVHKW4PJ163009",
    "noun": "detail",
    "asOf": "2026-08-10",
    "grade": "clean",
    "package": "maintenance-detail",
    "appointment": {
      "id": "DA-fe23e6bb",
      "date": "2026-08-12",
      "status": "scheduled"
    }
  },
  "evidence": {
    "vin": "1GNEVHKW4PJ163009",
    "noun": "detail",
    "asOf": "2026-08-10",
    "grade": "clean",
    "package": "maintenance-detail",
    "appointment": {
      "id": "DA-fe23e6bb",
      "date": "2026-08-12",
      "status": "scheduled"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "condition-care-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

subscribe

detail.subscribe · POST /details/subscribe · gate offer · sandbox · answers DetailSubscribe@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.

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

EmitsDetail.subscribeRequested@1 · Detail.subscribed@1.

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

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

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.305Z · HTTP 200
{
  "type": "OK",
  "answers": "DetailSubscribe@1",
  "value": {
    "vin": "1GNEVHKW4PJ163009",
    "noun": "detail",
    "asOf": "2026-08-10",
    "grade": "clean",
    "package": "maintenance-detail",
    "subscription": {
      "id": "SB-961e0922",
      "plan": "monthly-detail",
      "amountCents": 11000,
      "currency": "USD",
      "status": "active"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "1GNEVHKW4PJ163009",
    "noun": "detail",
    "asOf": "2026-08-10",
    "grade": "clean",
    "package": "maintenance-detail",
    "subscription": {
      "id": "SB-961e0922",
      "plan": "monthly-detail",
      "amountCents": 11000,
      "currency": "USD",
      "status": "active"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "condition-care-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Pay & settle

pay

detail.pay · POST /details/pay · gate offer · sandbox · answers DetailPay@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.

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

EmitsDetail.paid@1 · Detail.payFailed@1 · Detail.payRequested@1.

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

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

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.302Z · HTTP 200
{
  "type": "OK",
  "answers": "DetailPay@1",
  "value": {
    "vin": "1GNEVHKW4PJ163009",
    "noun": "detail",
    "asOf": "2026-08-10",
    "grade": "clean",
    "package": "maintenance-detail",
    "payment": {
      "id": "PAY-50b6a208",
      "status": "settled",
      "amountCents": 22000,
      "currency": "USD"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "1GNEVHKW4PJ163009",
    "noun": "detail",
    "asOf": "2026-08-10",
    "grade": "clean",
    "package": "maintenance-detail",
    "payment": {
      "id": "PAY-50b6a208",
      "status": "settled",
      "amountCents": 22000,
      "currency": "USD"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "condition-care-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

packageBuy

detail.packageBuy · POST /details/package-buy · gate offer · sandbox · answers DetailPackageBuy@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.

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

EmitsDetail.packageBought@1 · Detail.packageBuyRequested@1.

the SDK — detail.packageBuy
import { detail } from 'apis.vin'

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

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.301Z · HTTP 200
{
  "type": "OK",
  "answers": "DetailPackageBuy@1",
  "value": {
    "vin": "1GNEVHKW4PJ163009",
    "noun": "detail",
    "asOf": "2026-08-10",
    "grade": "clean",
    "package": "maintenance-detail",
    "order": {
      "id": "ORD-e73e2f0e",
      "package": "maintenance-detail",
      "status": "placed",
      "amountCents": 22000,
      "currency": "USD"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "1GNEVHKW4PJ163009",
    "noun": "detail",
    "asOf": "2026-08-10",
    "grade": "clean",
    "package": "maintenance-detail",
    "order": {
      "id": "ORD-e73e2f0e",
      "package": "maintenance-detail",
      "status": "placed",
      "amountCents": 22000,
      "currency": "USD"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "condition-care-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Fulfill & operate

perform

detail.perform · POST /details/perform · gate offer · sandbox · answers DetailPerform@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.

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

EmitsDetail.performFailed@1 · Detail.performRequested@1 · Detail.performed@1.

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

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

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.303Z · HTTP 200
{
  "type": "OK",
  "answers": "DetailPerform@1",
  "value": {
    "vin": "1GNEVHKW4PJ163009",
    "noun": "detail",
    "asOf": "2026-08-10",
    "grade": "clean",
    "package": "maintenance-detail",
    "work": {
      "id": "DW-bc6385af",
      "package": "maintenance-detail",
      "status": "performed"
    }
  },
  "evidence": {
    "vin": "1GNEVHKW4PJ163009",
    "noun": "detail",
    "asOf": "2026-08-10",
    "grade": "clean",
    "package": "maintenance-detail",
    "work": {
      "id": "DW-bc6385af",
      "package": "maintenance-detail",
      "status": "performed"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "condition-care-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

complete

detail.complete · POST /details/complete · gate offer · sandbox · answers DetailComplete@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.

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

EmitsDetail.completeRequested@1 · Detail.completed@1.

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

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

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.255Z · HTTP 200
{
  "type": "OK",
  "answers": "DetailComplete@1",
  "value": {
    "vin": "1GNEVHKW4PJ163009",
    "noun": "detail",
    "asOf": "2026-08-10",
    "grade": "clean",
    "package": "maintenance-detail",
    "work": {
      "id": "DW-8f281fd5",
      "package": "maintenance-detail",
      "status": "completed"
    }
  },
  "evidence": {
    "vin": "1GNEVHKW4PJ163009",
    "noun": "detail",
    "asOf": "2026-08-10",
    "grade": "clean",
    "package": "maintenance-detail",
    "work": {
      "id": "DW-8f281fd5",
      "package": "maintenance-detail",
      "status": "completed"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "condition-care-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

More actions

beforeAfter

detail.beforeAfter · GET /details/before-after · gate none · sandbox · answers DetailBeforeAfter@1

FieldTypeRequiredNotes
vinstringno

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

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await detail.beforeAfter({"vin":"1GNEVHKW4PJ163009"})
GET /details/before-after
curl 'https://apis.vin/details/before-after?vin=1GNEVHKW4PJ163009'

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.254Z · HTTP 200
{
  "type": "OK",
  "answers": "DetailBeforeAfter@1",
  "value": {
    "vin": "1GNEVHKW4PJ163009",
    "noun": "detail",
    "asOf": "2026-08-10",
    "grade": "clean",
    "package": "maintenance-detail",
    "photos": {
      "beforeId": "PH-b66b2109",
      "afterId": "PH-efe9f564",
      "package": "maintenance-detail"
    }
  },
  "evidence": {
    "vin": "1GNEVHKW4PJ163009",
    "noun": "detail",
    "asOf": "2026-08-10",
    "grade": "clean",
    "package": "maintenance-detail",
    "photos": {
      "beforeId": "PH-b66b2109",
      "afterId": "PH-efe9f564",
      "package": "maintenance-detail"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "condition-care-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

ceramicCoat

detail.ceramicCoat · POST /details/ceramic-coat · gate offer · sandbox · answers DetailCeramicCoat@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.

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

EmitsDetail.ceramicCoatRequested@1 · Detail.ceramicCoated@1.

the SDK — detail.ceramicCoat
import { detail } from 'apis.vin'

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

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.255Z · HTTP 200
{
  "type": "OK",
  "answers": "DetailCeramicCoat@1",
  "value": {
    "vin": "1GNEVHKW4PJ163009",
    "noun": "detail",
    "asOf": "2026-08-10",
    "grade": "clean",
    "package": "maintenance-detail",
    "coating": {
      "id": "CC-d3c34132",
      "status": "applied",
      "warrantyMonths": 24
    }
  },
  "evidence": {
    "vin": "1GNEVHKW4PJ163009",
    "noun": "detail",
    "asOf": "2026-08-10",
    "grade": "clean",
    "package": "maintenance-detail",
    "coating": {
      "id": "CC-d3c34132",
      "status": "applied",
      "warrantyMonths": 24
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "condition-care-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

clayBar

detail.clayBar · POST /details/clay-bar · gate offer · sandbox · answers DetailClayBar@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.

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

EmitsDetail.clayBarRequested@1 · Detail.clayBared@1.

the SDK — detail.clayBar
import { detail } from 'apis.vin'

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

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.255Z · HTTP 200
{
  "type": "OK",
  "answers": "DetailClayBar@1",
  "value": {
    "vin": "1GNEVHKW4PJ163009",
    "noun": "detail",
    "asOf": "2026-08-10",
    "grade": "clean",
    "package": "maintenance-detail",
    "step": {
      "operation": "clayBar",
      "status": "performed",
      "includedIn": "maintenance-detail"
    }
  },
  "evidence": {
    "vin": "1GNEVHKW4PJ163009",
    "noun": "detail",
    "asOf": "2026-08-10",
    "grade": "clean",
    "package": "maintenance-detail",
    "step": {
      "operation": "clayBar",
      "status": "performed",
      "includedIn": "maintenance-detail"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "condition-care-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

interiorShampoo

detail.interiorShampoo · POST /details/interior-shampoo · gate offer · sandbox · answers DetailInteriorShampoo@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.

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

EmitsDetail.interiorShampooRequested@1 · Detail.interiorShampooed@1.

the SDK — detail.interiorShampoo
import { detail } from 'apis.vin'

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

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.291Z · HTTP 200
{
  "type": "OK",
  "answers": "DetailInteriorShampoo@1",
  "value": {
    "vin": "1GNEVHKW4PJ163009",
    "noun": "detail",
    "asOf": "2026-08-10",
    "grade": "clean",
    "package": "maintenance-detail",
    "step": {
      "operation": "interiorShampoo",
      "status": "performed",
      "includedIn": "maintenance-detail"
    }
  },
  "evidence": {
    "vin": "1GNEVHKW4PJ163009",
    "noun": "detail",
    "asOf": "2026-08-10",
    "grade": "clean",
    "package": "maintenance-detail",
    "step": {
      "operation": "interiorShampoo",
      "status": "performed",
      "includedIn": "maintenance-detail"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "condition-care-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

odorTreat

detail.odorTreat · POST /details/odor-treat · gate offer · sandbox · answers DetailOdorTreat@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.

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

EmitsDetail.odorTreatRequested@1 · Detail.odorTreated@1.

the SDK — detail.odorTreat
import { detail } from 'apis.vin'

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

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.292Z · HTTP 200
{
  "type": "OK",
  "answers": "DetailOdorTreat@1",
  "value": {
    "vin": "1GNEVHKW4PJ163009",
    "noun": "detail",
    "asOf": "2026-08-10",
    "grade": "clean",
    "package": "maintenance-detail",
    "step": {
      "operation": "odorTreat",
      "status": "performed",
      "includedIn": "maintenance-detail"
    }
  },
  "evidence": {
    "vin": "1GNEVHKW4PJ163009",
    "noun": "detail",
    "asOf": "2026-08-10",
    "grade": "clean",
    "package": "maintenance-detail",
    "step": {
      "operation": "odorTreat",
      "status": "performed",
      "includedIn": "maintenance-detail"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "condition-care-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

ozone

detail.ozone · POST /details/ozone · gate offer · sandbox · answers DetailOzone@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.

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

EmitsDetail.ozoneRequested@1 · Detail.ozoned@1.

the SDK — detail.ozone
import { detail } from 'apis.vin'

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

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.301Z · HTTP 200
{
  "type": "OK",
  "answers": "DetailOzone@1",
  "value": {
    "vin": "1GNEVHKW4PJ163009",
    "noun": "detail",
    "asOf": "2026-08-10",
    "grade": "clean",
    "package": "maintenance-detail",
    "step": {
      "operation": "ozone",
      "status": "performed",
      "includedIn": "maintenance-detail"
    }
  },
  "evidence": {
    "vin": "1GNEVHKW4PJ163009",
    "noun": "detail",
    "asOf": "2026-08-10",
    "grade": "clean",
    "package": "maintenance-detail",
    "step": {
      "operation": "ozone",
      "status": "performed",
      "includedIn": "maintenance-detail"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "condition-care-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

polish

detail.polish · POST /details/polish · gate offer · sandbox · answers DetailPolish@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.

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

EmitsDetail.polishRequested@1 · Detail.polished@1.

the SDK — detail.polish
import { detail } from 'apis.vin'

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

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.303Z · HTTP 200
{
  "type": "OK",
  "answers": "DetailPolish@1",
  "value": {
    "vin": "1GNEVHKW4PJ163009",
    "noun": "detail",
    "asOf": "2026-08-10",
    "grade": "clean",
    "package": "maintenance-detail",
    "step": {
      "operation": "polish",
      "status": "performed",
      "includedIn": "maintenance-detail"
    }
  },
  "evidence": {
    "vin": "1GNEVHKW4PJ163009",
    "noun": "detail",
    "asOf": "2026-08-10",
    "grade": "clean",
    "package": "maintenance-detail",
    "step": {
      "operation": "polish",
      "status": "performed",
      "includedIn": "maintenance-detail"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "condition-care-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

wax

detail.wax · POST /details/wax · gate offer · sandbox · answers DetailWax@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.

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

EmitsDetail.waxRequested@1 · Detail.waxed@1.

the SDK — detail.wax
import { detail } from 'apis.vin'

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

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.306Z · HTTP 200
{
  "type": "OK",
  "answers": "DetailWax@1",
  "value": {
    "vin": "1GNEVHKW4PJ163009",
    "noun": "detail",
    "asOf": "2026-08-10",
    "grade": "clean",
    "package": "maintenance-detail",
    "step": {
      "operation": "wax",
      "status": "performed",
      "includedIn": "maintenance-detail"
    }
  },
  "evidence": {
    "vin": "1GNEVHKW4PJ163009",
    "noun": "detail",
    "asOf": "2026-08-10",
    "grade": "clean",
    "package": "maintenance-detail",
    "step": {
      "operation": "wax",
      "status": "performed",
      "includedIn": "maintenance-detail"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "condition-care-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.

Reconditioning


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