docs.vin

order

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

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

Identity

Nounorder
PillarServices (facets: 4 data · 7 services · 6 commerce)
Capabilities17 — 0 live · 17 sandbox · 0 declared
EntitiesServiceOrder
Doorsaggregator.vin
SDKVin.order.* from apis.vin
Address/catalog/order#{action} — the anchor IS the wire name minus order.

Lifecycle

ServiceOrderFactoryOrderFSM: 5 states, 5 transitions — Confirmed · Produced · Shipped · Rescheduled · ConstraintHold. Each transition is a past-tense event on the record.

Events

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

Discover & read

read

order.read · GET /orders/read · gate none · sandbox · answers OrderRead@1

FieldTypeRequiredNotes
vinstringno

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

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

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:14.697Z · HTTP 200
{
  "type": "OK",
  "answers": "OrderRead@1",
  "value": {
    "vin": "1C4RJKBG5N8535019",
    "noun": "order",
    "asOf": "2026-08-10",
    "order": {
      "id": "ORD-be336f4f",
      "dealPosition": "QUOTED",
      "status": "quote",
      "totalCents": 2300000,
      "currency": "USD"
    }
  },
  "evidence": {
    "vin": "1C4RJKBG5N8535019",
    "noun": "order",
    "asOf": "2026-08-10",
    "order": {
      "id": "ORD-be336f4f",
      "dealPosition": "QUOTED",
      "status": "quote",
      "totalCents": 2300000,
      "currency": "USD"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "paper-commerce-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

status

order.status · GET /orders/status · gate none · sandbox · answers OrderStatus@1

FieldTypeRequiredNotes
vinstringno

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

EmitsFactoryOrder.constraintHeld@1 · FactoryOrder.rescheduled@1.

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

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

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:14.703Z · HTTP 200
{
  "type": "OK",
  "answers": "OrderStatus@1",
  "value": {
    "vin": "1C4RJKBG5N8535019",
    "noun": "order",
    "asOf": "2026-08-10",
    "order": {
      "id": "ORD-be336f4f",
      "dealPosition": "QUOTED",
      "status": "quote",
      "totalCents": 2300000,
      "currency": "USD"
    }
  },
  "evidence": {
    "vin": "1C4RJKBG5N8535019",
    "noun": "order",
    "asOf": "2026-08-10",
    "order": {
      "id": "ORD-be336f4f",
      "dealPosition": "QUOTED",
      "status": "quote",
      "totalCents": 2300000,
      "currency": "USD"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "paper-commerce-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Quote & price

quote

order.quote · POST /orders/quote · gate offer · sandbox · answers OrderQuote@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) · /1C4RJKBG5N8535019 (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.

EmitsOrder.failed@1 · Order.quoted@1.

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

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

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:14.697Z · HTTP 200
{
  "type": "OK",
  "answers": "OrderQuote@1",
  "value": {
    "vin": "1C4RJKBG5N8535019",
    "noun": "order",
    "asOf": "2026-08-10",
    "quote": {
      "id": "ORD-be336f4f",
      "priceCents": 2300000,
      "currency": "USD",
      "validUntil": "2026-08-17"
    }
  },
  "evidence": {
    "vin": "1C4RJKBG5N8535019",
    "noun": "order",
    "asOf": "2026-08-10",
    "quote": {
      "id": "ORD-be336f4f",
      "priceCents": 2300000,
      "currency": "USD",
      "validUntil": "2026-08-17"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "paper-commerce-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

terms

order.terms · GET /orders/terms · gate none · sandbox · answers OrderTerms@1

FieldTypeRequiredNotes
vinstringno

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

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

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:14.709Z · HTTP 200
{
  "type": "OK",
  "answers": "OrderTerms@1",
  "value": {
    "vin": "1C4RJKBG5N8535019",
    "noun": "order",
    "asOf": "2026-08-10",
    "terms": {
      "id": "ORD-be336f4f",
      "decision": "approved",
      "rateBand": "best",
      "termMonths": 60,
      "currency": "USD"
    }
  },
  "evidence": {
    "vin": "1C4RJKBG5N8535019",
    "noun": "order",
    "asOf": "2026-08-10",
    "terms": {
      "id": "ORD-be336f4f",
      "decision": "approved",
      "rateBand": "best",
      "termMonths": 60,
      "currency": "USD"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "paper-commerce-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Apply & book

reserve

order.reserve · POST /orders/reserve · gate offer · sandbox · answers OrderReserve@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) · /1C4RJKBG5N8535019 (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.

EmitsOrder.reserved@1.

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

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

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:14.703Z · HTTP 200
{
  "type": "OK",
  "answers": "OrderReserve@1",
  "value": {
    "vin": "1C4RJKBG5N8535019",
    "noun": "order",
    "asOf": "2026-08-10",
    "reservation": {
      "status": "reserved",
      "id": "ORD-be336f4f",
      "holdDays": 3,
      "expiresOn": "2026-08-13"
    }
  },
  "evidence": {
    "vin": "1C4RJKBG5N8535019",
    "noun": "order",
    "asOf": "2026-08-10",
    "reservation": {
      "status": "reserved",
      "id": "ORD-be336f4f",
      "holdDays": 3,
      "expiresOn": "2026-08-13"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "paper-commerce-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

create

order.create · POST /orders/create · gate offer · sandbox · answers OrderCreate@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) · /1C4RJKBG5N8535019 (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.

EmitsOrder.created@1.

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

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

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:14.677Z · HTTP 200
{
  "type": "OK",
  "answers": "OrderCreate@1",
  "value": {
    "vin": "1C4RJKBG5N8535019",
    "noun": "order",
    "asOf": "2026-08-10",
    "order": {
      "status": "existing-order",
      "id": "ORD-be336f4f",
      "dealPosition": "QUOTED"
    }
  },
  "evidence": {
    "vin": "1C4RJKBG5N8535019",
    "noun": "order",
    "asOf": "2026-08-10",
    "order": {
      "status": "existing-order",
      "id": "ORD-be336f4f",
      "dealPosition": "QUOTED"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "paper-commerce-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

checkout

order.checkout · POST /orders/checkout · gate offer · sandbox · answers OrderCheckout@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) · /1C4RJKBG5N8535019 (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.

EmitsOrder.checkedOut@1 · Order.failed@1.

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

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

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:14.671Z · HTTP 200
{
  "type": "OK",
  "answers": "OrderCheckout@1",
  "value": {
    "vin": "1C4RJKBG5N8535019",
    "noun": "order",
    "asOf": "2026-08-10",
    "checkout": {
      "status": "checkout-opened",
      "id": "ORD-be336f4f"
    }
  },
  "evidence": {
    "vin": "1C4RJKBG5N8535019",
    "noun": "order",
    "asOf": "2026-08-10",
    "checkout": {
      "status": "checkout-opened",
      "id": "ORD-be336f4f"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "paper-commerce-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Pay & settle

pay

order.pay · POST /orders/pay · gate offer · sandbox · answers OrderPay@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) · /1C4RJKBG5N8535019 (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.

EmitsOrder.failed@1 · Order.paid@1.

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

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

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:14.697Z · HTTP 200
{
  "type": "OK",
  "answers": "OrderPay@1",
  "value": {
    "vin": "1C4RJKBG5N8535019",
    "noun": "order",
    "asOf": "2026-08-10",
    "payment": {
      "id": "PAY-eb89f8ad",
      "amountCents": 2498250,
      "currency": "USD",
      "status": "settled"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "1C4RJKBG5N8535019",
    "noun": "order",
    "asOf": "2026-08-10",
    "payment": {
      "id": "PAY-eb89f8ad",
      "amountCents": 2498250,
      "currency": "USD",
      "status": "settled"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "paper-commerce-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

deposit

order.deposit · POST /orders/deposit · gate offer · sandbox · answers OrderDeposit@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) · /1C4RJKBG5N8535019 (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.

EmitsOrder.deposited@1 · Order.failed@1.

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

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

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:14.681Z · HTTP 200
{
  "type": "OK",
  "answers": "OrderDeposit@1",
  "value": {
    "vin": "1C4RJKBG5N8535019",
    "noun": "order",
    "asOf": "2026-08-10",
    "deposit": {
      "id": "OD-60550d49",
      "amountCents": 50000,
      "currency": "USD",
      "status": "held",
      "refundable": true
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "1C4RJKBG5N8535019",
    "noun": "order",
    "asOf": "2026-08-10",
    "deposit": {
      "id": "OD-60550d49",
      "amountCents": 50000,
      "currency": "USD",
      "status": "held",
      "refundable": true
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "paper-commerce-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

finance

order.finance · POST /orders/finance · gate offer · sandbox · answers OrderFinance@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) · /1C4RJKBG5N8535019 (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.

EmitsOrder.failed@1 · Order.financed@1.

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

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

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:14.688Z · HTTP 200
{
  "type": "OK",
  "answers": "OrderFinance@1",
  "value": {
    "vin": "1C4RJKBG5N8535019",
    "noun": "order",
    "asOf": "2026-08-10",
    "financing": {
      "id": "ORD-be336f4f",
      "decision": "approved",
      "rateBand": "best",
      "stipulations": [],
      "tier": "super-prime"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "1C4RJKBG5N8535019",
    "noun": "order",
    "asOf": "2026-08-10",
    "financing": {
      "id": "ORD-be336f4f",
      "decision": "approved",
      "rateBand": "best",
      "stipulations": [],
      "tier": "super-prime"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "paper-commerce-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

refund

order.refund · POST /orders/refund · gate offer · sandbox · answers OrderRefund@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) · /1C4RJKBG5N8535019 (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.

EmitsOrder.failed@1 · Order.refunded@1.

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

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

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:14.698Z · HTTP 200
{
  "type": "OK",
  "answers": "OrderRefund@1",
  "value": {
    "vin": "1C4RJKBG5N8535019",
    "noun": "order",
    "asOf": "2026-08-10",
    "refund": {
      "id": "RF-35d8a0b3",
      "amountCents": 50000,
      "currency": "USD",
      "status": "refunded"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "1C4RJKBG5N8535019",
    "noun": "order",
    "asOf": "2026-08-10",
    "refund": {
      "id": "RF-35d8a0b3",
      "amountCents": 50000,
      "currency": "USD",
      "status": "refunded"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "paper-commerce-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Fulfill & operate

complete

order.complete · POST /orders/complete · gate offer · sandbox · answers OrderComplete@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) · /1C4RJKBG5N8535019 (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.

EmitsOrder.completed@1.

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

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

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:14.671Z · HTTP 200
{
  "type": "OK",
  "answers": "OrderComplete@1",
  "value": {
    "vin": "1C4RJKBG5N8535019",
    "noun": "order",
    "asOf": "2026-08-10",
    "completion": {
      "status": "not-yet-delivered",
      "id": "ORD-be336f4f",
      "dealPosition": "QUOTED"
    }
  },
  "evidence": {
    "vin": "1C4RJKBG5N8535019",
    "noun": "order",
    "asOf": "2026-08-10",
    "completion": {
      "status": "not-yet-delivered",
      "id": "ORD-be336f4f",
      "dealPosition": "QUOTED"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "paper-commerce-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Lifecycle & state

cancel

order.cancel · POST /orders/cancel · gate offer · sandbox · answers OrderCancel@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) · /1C4RJKBG5N8535019 (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.

EmitsOrder.canceled@1.

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

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

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:14.662Z · HTTP 200
{
  "type": "OK",
  "answers": "OrderCancel@1",
  "value": {
    "vin": "1C4RJKBG5N8535019",
    "noun": "order",
    "asOf": "2026-08-10",
    "cancellation": {
      "status": "cancelled",
      "id": "ORD-be336f4f"
    }
  },
  "evidence": {
    "vin": "1C4RJKBG5N8535019",
    "noun": "order",
    "asOf": "2026-08-10",
    "cancellation": {
      "status": "cancelled",
      "id": "ORD-be336f4f"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "paper-commerce-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

More actions

fulfill

order.fulfill · POST /orders/fulfill · gate offer · sandbox · answers OrderFulfill@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) · /1C4RJKBG5N8535019 (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.

EmitsOrder.fulfilled@1.

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

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

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:14.691Z · HTTP 200
{
  "type": "OK",
  "answers": "OrderFulfill@1",
  "value": {
    "vin": "1C4RJKBG5N8535019",
    "noun": "order",
    "asOf": "2026-08-10",
    "fulfillment": {
      "status": "not-yet-funded",
      "id": "ORD-be336f4f",
      "dealPosition": "QUOTED"
    }
  },
  "evidence": {
    "vin": "1C4RJKBG5N8535019",
    "noun": "order",
    "asOf": "2026-08-10",
    "fulfillment": {
      "status": "not-yet-funded",
      "id": "ORD-be336f4f",
      "dealPosition": "QUOTED"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "paper-commerce-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

lineItems

order.lineItems · GET /orders/line-items · gate key · sandbox · answers OrderLineItems@1

FieldTypeRequiredNotes
vinstringno

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

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await order.lineItems({"vin":"1C4RJKBG5N8535019"})
GET /orders/line-items
curl 'https://apis.vin/orders/line-items?vin=1C4RJKBG5N8535019'

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:14.693Z · HTTP 200
{
  "type": "OK",
  "answers": "OrderLineItems@1",
  "value": {
    "vin": "1C4RJKBG5N8535019",
    "noun": "order",
    "asOf": "2026-08-10",
    "lineItems": {
      "id": "ORD-be336f4f",
      "items": [
        {
          "kind": "vehicle",
          "vin": "1C4RJKBG5N8535019",
          "amountCents": 2300000
        },
        {
          "kind": "doc-fee",
          "amountCents": 8500
        },
        {
          "kind": "sales-tax",
          "amountCents": 189750
        }
      ],
      "totalCents": 2498250,
      "currency": "USD"
    }
  },
  "evidence": {
    "vin": "1C4RJKBG5N8535019",
    "noun": "order",
    "asOf": "2026-08-10",
    "lineItems": {
      "id": "ORD-be336f4f",
      "items": [
        {
          "kind": "vehicle",
          "vin": "1C4RJKBG5N8535019",
          "amountCents": 2300000
        },
        {
          "kind": "doc-fee",
          "amountCents": 8500
        },
        {
          "kind": "sales-tax",
          "amountCents": 189750
        }
      ],
      "totalCents": 2498250,
      "currency": "USD"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "paper-commerce-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

modify

order.modify · POST /orders/modify · gate offer · sandbox · answers OrderModify@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) · /1C4RJKBG5N8535019 (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.

EmitsOrder.modified@1.

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

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

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:14.697Z · HTTP 200
{
  "type": "OK",
  "answers": "OrderModify@1",
  "value": {
    "vin": "1C4RJKBG5N8535019",
    "noun": "order",
    "asOf": "2026-08-10",
    "modification": {
      "status": "modified",
      "id": "ORD-be336f4f"
    }
  },
  "evidence": {
    "vin": "1C4RJKBG5N8535019",
    "noun": "order",
    "asOf": "2026-08-10",
    "modification": {
      "status": "modified",
      "id": "ORD-be336f4f"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "paper-commerce-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

saveForLater

order.saveForLater · POST /orders/save-for-later · gate key · sandbox · answers OrderSaveForLater@1

No input — this capability takes no request body.

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

EmitsOrder.laterSaved@1.

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

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

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-16T14:50:09.948Z · HTTP 200
{
  "type": "OK",
  "answers": "OrderSaveForLater@1",
  "value": {
    "vin": "1HGCM82633A004352",
    "noun": "order",
    "asOf": "2026-08-10",
    "saved": {
      "status": "saved",
      "id": "ORD-8e8507ec",
      "listId": "SFL-a6f336b3"
    }
  },
  "evidence": {
    "vin": "1HGCM82633A004352",
    "noun": "order",
    "asOf": "2026-08-10",
    "saved": {
      "status": "saved",
      "id": "ORD-8e8507ec",
      "listId": "SFL-a6f336b3"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "paper-commerce-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.

ServiceOrder

Schema

PropertyTypeNotes
ididord_
vinstring
servicestring
providerIdref→Provider
locationstring
authorityref→Mandate
statusServiceFSM

Relationships

FromToCardinalityAs
vehicleorder1:0..*serviced
orderprovider*:1dispatched to

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