docs.vin

workorder

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

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

Identity

Nounworkorder
PillarServices (facets: 6 data · 8 services · 6 commerce)
Capabilities20 — 0 live · 20 sandbox · 0 declared
EntitiesWorkorder
Doorsaggregator.vin
SDKVin.workorder.* from apis.vin
Address/catalog/workorder#{action} — the anchor IS the wire name minus workorder.

Lifecycle

WorkorderWorkorderFSM: 9 states, 9 transitions — Opened · Estimated · Approved · Assigned · Dispatched · Performed · QCed · Invoiced · Settled. Each transition is a past-tense event on the record.

Events

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

Discover & read

read

workorder.read · GET /workorders/read · gate none · sandbox · answers WorkorderRead@1

FieldTypeRequiredNotes
vinstringno

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

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

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:19.328Z · HTTP 200
{
  "type": "OK",
  "answers": "WorkorderRead@1",
  "value": {
    "vin": "2C4RC1BG0PR607238",
    "noun": "workorder",
    "asOf": "2026-08-10",
    "woId": "WO-dba6131d",
    "position": "Dispatched",
    "lineCount": 2,
    "totalCents": 88444,
    "currency": "USD"
  },
  "evidence": {
    "vin": "2C4RC1BG0PR607238",
    "noun": "workorder",
    "asOf": "2026-08-10",
    "woId": "WO-dba6131d",
    "position": "Dispatched",
    "lineCount": 2,
    "totalCents": 88444,
    "currency": "USD"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "shop-arc-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

history

workorder.history · GET /workorders/history · gate none · sandbox · answers WorkorderHistory@1

FieldTypeRequiredNotes
vinstringno

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

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

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:19.297Z · HTTP 200
{
  "type": "OK",
  "answers": "WorkorderHistory@1",
  "value": {
    "vin": "2C4RC1BG0PR607238",
    "noun": "workorder",
    "asOf": "2026-08-10",
    "woId": "WO-dba6131d",
    "position": "Dispatched",
    "events": [
      {
        "date": "2024-03-14",
        "kind": "routine",
        "description": "routine work order record"
      },
      {
        "date": "2024-11-02",
        "kind": "routine",
        "description": "routine work order record"
      }
    ]
  },
  "evidence": {
    "vin": "2C4RC1BG0PR607238",
    "noun": "workorder",
    "asOf": "2026-08-10",
    "woId": "WO-dba6131d",
    "position": "Dispatched",
    "events": [
      {
        "date": "2024-03-14",
        "kind": "routine",
        "description": "routine work order record"
      },
      {
        "date": "2024-11-02",
        "kind": "routine",
        "description": "routine work order record"
      }
    ]
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "shop-arc-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

status

workorder.status · GET /workorders/status · gate none · sandbox · answers WorkorderStatus@1

FieldTypeRequiredNotes
vinstringno

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

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

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:19.336Z · HTTP 200
{
  "type": "OK",
  "answers": "WorkorderStatus@1",
  "value": {
    "vin": "2C4RC1BG0PR607238",
    "noun": "workorder",
    "asOf": "2026-08-10",
    "woId": "WO-dba6131d",
    "position": "Dispatched",
    "lineCount": 2,
    "totalCents": 88444,
    "currency": "USD"
  },
  "evidence": {
    "vin": "2C4RC1BG0PR607238",
    "noun": "workorder",
    "asOf": "2026-08-10",
    "woId": "WO-dba6131d",
    "position": "Dispatched",
    "lineCount": 2,
    "totalCents": 88444,
    "currency": "USD"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "shop-arc-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

slaCheck

workorder.slaCheck · GET /workorders/sla-check · gate none · sandbox · answers WorkorderSlaCheck@1

FieldTypeRequiredNotes
vinstringno

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

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await workorder.slaCheck({"vin":"2C4RC1BG0PR607238"})
GET /workorders/sla-check
curl 'https://apis.vin/workorders/sla-check?vin=2C4RC1BG0PR607238'

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:19.328Z · HTTP 200
{
  "type": "OK",
  "answers": "WorkorderSlaCheck@1",
  "value": {
    "vin": "2C4RC1BG0PR607238",
    "noun": "workorder",
    "asOf": "2026-08-10",
    "woId": "WO-dba6131d",
    "position": "Dispatched",
    "sla": {
      "targetDays": 7,
      "ageDays": 5,
      "withinSla": true
    }
  },
  "evidence": {
    "vin": "2C4RC1BG0PR607238",
    "noun": "workorder",
    "asOf": "2026-08-10",
    "woId": "WO-dba6131d",
    "position": "Dispatched",
    "sla": {
      "targetDays": 7,
      "ageDays": 5,
      "withinSla": true
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "shop-arc-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Quote & price

quote

workorder.quote · POST /workorders/quote · gate offer · sandbox · answers WorkorderQuote@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) · /2C4RC1BG0PR607238 (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.

EmitsWorkorder.quoteRequested@1 · Workorder.quoted@1.

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

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

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:19.328Z · HTTP 200
{
  "type": "OK",
  "answers": "WorkorderQuote@1",
  "value": {
    "vin": "2C4RC1BG0PR607238",
    "noun": "workorder",
    "asOf": "2026-08-10",
    "woId": "WO-dba6131d",
    "position": "Dispatched",
    "estimate": {
      "id": "EST-35a726b4",
      "stance": "Declined",
      "amountCents": 88444,
      "currency": "USD"
    }
  },
  "evidence": {
    "vin": "2C4RC1BG0PR607238",
    "noun": "workorder",
    "asOf": "2026-08-10",
    "woId": "WO-dba6131d",
    "position": "Dispatched",
    "estimate": {
      "id": "EST-35a726b4",
      "stance": "Declined",
      "amountCents": 88444,
      "currency": "USD"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "shop-arc-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

estimate

workorder.estimate · POST /workorders/estimate · gate offer · sandbox · answers WorkorderEstimate@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) · /2C4RC1BG0PR607238 (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.

EmitsWorkorder.estimateRequested@1 · Workorder.estimated@1.

the SDK — workorder.estimate
import { workorder } from 'apis.vin'

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

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:19.295Z · HTTP 200
{
  "type": "OK",
  "answers": "WorkorderEstimate@1",
  "value": {
    "vin": "2C4RC1BG0PR607238",
    "noun": "workorder",
    "asOf": "2026-08-10",
    "woId": "WO-dba6131d",
    "position": "Dispatched",
    "estimate": {
      "id": "EST-27ec7a96",
      "stance": "Declined",
      "amountCents": 88444,
      "currency": "USD"
    }
  },
  "evidence": {
    "vin": "2C4RC1BG0PR607238",
    "noun": "workorder",
    "asOf": "2026-08-10",
    "woId": "WO-dba6131d",
    "position": "Dispatched",
    "estimate": {
      "id": "EST-27ec7a96",
      "stance": "Declined",
      "amountCents": 88444,
      "currency": "USD"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "shop-arc-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Apply & book

open

workorder.open · POST /workorders/open · gate offer · sandbox · answers WorkorderOpen@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) · /2C4RC1BG0PR607238 (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.

EmitsWorkorder.openRequested@1 · Workorder.opened@1.

the SDK — workorder.open
import { workorder } from 'apis.vin'

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

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:19.318Z · HTTP 200
{
  "type": "OK",
  "answers": "WorkorderOpen@1",
  "value": {
    "vin": "2C4RC1BG0PR607238",
    "noun": "workorder",
    "asOf": "2026-08-10",
    "woId": "WO-dba6131d",
    "position": "Dispatched",
    "status": "open"
  },
  "evidence": {
    "vin": "2C4RC1BG0PR607238",
    "noun": "workorder",
    "asOf": "2026-08-10",
    "woId": "WO-dba6131d",
    "position": "Dispatched",
    "status": "open"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "shop-arc-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

assign

workorder.assign · POST /workorders/assign · gate offer · sandbox · answers WorkorderAssign@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) · /2C4RC1BG0PR607238 (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.

EmitsWorkorder.assignRequested@1 · Workorder.assigned@1.

the SDK — workorder.assign
import { workorder } from 'apis.vin'

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

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:19.286Z · HTTP 200
{
  "type": "OK",
  "answers": "WorkorderAssign@1",
  "value": {
    "vin": "2C4RC1BG0PR607238",
    "noun": "workorder",
    "asOf": "2026-08-10",
    "woId": "WO-dba6131d",
    "position": "Dispatched",
    "operation": "assign",
    "status": "completed"
  },
  "evidence": {
    "vin": "2C4RC1BG0PR607238",
    "noun": "workorder",
    "asOf": "2026-08-10",
    "woId": "WO-dba6131d",
    "position": "Dispatched",
    "operation": "assign",
    "status": "completed"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "shop-arc-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

dispatch

workorder.dispatch · POST /workorders/dispatch · gate offer · sandbox · answers WorkorderDispatch@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) · /2C4RC1BG0PR607238 (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.

EmitsWorkorder.dispatchFailed@1 · Workorder.dispatchRequested@1 · Workorder.dispatched@1.

the SDK — workorder.dispatch
import { workorder } from 'apis.vin'

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

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:19.291Z · HTTP 200
{
  "type": "OK",
  "answers": "WorkorderDispatch@1",
  "value": {
    "vin": "2C4RC1BG0PR607238",
    "noun": "workorder",
    "asOf": "2026-08-10",
    "woId": "WO-dba6131d",
    "position": "Dispatched",
    "operation": "dispatch",
    "status": "in-progress"
  },
  "evidence": {
    "vin": "2C4RC1BG0PR607238",
    "noun": "workorder",
    "asOf": "2026-08-10",
    "woId": "WO-dba6131d",
    "position": "Dispatched",
    "operation": "dispatch",
    "status": "in-progress"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "shop-arc-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Pay & settle

pay

workorder.pay · POST /workorders/pay · gate offer · sandbox · answers WorkorderPay@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) · /2C4RC1BG0PR607238 (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.

EmitsWorkorder.paid@1 · Workorder.payFailed@1 · Workorder.payRequested@1.

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

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

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:19.319Z · HTTP 200
{
  "type": "OK",
  "answers": "WorkorderPay@1",
  "value": {
    "vin": "2C4RC1BG0PR607238",
    "noun": "workorder",
    "asOf": "2026-08-10",
    "woId": "WO-dba6131d",
    "position": "Dispatched",
    "payment": {
      "id": "PAY-20b7804e",
      "status": "settled",
      "amountCents": 88444,
      "currency": "USD"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "2C4RC1BG0PR607238",
    "noun": "workorder",
    "asOf": "2026-08-10",
    "woId": "WO-dba6131d",
    "position": "Dispatched",
    "payment": {
      "id": "PAY-20b7804e",
      "status": "settled",
      "amountCents": 88444,
      "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
  }
}

invoice

workorder.invoice · POST /workorders/invoice · gate offer · sandbox · answers WorkorderInvoice@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) · /2C4RC1BG0PR607238 (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.

EmitsWorkorder.invoiceFailed@1 · Workorder.invoiceRequested@1 · Workorder.invoiced@1.

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

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

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:19.305Z · HTTP 200
{
  "type": "OK",
  "answers": "WorkorderInvoice@1",
  "value": {
    "vin": "2C4RC1BG0PR607238",
    "noun": "workorder",
    "asOf": "2026-08-10",
    "woId": "WO-dba6131d",
    "position": "Dispatched",
    "invoice": {
      "id": "INV-fd4c38c3",
      "status": "pending-completion",
      "amountCents": 88444,
      "currency": "USD"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "2C4RC1BG0PR607238",
    "noun": "workorder",
    "asOf": "2026-08-10",
    "woId": "WO-dba6131d",
    "position": "Dispatched",
    "invoice": {
      "id": "INV-fd4c38c3",
      "status": "pending-completion",
      "amountCents": 88444,
      "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
  }
}

settle

workorder.settle · POST /workorders/settle · gate offer · sandbox · answers WorkorderSettle@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) · /2C4RC1BG0PR607238 (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.

EmitsWorkorder.settleFailed@1 · Workorder.settleRequested@1 · Workorder.settled@1.

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

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

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:19.328Z · HTTP 200
{
  "type": "OK",
  "answers": "WorkorderSettle@1",
  "value": {
    "vin": "2C4RC1BG0PR607238",
    "noun": "workorder",
    "asOf": "2026-08-10",
    "woId": "WO-dba6131d",
    "position": "Dispatched",
    "payment": {
      "id": "PAY-10e94b5f",
      "status": "settled",
      "amountCents": 88444,
      "currency": "USD"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "2C4RC1BG0PR607238",
    "noun": "workorder",
    "asOf": "2026-08-10",
    "woId": "WO-dba6131d",
    "position": "Dispatched",
    "payment": {
      "id": "PAY-10e94b5f",
      "status": "settled",
      "amountCents": 88444,
      "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

workorder.perform · POST /workorders/perform · gate offer · sandbox · answers WorkorderPerform@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) · /2C4RC1BG0PR607238 (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.

EmitsWorkorder.performFailed@1 · Workorder.performRequested@1 · Workorder.performed@1.

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

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

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:19.322Z · HTTP 200
{
  "type": "OK",
  "answers": "WorkorderPerform@1",
  "value": {
    "vin": "2C4RC1BG0PR607238",
    "noun": "workorder",
    "asOf": "2026-08-10",
    "woId": "WO-dba6131d",
    "position": "Dispatched",
    "operation": "perform",
    "status": "not-reached"
  },
  "evidence": {
    "vin": "2C4RC1BG0PR607238",
    "noun": "workorder",
    "asOf": "2026-08-10",
    "woId": "WO-dba6131d",
    "position": "Dispatched",
    "operation": "perform",
    "status": "not-reached"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "shop-arc-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

complete

workorder.complete · POST /workorders/complete · gate offer · sandbox · answers WorkorderComplete@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) · /2C4RC1BG0PR607238 (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.

EmitsWorkorder.completeRequested@1 · Workorder.completed@1.

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

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

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:19.286Z · HTTP 200
{
  "type": "OK",
  "answers": "WorkorderComplete@1",
  "value": {
    "vin": "2C4RC1BG0PR607238",
    "noun": "workorder",
    "asOf": "2026-08-10",
    "woId": "WO-dba6131d",
    "position": "Dispatched",
    "operation": "complete",
    "status": "not-reached"
  },
  "evidence": {
    "vin": "2C4RC1BG0PR607238",
    "noun": "workorder",
    "asOf": "2026-08-10",
    "woId": "WO-dba6131d",
    "position": "Dispatched",
    "operation": "complete",
    "status": "not-reached"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "shop-arc-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Authorize & resolve

approve

workorder.approve · POST /workorders/approve · gate offer · sandbox · answers WorkorderApprove@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) · /2C4RC1BG0PR607238 (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.

EmitsWorkorder.approveRequested@1 · Workorder.approved@1.

the SDK — workorder.approve
import { workorder } from 'apis.vin'

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

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:19.286Z · HTTP 200
{
  "type": "OK",
  "answers": "WorkorderApprove@1",
  "value": {
    "vin": "2C4RC1BG0PR607238",
    "noun": "workorder",
    "asOf": "2026-08-10",
    "woId": "WO-dba6131d",
    "position": "Dispatched",
    "approval": {
      "status": "approved",
      "stance": "Declined"
    }
  },
  "evidence": {
    "vin": "2C4RC1BG0PR607238",
    "noun": "workorder",
    "asOf": "2026-08-10",
    "woId": "WO-dba6131d",
    "position": "Dispatched",
    "approval": {
      "status": "approved",
      "stance": "Declined"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "shop-arc-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

escalate

workorder.escalate · POST /workorders/escalate · gate offer · sandbox · answers WorkorderEscalate@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) · /2C4RC1BG0PR607238 (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.

EmitsWorkorder.escalateRequested@1 · Workorder.escalated@1.

the SDK — workorder.escalate
import { workorder } from 'apis.vin'

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

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:19.293Z · HTTP 200
{
  "type": "OK",
  "answers": "WorkorderEscalate@1",
  "value": {
    "vin": "2C4RC1BG0PR607238",
    "noun": "workorder",
    "asOf": "2026-08-10",
    "woId": "WO-dba6131d",
    "position": "Dispatched",
    "escalation": {
      "id": "ESC-7cc43280",
      "tier": 2,
      "status": "raised"
    }
  },
  "evidence": {
    "vin": "2C4RC1BG0PR607238",
    "noun": "workorder",
    "asOf": "2026-08-10",
    "woId": "WO-dba6131d",
    "position": "Dispatched",
    "escalation": {
      "id": "ESC-7cc43280",
      "tier": 2,
      "status": "raised"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "shop-arc-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Lifecycle & state

reopen

workorder.reopen · POST /workorders/reopen · gate offer · sandbox · answers WorkorderReopen@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) · /2C4RC1BG0PR607238 (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.

EmitsWorkorder.reopenRequested@1 · Workorder.reopened@1.

the SDK — workorder.reopen
import { workorder } from 'apis.vin'

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

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:19.328Z · HTTP 200
{
  "type": "OK",
  "answers": "WorkorderReopen@1",
  "value": {
    "vin": "2C4RC1BG0PR607238",
    "noun": "workorder",
    "asOf": "2026-08-10",
    "woId": "WO-dba6131d",
    "position": "Dispatched",
    "reopen": {
      "status": "not-closed"
    }
  },
  "evidence": {
    "vin": "2C4RC1BG0PR607238",
    "noun": "workorder",
    "asOf": "2026-08-10",
    "woId": "WO-dba6131d",
    "position": "Dispatched",
    "reopen": {
      "status": "not-closed"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "shop-arc-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

More actions

aging

workorder.aging · GET /workorders/aging · gate none · sandbox · answers WorkorderAging@1

FieldTypeRequiredNotes
vinstringno

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

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await workorder.aging({"vin":"2C4RC1BG0PR607238"})
GET /workorders/aging
curl 'https://apis.vin/workorders/aging?vin=2C4RC1BG0PR607238'

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:19.286Z · HTTP 200
{
  "type": "OK",
  "answers": "WorkorderAging@1",
  "value": {
    "vin": "2C4RC1BG0PR607238",
    "noun": "workorder",
    "asOf": "2026-08-10",
    "woId": "WO-dba6131d",
    "position": "Dispatched",
    "days": 5
  },
  "evidence": {
    "vin": "2C4RC1BG0PR607238",
    "noun": "workorder",
    "asOf": "2026-08-10",
    "woId": "WO-dba6131d",
    "position": "Dispatched",
    "days": 5
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "shop-arc-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

lineItems

workorder.lineItems · GET /workorders/line-items · gate none · sandbox · answers WorkorderLineItems@1

FieldTypeRequiredNotes
vinstringno

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

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

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:19.309Z · HTTP 200
{
  "type": "OK",
  "answers": "WorkorderLineItems@1",
  "value": {
    "vin": "2C4RC1BG0PR607238",
    "noun": "workorder",
    "asOf": "2026-08-10",
    "woId": "WO-dba6131d",
    "position": "Dispatched",
    "lines": [
      {
        "line": 1,
        "kind": "labor",
        "description": "labor operation",
        "amountCents": 16500
      },
      {
        "line": 2,
        "kind": "part",
        "description": "replacement part",
        "amountCents": 29444
      }
    ],
    "totalCents": 88444,
    "currency": "USD"
  },
  "evidence": {
    "vin": "2C4RC1BG0PR607238",
    "noun": "workorder",
    "asOf": "2026-08-10",
    "woId": "WO-dba6131d",
    "position": "Dispatched",
    "lines": [
      {
        "line": 1,
        "kind": "labor",
        "description": "labor operation",
        "amountCents": 16500
      },
      {
        "line": 2,
        "kind": "part",
        "description": "replacement part",
        "amountCents": 29444
      }
    ],
    "totalCents": 88444,
    "currency": "USD"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "shop-arc-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

qc

workorder.qc · POST /workorders/qc · gate offer · sandbox · answers WorkorderQc@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) · /2C4RC1BG0PR607238 (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.

EmitsWorkorder.qcRequested@1 · Workorder.qced@1.

the SDK — workorder.qc
import { workorder } from 'apis.vin'

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

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:19.328Z · HTTP 200
{
  "type": "OK",
  "answers": "WorkorderQc@1",
  "value": {
    "vin": "2C4RC1BG0PR607238",
    "noun": "workorder",
    "asOf": "2026-08-10",
    "woId": "WO-dba6131d",
    "position": "Dispatched",
    "operation": "qc",
    "status": "not-reached"
  },
  "evidence": {
    "vin": "2C4RC1BG0PR607238",
    "noun": "workorder",
    "asOf": "2026-08-10",
    "woId": "WO-dba6131d",
    "position": "Dispatched",
    "operation": "qc",
    "status": "not-reached"
  },
  "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.

Workorder

Schema

PropertyTypeNotes
ididwo_
vinstring
providerIdref→Provider
linesLineItem[]
statusWorkorderFSM

Relationships

FromToCardinalityAs
workorderprovider*:1performed-by

Modeled

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

Workorder · Class model

Workorder · State machine

Workorder · State machine

Workorder · Sequence


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