docs.vin

schedule

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

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

Identity

Nounschedule
PillarData (facets: 5 data · 5 services · 3 commerce)
Capabilities13 — 0 live · 13 sandbox · 0 declared
EntitiesAppointment
Doorsaggregator.vin
SDKVin.schedule.* from apis.vin
Address/catalog/schedule#{action} — the anchor IS the wire name minus schedule.

Events

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

Discover & read

status

schedule.status · GET /schedules/status · gate none · sandbox · answers ScheduleStatus@1

FieldTypeRequiredNotes
vinstringno

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

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

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:17.356Z · HTTP 200
{
  "type": "OK",
  "answers": "ScheduleStatus@1",
  "value": {
    "vin": "1C4RJFCG6KC688250",
    "noun": "schedule",
    "asOf": "2026-08-10",
    "standing": "none",
    "appointment": {
      "status": "no-appointment-on-file"
    }
  },
  "evidence": {
    "vin": "1C4RJFCG6KC688250",
    "noun": "schedule",
    "asOf": "2026-08-10",
    "standing": "none",
    "appointment": {
      "status": "no-appointment-on-file"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "stock-and-book-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

availability

schedule.availability · GET /schedules/availability · gate none · sandbox · answers ScheduleAvailability@1

FieldTypeRequiredNotes
vinstringno

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

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

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:17.325Z · HTTP 200
{
  "type": "OK",
  "answers": "ScheduleAvailability@1",
  "value": {
    "vin": "1C4RJFCG6KC688250",
    "noun": "schedule",
    "asOf": "2026-08-10",
    "standing": "none",
    "slotsOpen": 8,
    "nextSlotDate": "2026-08-12"
  },
  "evidence": {
    "vin": "1C4RJFCG6KC688250",
    "noun": "schedule",
    "asOf": "2026-08-10",
    "standing": "none",
    "slotsOpen": 8,
    "nextSlotDate": "2026-08-12"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "stock-and-book-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

capacity

schedule.capacity · GET /schedules/capacity · gate none · sandbox · answers ScheduleCapacity@1

FieldTypeRequiredNotes
vinstringno

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

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

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:17.326Z · HTTP 200
{
  "type": "OK",
  "answers": "ScheduleCapacity@1",
  "value": {
    "vin": "1C4RJFCG6KC688250",
    "noun": "schedule",
    "asOf": "2026-08-10",
    "standing": "none",
    "capacity": {
      "bays": 8,
      "dailySlots": 24,
      "booked": 1,
      "checkedIn": 6,
      "openSlots": 17
    }
  },
  "evidence": {
    "vin": "1C4RJFCG6KC688250",
    "noun": "schedule",
    "asOf": "2026-08-10",
    "standing": "none",
    "capacity": {
      "bays": 8,
      "dailySlots": 24,
      "booked": 1,
      "checkedIn": 6,
      "openSlots": 17
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "stock-and-book-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

utilization

schedule.utilization · GET /schedules/utilization · gate none · sandbox · answers ScheduleUtilization@1

FieldTypeRequiredNotes
vinstringno

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

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

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:17.356Z · HTTP 200
{
  "type": "OK",
  "answers": "ScheduleUtilization@1",
  "value": {
    "vin": "1C4RJFCG6KC688250",
    "noun": "schedule",
    "asOf": "2026-08-10",
    "standing": "none",
    "utilization": {
      "pct": 29,
      "booked": 1,
      "checkedIn": 6,
      "dailySlots": 24
    }
  },
  "evidence": {
    "vin": "1C4RJFCG6KC688250",
    "noun": "schedule",
    "asOf": "2026-08-10",
    "standing": "none",
    "utilization": {
      "pct": 29,
      "booked": 1,
      "checkedIn": 6,
      "dailySlots": 24
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "stock-and-book-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Quote & price

cancelFee

schedule.cancelFee · POST /schedules/cancel-fee · gate offer · sandbox · answers ScheduleCancelFee@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) · /1C4RJFCG6KC688250 (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.

EmitsSchedule.cancelFeeCharged@1 · Schedule.cancelFeeRequested@1.

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

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

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:17.325Z · HTTP 200
{
  "type": "OK",
  "answers": "ScheduleCancelFee@1",
  "value": {
    "vin": "1C4RJFCG6KC688250",
    "noun": "schedule",
    "asOf": "2026-08-10",
    "standing": "none",
    "cancelFee": {
      "status": "no-appointment-on-file"
    }
  },
  "evidence": {
    "vin": "1C4RJFCG6KC688250",
    "noun": "schedule",
    "asOf": "2026-08-10",
    "standing": "none",
    "cancelFee": {
      "status": "no-appointment-on-file"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "stock-and-book-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Apply & book

book

schedule.book · POST /schedules/book · gate offer · sandbox · answers ScheduleBook@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) · /1C4RJFCG6KC688250 (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.

EmitsSchedule.completed@1 · Schedule.dispatched@1 · Schedule.ordered@1 · ServiceOrder.settled@1.

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

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

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:17.325Z · HTTP 200
{
  "type": "OK",
  "answers": "ScheduleBook@1",
  "value": {
    "vin": "1C4RJFCG6KC688250",
    "noun": "schedule",
    "asOf": "2026-08-10",
    "standing": "none",
    "appointment": {
      "id": "APT-4f857ea0",
      "date": "2026-08-12",
      "status": "booked"
    }
  },
  "evidence": {
    "vin": "1C4RJFCG6KC688250",
    "noun": "schedule",
    "asOf": "2026-08-10",
    "standing": "none",
    "appointment": {
      "id": "APT-4f857ea0",
      "date": "2026-08-12",
      "status": "booked"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "stock-and-book-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

reschedule

schedule.reschedule · POST /schedules/reschedule · gate offer · sandbox · answers ScheduleReschedule@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) · /1C4RJFCG6KC688250 (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.

EmitsSchedule.rescheduleRequested@1 · Schedule.rescheduled@1.

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

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

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:17.342Z · HTTP 200
{
  "type": "OK",
  "answers": "ScheduleReschedule@1",
  "value": {
    "vin": "1C4RJFCG6KC688250",
    "noun": "schedule",
    "asOf": "2026-08-10",
    "standing": "none",
    "appointment": {
      "status": "no-appointment-on-file"
    }
  },
  "evidence": {
    "vin": "1C4RJFCG6KC688250",
    "noun": "schedule",
    "asOf": "2026-08-10",
    "standing": "none",
    "appointment": {
      "status": "no-appointment-on-file"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "stock-and-book-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Pay & settle

pay

schedule.pay · POST /schedules/pay · gate offer · sandbox · answers SchedulePay@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) · /1C4RJFCG6KC688250 (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.

EmitsSchedule.paid@1 · Schedule.payFailed@1 · Schedule.payRequested@1.

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

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

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:17.335Z · HTTP 200
{
  "type": "OK",
  "answers": "SchedulePay@1",
  "value": {
    "vin": "1C4RJFCG6KC688250",
    "noun": "schedule",
    "asOf": "2026-08-10",
    "standing": "none",
    "payment": {
      "id": "PAY-5531e419",
      "amountCents": 5000,
      "currency": "USD",
      "status": "settled"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "1C4RJFCG6KC688250",
    "noun": "schedule",
    "asOf": "2026-08-10",
    "standing": "none",
    "payment": {
      "id": "PAY-5531e419",
      "amountCents": 5000,
      "currency": "USD",
      "status": "settled"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "stock-and-book-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

deposit

schedule.deposit · POST /schedules/deposit · gate offer · sandbox · answers ScheduleDeposit@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) · /1C4RJFCG6KC688250 (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.

EmitsSchedule.depositRequested@1 · Schedule.deposited@1.

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

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

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:17.331Z · HTTP 200
{
  "type": "OK",
  "answers": "ScheduleDeposit@1",
  "value": {
    "vin": "1C4RJFCG6KC688250",
    "noun": "schedule",
    "asOf": "2026-08-10",
    "standing": "none",
    "deposit": {
      "id": "DEP-f66bd375",
      "amountCents": 5000,
      "currency": "USD",
      "status": "held"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "1C4RJFCG6KC688250",
    "noun": "schedule",
    "asOf": "2026-08-10",
    "standing": "none",
    "deposit": {
      "id": "DEP-f66bd375",
      "amountCents": 5000,
      "currency": "USD",
      "status": "held"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "stock-and-book-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Lifecycle & state

release

schedule.release · POST /schedules/release · gate offer · sandbox · answers ScheduleRelease@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) · /1C4RJFCG6KC688250 (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.

EmitsSchedule.releaseFailed@1 · Schedule.releaseRequested@1 · Schedule.released@1.

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

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

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:17.335Z · HTTP 200
{
  "type": "OK",
  "answers": "ScheduleRelease@1",
  "value": {
    "vin": "1C4RJFCG6KC688250",
    "noun": "schedule",
    "asOf": "2026-08-10",
    "standing": "none",
    "release": {
      "id": "BLK-56f0f0b2",
      "status": "released"
    }
  },
  "evidence": {
    "vin": "1C4RJFCG6KC688250",
    "noun": "schedule",
    "asOf": "2026-08-10",
    "standing": "none",
    "release": {
      "id": "BLK-56f0f0b2",
      "status": "released"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "stock-and-book-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

More actions

block

schedule.block · POST /schedules/block · gate offer · sandbox · answers ScheduleBlock@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) · /1C4RJFCG6KC688250 (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.

EmitsSchedule.blockRequested@1 · Schedule.blocked@1.

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

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

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:17.325Z · HTTP 200
{
  "type": "OK",
  "answers": "ScheduleBlock@1",
  "value": {
    "vin": "1C4RJFCG6KC688250",
    "noun": "schedule",
    "asOf": "2026-08-10",
    "standing": "none",
    "block": {
      "id": "BLK-56f0f0b2",
      "date": "2026-08-11",
      "bays": 1,
      "status": "blocked"
    }
  },
  "evidence": {
    "vin": "1C4RJFCG6KC688250",
    "noun": "schedule",
    "asOf": "2026-08-10",
    "standing": "none",
    "block": {
      "id": "BLK-56f0f0b2",
      "date": "2026-08-11",
      "bays": 1,
      "status": "blocked"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "stock-and-book-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

conflicts

schedule.conflicts · GET /schedules/conflicts · gate none · sandbox · answers ScheduleConflicts@1

FieldTypeRequiredNotes
vinstringno

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

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

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:17.331Z · HTTP 200
{
  "type": "OK",
  "answers": "ScheduleConflicts@1",
  "value": {
    "vin": "1C4RJFCG6KC688250",
    "noun": "schedule",
    "asOf": "2026-08-10",
    "standing": "none",
    "conflicts": []
  },
  "evidence": {
    "vin": "1C4RJFCG6KC688250",
    "noun": "schedule",
    "asOf": "2026-08-10",
    "standing": "none",
    "conflicts": []
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "stock-and-book-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

optimize

schedule.optimize · POST /schedules/optimize · gate offer · sandbox · answers ScheduleOptimize@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) · /1C4RJFCG6KC688250 (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.

EmitsSchedule.optimizeRequested@1 · Schedule.optimized@1.

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

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

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:17.331Z · HTTP 200
{
  "type": "OK",
  "answers": "ScheduleOptimize@1",
  "value": {
    "vin": "1C4RJFCG6KC688250",
    "noun": "schedule",
    "asOf": "2026-08-10",
    "standing": "none",
    "optimization": {
      "utilizationPct": 29,
      "recommendation": "consolidate-bays"
    }
  },
  "evidence": {
    "vin": "1C4RJFCG6KC688250",
    "noun": "schedule",
    "asOf": "2026-08-10",
    "standing": "none",
    "optimization": {
      "utilizationPct": 29,
      "recommendation": "consolidate-bays"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "stock-and-book-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.

Appointment

Modeled

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

Schedule · Class model

Schedule · State machine


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