docs.vin

connectedCar

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

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

Identity

NounconnectedCar
PillarData (facets: 7 data · 6 services · 2 commerce)
Capabilities15 — 0 live · 15 sandbox · 0 declared
EntitiesConnection
Doorsaggregator.vin
SDKVin.connectedCar.* from apis.vin
Address/catalog/connectedCar#{action} — the anchor IS the wire name minus connectedCar.

Events

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

Discover & read

read

connectedCar.read · GET /connected-cars/read · gate none · sandbox · answers ConnectedCarRead@1

FieldTypeRequiredNotes
vinstringno

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

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await connectedCar.read({"vin":"3VW547AU8HM038523"})
GET /connected-cars/read
curl 'https://apis.vin/connected-cars/read?vin=3VW547AU8HM038523'

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:09.348Z · HTTP 200
{
  "type": "OK",
  "answers": "ConnectedCarRead@1",
  "value": {
    "vin": "3VW547AU8HM038523",
    "noun": "connectedCar",
    "asOf": "2026-08-10",
    "connection": "active",
    "verdict": "pass",
    "channels": [
      "location",
      "odometer",
      "battery",
      "diagnostics"
    ],
    "freshness": "live"
  },
  "evidence": {
    "vin": "3VW547AU8HM038523",
    "noun": "connectedCar",
    "asOf": "2026-08-10",
    "connection": "active",
    "verdict": "pass",
    "channels": [
      "location",
      "odometer",
      "battery",
      "diagnostics"
    ],
    "freshness": "live"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "charge-connect-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

decode

connectedCar.decode · GET /connected-cars/decode · gate none · sandbox · answers ConnectedCarDecode@1

FieldTypeRequiredNotes
vinstringno

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

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await connectedCar.decode({"vin":"3VW547AU8HM038523"})
GET /connected-cars/decode
curl 'https://apis.vin/connected-cars/decode?vin=3VW547AU8HM038523'

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:09.336Z · HTTP 200
{
  "type": "OK",
  "answers": "ConnectedCarDecode@1",
  "value": {
    "vin": "3VW547AU8HM038523",
    "noun": "connectedCar",
    "asOf": "2026-08-10",
    "connection": "active",
    "decoded": {
      "vin": "3VW547AU8HM038523",
      "valid": true,
      "squishVin": "3VW547AU8HM"
    }
  },
  "evidence": {
    "vin": "3VW547AU8HM038523",
    "noun": "connectedCar",
    "asOf": "2026-08-10",
    "connection": "active",
    "decoded": {
      "vin": "3VW547AU8HM038523",
      "valid": true,
      "squishVin": "3VW547AU8HM"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "charge-connect-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

location

connectedCar.location · GET /connected-cars/location · gate key · sandbox · answers ConnectedCarLocation@1

FieldTypeRequiredNotes
vinstringno

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

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await connectedCar.location({"vin":"3VW547AU8HM038523"})
GET /connected-cars/location
curl 'https://apis.vin/connected-cars/location?vin=3VW547AU8HM038523'

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:09.340Z · HTTP 200
{
  "type": "OK",
  "answers": "ConnectedCarLocation@1",
  "value": {
    "vin": "3VW547AU8HM038523",
    "noun": "connectedCar",
    "asOf": "2026-08-10",
    "connection": "active",
    "position": {
      "latE5": 3779114,
      "lonE5": -12239044
    }
  },
  "evidence": {
    "vin": "3VW547AU8HM038523",
    "noun": "connectedCar",
    "asOf": "2026-08-10",
    "connection": "active",
    "position": {
      "latE5": 3779114,
      "lonE5": -12239044
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "charge-connect-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

tripHistory

connectedCar.tripHistory · GET /connected-cars/trip-history · gate key · sandbox · answers ConnectedCarTripHistory@1

FieldTypeRequiredNotes
vinstringno

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

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await connectedCar.tripHistory({"vin":"3VW547AU8HM038523"})
GET /connected-cars/trip-history
curl 'https://apis.vin/connected-cars/trip-history?vin=3VW547AU8HM038523'

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:09.362Z · HTTP 200
{
  "type": "OK",
  "answers": "ConnectedCarTripHistory@1",
  "value": {
    "vin": "3VW547AU8HM038523",
    "noun": "connectedCar",
    "asOf": "2026-08-10",
    "connection": "active",
    "trips": 15,
    "totalMiles": 786,
    "windowDays": 30
  },
  "evidence": {
    "vin": "3VW547AU8HM038523",
    "noun": "connectedCar",
    "asOf": "2026-08-10",
    "connection": "active",
    "trips": 15,
    "totalMiles": 786,
    "windowDays": 30
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "charge-connect-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Apply & book

enroll

connectedCar.enroll · POST /connected-cars/enroll · gate offer · sandbox · answers ConnectedCarEnroll@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) · /3VW547AU8HM038523 (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.

EmitsConnectedCar.enrolled@1.

the SDK — connectedCar.enroll
import { connectedCar } from 'apis.vin'

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

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:09.339Z · HTTP 200
{
  "type": "OK",
  "answers": "ConnectedCarEnroll@1",
  "value": {
    "vin": "3VW547AU8HM038523",
    "noun": "connectedCar",
    "asOf": "2026-08-10",
    "connection": "active",
    "command": {
      "id": "CMD-2da119f2",
      "name": "enroll",
      "status": "executed"
    }
  },
  "evidence": {
    "vin": "3VW547AU8HM038523",
    "noun": "connectedCar",
    "asOf": "2026-08-10",
    "connection": "active",
    "command": {
      "id": "CMD-2da119f2",
      "name": "enroll",
      "status": "executed"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "charge-connect-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

provision

connectedCar.provision · POST /connected-cars/provision · gate offer · sandbox · answers ConnectedCarProvision@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) · /3VW547AU8HM038523 (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.

EmitsConnectedCar.provisioned@1.

the SDK — connectedCar.provision
import { connectedCar } from 'apis.vin'

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

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:09.343Z · HTTP 200
{
  "type": "OK",
  "answers": "ConnectedCarProvision@1",
  "value": {
    "vin": "3VW547AU8HM038523",
    "noun": "connectedCar",
    "asOf": "2026-08-10",
    "connection": "active",
    "command": {
      "id": "CMD-cd9b5aa5",
      "name": "provision",
      "status": "executed"
    }
  },
  "evidence": {
    "vin": "3VW547AU8HM038523",
    "noun": "connectedCar",
    "asOf": "2026-08-10",
    "connection": "active",
    "command": {
      "id": "CMD-cd9b5aa5",
      "name": "provision",
      "status": "executed"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "charge-connect-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

dataSubscribe

connectedCar.dataSubscribe · POST /connected-cars/data-subscribe · gate offer · sandbox · answers ConnectedCarDataSubscribe@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) · /3VW547AU8HM038523 (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.

EmitsConnectedCar.dataSubscribed@1 · ConnectedCar.failed@1.

the SDK — connectedCar.dataSubscribe
import { connectedCar } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await connectedCar.dataSubscribe({"vin":"3VW547AU8HM038523"})
POST /connected-cars/data-subscribe
curl -X POST https://apis.vin/connected-cars/data-subscribe \
  -H 'content-type: application/json' \
  -d '{"vin":"3VW547AU8HM038523"}'

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:09.336Z · HTTP 200
{
  "type": "OK",
  "answers": "ConnectedCarDataSubscribe@1",
  "value": {
    "vin": "3VW547AU8HM038523",
    "noun": "connectedCar",
    "asOf": "2026-08-10",
    "connection": "active",
    "command": {
      "id": "CMD-267f118e",
      "name": "dataSubscribe",
      "status": "executed"
    }
  },
  "evidence": {
    "vin": "3VW547AU8HM038523",
    "noun": "connectedCar",
    "asOf": "2026-08-10",
    "connection": "active",
    "command": {
      "id": "CMD-267f118e",
      "name": "dataSubscribe",
      "status": "executed"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "charge-connect-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

deprovision

connectedCar.deprovision · POST /connected-cars/deprovision · gate offer · sandbox · answers ConnectedCarDeprovision@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) · /3VW547AU8HM038523 (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.

EmitsConnectedCar.deprovisioned@1.

the SDK — connectedCar.deprovision
import { connectedCar } from 'apis.vin'

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

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:09.336Z · HTTP 200
{
  "type": "OK",
  "answers": "ConnectedCarDeprovision@1",
  "value": {
    "vin": "3VW547AU8HM038523",
    "noun": "connectedCar",
    "asOf": "2026-08-10",
    "connection": "active",
    "command": {
      "id": "CMD-8f06f1b0",
      "name": "deprovision",
      "status": "executed"
    }
  },
  "evidence": {
    "vin": "3VW547AU8HM038523",
    "noun": "connectedCar",
    "asOf": "2026-08-10",
    "connection": "active",
    "command": {
      "id": "CMD-8f06f1b0",
      "name": "deprovision",
      "status": "executed"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "charge-connect-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Pay & settle

usagePay

connectedCar.usagePay · POST /connected-cars/usage-pay · gate offer · sandbox · answers ConnectedCarUsagePay@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) · /3VW547AU8HM038523 (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.

EmitsConnectedCar.failed@1 · ConnectedCar.usagePaid@1.

the SDK — connectedCar.usagePay
import { connectedCar } from 'apis.vin'

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

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:09.362Z · HTTP 200
{
  "type": "OK",
  "answers": "ConnectedCarUsagePay@1",
  "value": {
    "vin": "3VW547AU8HM038523",
    "noun": "connectedCar",
    "asOf": "2026-08-10",
    "connection": "active",
    "payment": {
      "id": "PAY-279fccc1",
      "status": "settled",
      "amountCents": 2400,
      "currency": "USD"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "3VW547AU8HM038523",
    "noun": "connectedCar",
    "asOf": "2026-08-10",
    "connection": "active",
    "payment": {
      "id": "PAY-279fccc1",
      "status": "settled",
      "amountCents": 2400,
      "currency": "USD"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "charge-connect-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Authorize & resolve

connectedCar.consent · POST /connected-cars/consent · gate offer · sandbox · answers ConnectedCarConsent@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) · /3VW547AU8HM038523 (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.

EmitsConnectedCar.consentCaptured@1.

the SDK — connectedCar.consent
import { connectedCar } from 'apis.vin'

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

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:09.335Z · HTTP 200
{
  "type": "OK",
  "answers": "ConnectedCarConsent@1",
  "value": {
    "vin": "3VW547AU8HM038523",
    "noun": "connectedCar",
    "asOf": "2026-08-10",
    "connection": "active",
    "consent": {
      "id": "CNS-4a0862a4",
      "scope": [
        "telemetry",
        "location",
        "diagnostics"
      ],
      "status": "recorded"
    }
  },
  "evidence": {
    "vin": "3VW547AU8HM038523",
    "noun": "connectedCar",
    "asOf": "2026-08-10",
    "connection": "active",
    "consent": {
      "id": "CNS-4a0862a4",
      "scope": [
        "telemetry",
        "location",
        "diagnostics"
      ],
      "status": "recorded"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "charge-connect-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

More actions

command

connectedCar.command · POST /connected-cars/command · gate offer · sandbox · answers ConnectedCarCommand@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) · /3VW547AU8HM038523 (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.

EmitsConnectedCar.commandSent@1 · ConnectedCar.requested@1.

the SDK — connectedCar.command
import { connectedCar } from 'apis.vin'

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

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:09.330Z · HTTP 200
{
  "type": "OK",
  "answers": "ConnectedCarCommand@1",
  "value": {
    "vin": "3VW547AU8HM038523",
    "noun": "connectedCar",
    "asOf": "2026-08-10",
    "connection": "active",
    "command": {
      "id": "CMD-bfec3b83",
      "name": "remote-command",
      "status": "executed"
    }
  },
  "evidence": {
    "vin": "3VW547AU8HM038523",
    "noun": "connectedCar",
    "asOf": "2026-08-10",
    "connection": "active",
    "command": {
      "id": "CMD-bfec3b83",
      "name": "remote-command",
      "status": "executed"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "charge-connect-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

driverBehavior

connectedCar.driverBehavior · GET /connected-cars/driver-behavior · gate key · sandbox · answers ConnectedCarDriverBehavior@1

FieldTypeRequiredNotes
vinstringno

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

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await connectedCar.driverBehavior({"vin":"3VW547AU8HM038523"})
GET /connected-cars/driver-behavior
curl 'https://apis.vin/connected-cars/driver-behavior?vin=3VW547AU8HM038523'

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:09.337Z · HTTP 200
{
  "type": "OK",
  "answers": "ConnectedCarDriverBehavior@1",
  "value": {
    "vin": "3VW547AU8HM038523",
    "noun": "connectedCar",
    "asOf": "2026-08-10",
    "connection": "active",
    "verdict": "pass",
    "behaviorScore": 98
  },
  "evidence": {
    "vin": "3VW547AU8HM038523",
    "noun": "connectedCar",
    "asOf": "2026-08-10",
    "connection": "active",
    "verdict": "pass",
    "behaviorScore": 98
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "charge-connect-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

dtc

connectedCar.dtc · GET /connected-cars/dtc · gate key · sandbox · answers ConnectedCarDtc@1

FieldTypeRequiredNotes
vinstringno

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

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await connectedCar.dtc({"vin":"3VW547AU8HM038523"})
GET /connected-cars/dtc
curl 'https://apis.vin/connected-cars/dtc?vin=3VW547AU8HM038523'

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:09.337Z · HTTP 200
{
  "type": "OK",
  "answers": "ConnectedCarDtc@1",
  "value": {
    "vin": "3VW547AU8HM038523",
    "noun": "connectedCar",
    "asOf": "2026-08-10",
    "connection": "active",
    "dtc": {
      "verdict": "attention",
      "codes": [
        {
          "code": "P0217",
          "description": "engine overtemperature condition",
          "system": "cooling",
          "status": "pending"
        },
        {
          "code": "P0562",
          "description": "system voltage low",
          "system": "electrical",
          "status": "pending"
        }
      ]
    }
  },
  "evidence": {
    "vin": "3VW547AU8HM038523",
    "noun": "connectedCar",
    "asOf": "2026-08-10",
    "connection": "active",
    "dtc": {
      "verdict": "attention",
      "codes": [
        {
          "code": "P0217",
          "description": "engine overtemperature condition",
          "system": "cooling",
          "status": "pending"
        },
        {
          "code": "P0562",
          "description": "system voltage low",
          "system": "electrical",
          "status": "pending"
        }
      ]
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "charge-connect-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

health

connectedCar.health · GET /connected-cars/health · gate key · sandbox · answers ConnectedCarHealth@1

FieldTypeRequiredNotes
vinstringno

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

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await connectedCar.health({"vin":"3VW547AU8HM038523"})
GET /connected-cars/health
curl 'https://apis.vin/connected-cars/health?vin=3VW547AU8HM038523'

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:09.340Z · HTTP 200
{
  "type": "OK",
  "answers": "ConnectedCarHealth@1",
  "value": {
    "vin": "3VW547AU8HM038523",
    "noun": "connectedCar",
    "asOf": "2026-08-10",
    "connection": "active",
    "verdict": "pass",
    "findings": []
  },
  "evidence": {
    "vin": "3VW547AU8HM038523",
    "noun": "connectedCar",
    "asOf": "2026-08-10",
    "connection": "active",
    "verdict": "pass",
    "findings": []
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "charge-connect-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

stream

connectedCar.stream · POST /connected-cars/stream · gate offer · sandbox · answers ConnectedCarStream@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) · /3VW547AU8HM038523 (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.

EmitsConnectedCar.requested@1 · ConnectedCar.streamed@1.

the SDK — connectedCar.stream
import { connectedCar } from 'apis.vin'

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

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:09.352Z · HTTP 200
{
  "type": "OK",
  "answers": "ConnectedCarStream@1",
  "value": {
    "vin": "3VW547AU8HM038523",
    "noun": "connectedCar",
    "asOf": "2026-08-10",
    "connection": "active",
    "verdict": "pass",
    "channels": [
      "location",
      "odometer",
      "battery",
      "diagnostics"
    ],
    "freshness": "live"
  },
  "evidence": {
    "vin": "3VW547AU8HM038523",
    "noun": "connectedCar",
    "asOf": "2026-08-10",
    "connection": "active",
    "verdict": "pass",
    "channels": [
      "location",
      "odometer",
      "battery",
      "diagnostics"
    ],
    "freshness": "live"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "charge-connect-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.

Connection

Modeled

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

ConnectedCar · Class model


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