docs.vin

hvac

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

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

Identity

Nounhvac
PillarServices (facets: 9 data · 11 services · 6 commerce)
Capabilities26 — 0 live · 26 sandbox · 0 declared
EntitiesRepairOrder
Doorsaggregator.vin
SDKVin.hvac.* from apis.vin
Address/catalog/hvac#{action} — the anchor IS the wire name minus hvac.

Events

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

Discover & read

decode

hvac.decode · GET /hvacs/decode · gate none · sandbox · answers HvacDecode@1

FieldTypeRequiredNotes
vinstringno

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

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

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:12.350Z · HTTP 200
{
  "type": "OK",
  "answers": "HvacDecode@1",
  "value": {
    "vin": "1G1YC2D45P5114360",
    "system": "hvac",
    "asOf": "2026-08-10",
    "component": "hvac system",
    "refrigerant": "R-1234yf",
    "chargeOz": 18,
    "compressorDrive": "belt-clutch",
    "cabinFilter": "activated-carbon"
  },
  "evidence": {
    "vin": "1G1YC2D45P5114360",
    "system": "hvac",
    "asOf": "2026-08-10",
    "component": "hvac system",
    "refrigerant": "R-1234yf",
    "chargeOz": 18,
    "compressorDrive": "belt-clutch",
    "cabinFilter": "activated-carbon"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "wear-systems-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

spec

hvac.spec · GET /hvacs/spec · gate none · sandbox · answers HvacSpec@1

FieldTypeRequiredNotes
vinstringno

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

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

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:12.394Z · HTTP 200
{
  "type": "OK",
  "answers": "HvacSpec@1",
  "value": {
    "vin": "1G1YC2D45P5114360",
    "system": "hvac",
    "asOf": "2026-08-10",
    "component": "hvac system",
    "refrigerant": "R-1234yf",
    "chargeOz": 18,
    "compressorDrive": "belt-clutch",
    "cabinFilter": "activated-carbon"
  },
  "evidence": {
    "vin": "1G1YC2D45P5114360",
    "system": "hvac",
    "asOf": "2026-08-10",
    "component": "hvac system",
    "refrigerant": "R-1234yf",
    "chargeOz": 18,
    "compressorDrive": "belt-clutch",
    "cabinFilter": "activated-carbon"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "wear-systems-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

history

hvac.history · GET /hvacs/history · gate none · sandbox · answers HvacHistory@1

FieldTypeRequiredNotes
vinstringno

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

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

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:12.352Z · HTTP 200
{
  "type": "OK",
  "answers": "HvacHistory@1",
  "value": {
    "vin": "1G1YC2D45P5114360",
    "system": "hvac",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "events": [
      {
        "date": "2024-03-14",
        "kind": "maintenance",
        "description": "scheduled hvac system service"
      }
    ],
    "count": 1
  },
  "evidence": {
    "vin": "1G1YC2D45P5114360",
    "system": "hvac",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "events": [
      {
        "date": "2024-03-14",
        "kind": "maintenance",
        "description": "scheduled hvac system service"
      }
    ],
    "count": 1
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "wear-systems-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

status

hvac.status · GET /hvacs/status · gate none · sandbox · answers HvacStatus@1

FieldTypeRequiredNotes
vinstringno

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

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

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:12.394Z · HTTP 200
{
  "type": "OK",
  "answers": "HvacStatus@1",
  "value": {
    "vin": "1G1YC2D45P5114360",
    "system": "hvac",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "findings": []
  },
  "evidence": {
    "vin": "1G1YC2D45P5114360",
    "system": "hvac",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "findings": []
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "wear-systems-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

healthCheck

hvac.healthCheck · GET /hvacs/health-check · gate none · sandbox · answers HvacHealthCheck@1

FieldTypeRequiredNotes
vinstringno

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

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await hvac.healthCheck({"vin":"1G1YC2D45P5114360"})
GET /hvacs/health-check
curl 'https://apis.vin/hvacs/health-check?vin=1G1YC2D45P5114360'

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:12.352Z · HTTP 200
{
  "type": "OK",
  "answers": "HvacHealthCheck@1",
  "value": {
    "vin": "1G1YC2D45P5114360",
    "system": "hvac",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "findings": []
  },
  "evidence": {
    "vin": "1G1YC2D45P5114360",
    "system": "hvac",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "findings": []
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "wear-systems-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

pressureRead

hvac.pressureRead · GET /hvacs/pressure-read · gate none · sandbox · answers HvacPressureRead@1

FieldTypeRequiredNotes
vinstringno

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

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

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:12.354Z · HTTP 200
{
  "type": "OK",
  "answers": "HvacPressureRead@1",
  "value": {
    "vin": "1G1YC2D45P5114360",
    "system": "hvac",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "measurement": "pressureRead",
    "reading": 51,
    "unit": "index",
    "withinSpec": true
  },
  "evidence": {
    "vin": "1G1YC2D45P5114360",
    "system": "hvac",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "measurement": "pressureRead",
    "reading": 51,
    "unit": "index",
    "withinSpec": true
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "wear-systems-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

refrigerantCheck

hvac.refrigerantCheck · GET /hvacs/refrigerant-check · gate none · sandbox · answers HvacRefrigerantCheck@1

FieldTypeRequiredNotes
vinstringno

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

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await hvac.refrigerantCheck({"vin":"1G1YC2D45P5114360"})
GET /hvacs/refrigerant-check
curl 'https://apis.vin/hvacs/refrigerant-check?vin=1G1YC2D45P5114360'

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:12.389Z · HTTP 200
{
  "type": "OK",
  "answers": "HvacRefrigerantCheck@1",
  "value": {
    "vin": "1G1YC2D45P5114360",
    "system": "hvac",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "findings": []
  },
  "evidence": {
    "vin": "1G1YC2D45P5114360",
    "system": "hvac",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "findings": []
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "wear-systems-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

leakDetect

hvac.leakDetect · POST /hvacs/leak-detect · gate offer · sandbox · answers HvacLeakDetect@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) · /1G1YC2D45P5114360 (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.

EmitsHvac.leakDetectRequested@1 · Hvac.leakDetected@1.

the SDK — hvac.leakDetect
import { hvac } from 'apis.vin'

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

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:12.353Z · HTTP 200
{
  "type": "OK",
  "answers": "HvacLeakDetect@1",
  "value": {
    "vin": "1G1YC2D45P5114360",
    "system": "hvac",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "faults": [],
    "faultCount": 0
  },
  "evidence": {
    "vin": "1G1YC2D45P5114360",
    "system": "hvac",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "faults": [],
    "faultCount": 0
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "wear-systems-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

failurePredict

hvac.failurePredict · GET /hvacs/failure-predict · gate none · sandbox · answers HvacFailurePredict@1

No input — this capability takes no request body.

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

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await hvac.failurePredict()
GET /hvacs/failure-predict
curl 'https://apis.vin/hvacs/failure-predict'

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

receipt · executed 2026-08-16T14:50:09.860Z · HTTP 200
{
  "type": "OK",
  "answers": "HvacFailurePredict@1",
  "value": {
    "vin": "1HGCM82633A004352",
    "system": "hvac",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "remainingLifePct": 57,
    "failureRiskPct": 9,
    "horizonMiles": 12000
  },
  "evidence": {
    "vin": "1HGCM82633A004352",
    "system": "hvac",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "remainingLifePct": 57,
    "failureRiskPct": 9,
    "horizonMiles": 12000
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "wear-systems-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Quote & price

quote

hvac.quote · POST /hvacs/quote · gate offer · sandbox · answers HvacQuote@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) · /1G1YC2D45P5114360 (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.

EmitsHvac.quoted@1.

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

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

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:12.354Z · HTTP 200
{
  "type": "OK",
  "answers": "HvacQuote@1",
  "value": {
    "vin": "1G1YC2D45P5114360",
    "system": "hvac",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "band": "pass",
    "estimateId": "EST-a2bc7827",
    "laborCents": 40700,
    "partsCents": 33300,
    "subtotalCents": 74000,
    "partSource": "aftermarket",
    "currency": "USD"
  },
  "evidence": {
    "vin": "1G1YC2D45P5114360",
    "system": "hvac",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "band": "pass",
    "estimateId": "EST-a2bc7827",
    "laborCents": 40700,
    "partsCents": 33300,
    "subtotalCents": 74000,
    "partSource": "aftermarket",
    "currency": "USD"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "wear-systems-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

estimate

hvac.estimate · POST /hvacs/estimate · gate offer · sandbox · answers HvacEstimate@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) · /1G1YC2D45P5114360 (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.

EmitsHvac.estimateRequested@1 · Hvac.estimated@1.

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

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

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:12.351Z · HTTP 200
{
  "type": "OK",
  "answers": "HvacEstimate@1",
  "value": {
    "vin": "1G1YC2D45P5114360",
    "system": "hvac",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "band": "pass",
    "estimateId": "EST-531e38e7",
    "laborCents": 40700,
    "partsCents": 33300,
    "subtotalCents": 74000,
    "partSource": "aftermarket",
    "currency": "USD"
  },
  "evidence": {
    "vin": "1G1YC2D45P5114360",
    "system": "hvac",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "band": "pass",
    "estimateId": "EST-531e38e7",
    "laborCents": 40700,
    "partsCents": 33300,
    "subtotalCents": 74000,
    "partSource": "aftermarket",
    "currency": "USD"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "wear-systems-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Apply & book

order

hvac.order · POST /hvacs/order · gate offer · sandbox · answers HvacOrder@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) · /1G1YC2D45P5114360 (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.

EmitsHvac.completed@1 · Hvac.dispatched@1 · Hvac.ordered@1 · Order.placed@1 · ServiceOrder.settled@1.

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

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

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:12.353Z · HTTP 200
{
  "type": "OK",
  "answers": "HvacOrder@1",
  "value": {
    "vin": "1G1YC2D45P5114360",
    "system": "hvac",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "workOrder": {
      "id": "WO-9b79b1c7",
      "operation": "order",
      "status": "scheduled",
      "costCents": 37000,
      "currency": "USD"
    }
  },
  "evidence": {
    "vin": "1G1YC2D45P5114360",
    "system": "hvac",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "workOrder": {
      "id": "WO-9b79b1c7",
      "operation": "order",
      "status": "scheduled",
      "costCents": 37000,
      "currency": "USD"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "wear-systems-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Pay & settle

pay

hvac.pay · POST /hvacs/pay · gate offer · sandbox · answers HvacPay@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) · /1G1YC2D45P5114360 (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.

EmitsHvac.charged@1 · Hvac.paid@1 · Hvac.payFailed@1 · Hvac.payRequested@1 · ServiceOrder.settled@1.

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

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

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:12.353Z · HTTP 200
{
  "type": "OK",
  "answers": "HvacPay@1",
  "value": {
    "vin": "1G1YC2D45P5114360",
    "system": "hvac",
    "asOf": "2026-08-10",
    "payment": {
      "id": "PAY-024c1c79",
      "status": "settled",
      "amountCents": 37000,
      "currency": "USD"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "1G1YC2D45P5114360",
    "system": "hvac",
    "asOf": "2026-08-10",
    "payment": {
      "id": "PAY-024c1c79",
      "status": "settled",
      "amountCents": 37000,
      "currency": "USD"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "wear-systems-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

refund

hvac.refund · POST /hvacs/refund · gate offer · sandbox · answers HvacRefund@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) · /1G1YC2D45P5114360 (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.

EmitsHvac.refunded@1.

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

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

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:12.389Z · HTTP 200
{
  "type": "OK",
  "answers": "HvacRefund@1",
  "value": {
    "vin": "1G1YC2D45P5114360",
    "system": "hvac",
    "asOf": "2026-08-10",
    "refund": {
      "id": "RF-f8f1b2ef",
      "status": "issued",
      "amountCents": 7400,
      "currency": "USD"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "1G1YC2D45P5114360",
    "system": "hvac",
    "asOf": "2026-08-10",
    "refund": {
      "id": "RF-f8f1b2ef",
      "status": "issued",
      "amountCents": 7400,
      "currency": "USD"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "wear-systems-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

recharge

hvac.recharge · POST /hvacs/recharge · gate offer · sandbox · answers HvacRecharge@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) · /1G1YC2D45P5114360 (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.

EmitsHvac.rechargeFailed@1 · Hvac.rechargeRequested@1 · Hvac.recharged@1.

the SDK — hvac.recharge
import { hvac } from 'apis.vin'

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

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:12.388Z · HTTP 200
{
  "type": "OK",
  "answers": "HvacRecharge@1",
  "value": {
    "vin": "1G1YC2D45P5114360",
    "system": "hvac",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "workOrder": {
      "id": "WO-d7a4da2c",
      "operation": "recharge",
      "status": "scheduled",
      "costCents": 37000,
      "currency": "USD"
    }
  },
  "evidence": {
    "vin": "1G1YC2D45P5114360",
    "system": "hvac",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "workOrder": {
      "id": "WO-d7a4da2c",
      "operation": "recharge",
      "status": "scheduled",
      "costCents": 37000,
      "currency": "USD"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "wear-systems-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Fulfill & operate

repair

hvac.repair · POST /hvacs/repair · gate offer · sandbox · answers HvacRepair@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) · /1G1YC2D45P5114360 (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.

EmitsHvac.repaired@1.

the SDK — hvac.repair
import { hvac } from 'apis.vin'

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

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:12.393Z · HTTP 200
{
  "type": "OK",
  "answers": "HvacRepair@1",
  "value": {
    "vin": "1G1YC2D45P5114360",
    "system": "hvac",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "workOrder": {
      "id": "WO-d0d8f324",
      "operation": "repair",
      "status": "scheduled",
      "costCents": 37000,
      "currency": "USD"
    }
  },
  "evidence": {
    "vin": "1G1YC2D45P5114360",
    "system": "hvac",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "workOrder": {
      "id": "WO-d0d8f324",
      "operation": "repair",
      "status": "scheduled",
      "costCents": 37000,
      "currency": "USD"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "wear-systems-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

replace

hvac.replace · POST /hvacs/replace · gate offer · sandbox · answers HvacReplace@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) · /1G1YC2D45P5114360 (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.

EmitsHvac.replaced@1.

the SDK — hvac.replace
import { hvac } from 'apis.vin'

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

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:12.393Z · HTTP 200
{
  "type": "OK",
  "answers": "HvacReplace@1",
  "value": {
    "vin": "1G1YC2D45P5114360",
    "system": "hvac",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "workOrder": {
      "id": "WO-ebe543f3",
      "operation": "replace",
      "status": "scheduled",
      "costCents": 37000,
      "currency": "USD"
    }
  },
  "evidence": {
    "vin": "1G1YC2D45P5114360",
    "system": "hvac",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "workOrder": {
      "id": "WO-ebe543f3",
      "operation": "replace",
      "status": "scheduled",
      "costCents": 37000,
      "currency": "USD"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "wear-systems-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

diagnose

hvac.diagnose · POST /hvacs/diagnose · gate offer · sandbox · answers HvacDiagnose@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) · /1G1YC2D45P5114360 (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.

EmitsHvac.diagnosed@1.

the SDK — hvac.diagnose
import { hvac } from 'apis.vin'

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

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:12.351Z · HTTP 200
{
  "type": "OK",
  "answers": "HvacDiagnose@1",
  "value": {
    "vin": "1G1YC2D45P5114360",
    "system": "hvac",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "faults": [],
    "faultCount": 0
  },
  "evidence": {
    "vin": "1G1YC2D45P5114360",
    "system": "hvac",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "faults": [],
    "faultCount": 0
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "wear-systems-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

inspect

hvac.inspect · POST /hvacs/inspect · gate offer · sandbox · answers HvacInspect@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) · /1G1YC2D45P5114360 (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.

EmitsHvac.inspectRequested@1 · Hvac.inspected@1.

the SDK — hvac.inspect
import { hvac } from 'apis.vin'

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

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:12.352Z · HTTP 200
{
  "type": "OK",
  "answers": "HvacInspect@1",
  "value": {
    "vin": "1G1YC2D45P5114360",
    "system": "hvac",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "findings": []
  },
  "evidence": {
    "vin": "1G1YC2D45P5114360",
    "system": "hvac",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "findings": []
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "wear-systems-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

blendDoorRepair

hvac.blendDoorRepair · POST /hvacs/blend-door-repair · gate offer · sandbox · answers HvacBlendDoorRepair@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) · /1G1YC2D45P5114360 (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.

EmitsHvac.blendDoorRepaired@1.

the SDK — hvac.blendDoorRepair
import { hvac } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await hvac.blendDoorRepair({"vin":"1G1YC2D45P5114360"})
POST /hvacs/blend-door-repair
curl -X POST https://apis.vin/hvacs/blend-door-repair \
  -H 'content-type: application/json' \
  -d '{"vin":"1G1YC2D45P5114360"}'

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:12.349Z · HTTP 200
{
  "type": "OK",
  "answers": "HvacBlendDoorRepair@1",
  "value": {
    "vin": "1G1YC2D45P5114360",
    "system": "hvac",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "workOrder": {
      "id": "WO-7a679a5d",
      "operation": "blendDoorRepair",
      "status": "scheduled",
      "costCents": 37000,
      "currency": "USD"
    }
  },
  "evidence": {
    "vin": "1G1YC2D45P5114360",
    "system": "hvac",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "workOrder": {
      "id": "WO-7a679a5d",
      "operation": "blendDoorRepair",
      "status": "scheduled",
      "costCents": 37000,
      "currency": "USD"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "wear-systems-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

cabinFilterReplace

hvac.cabinFilterReplace · POST /hvacs/cabin-filter-replace · gate offer · sandbox · answers HvacCabinFilterReplace@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) · /1G1YC2D45P5114360 (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.

EmitsHvac.cabinFilterReplaced@1.

the SDK — hvac.cabinFilterReplace
import { hvac } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await hvac.cabinFilterReplace({"vin":"1G1YC2D45P5114360"})
POST /hvacs/cabin-filter-replace
curl -X POST https://apis.vin/hvacs/cabin-filter-replace \
  -H 'content-type: application/json' \
  -d '{"vin":"1G1YC2D45P5114360"}'

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:12.350Z · HTTP 200
{
  "type": "OK",
  "answers": "HvacCabinFilterReplace@1",
  "value": {
    "vin": "1G1YC2D45P5114360",
    "system": "hvac",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "workOrder": {
      "id": "WO-f4427eb4",
      "operation": "cabinFilterReplace",
      "status": "scheduled",
      "costCents": 37000,
      "currency": "USD"
    }
  },
  "evidence": {
    "vin": "1G1YC2D45P5114360",
    "system": "hvac",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "workOrder": {
      "id": "WO-f4427eb4",
      "operation": "cabinFilterReplace",
      "status": "scheduled",
      "costCents": 37000,
      "currency": "USD"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "wear-systems-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

compressorReplace

hvac.compressorReplace · POST /hvacs/compressor-replace · gate offer · sandbox · answers HvacCompressorReplace@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) · /1G1YC2D45P5114360 (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.

EmitsHvac.compressorReplaceFailed@1 · Hvac.compressorReplaceRequested@1 · Hvac.compressorReplaced@1.

the SDK — hvac.compressorReplace
import { hvac } from 'apis.vin'

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

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:12.350Z · HTTP 200
{
  "type": "OK",
  "answers": "HvacCompressorReplace@1",
  "value": {
    "vin": "1G1YC2D45P5114360",
    "system": "hvac",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "workOrder": {
      "id": "WO-b27b7b64",
      "operation": "compressorReplace",
      "status": "scheduled",
      "costCents": 37000,
      "currency": "USD"
    }
  },
  "evidence": {
    "vin": "1G1YC2D45P5114360",
    "system": "hvac",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "workOrder": {
      "id": "WO-b27b7b64",
      "operation": "compressorReplace",
      "status": "scheduled",
      "costCents": 37000,
      "currency": "USD"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "wear-systems-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Authorize & resolve

warrantyClaim

hvac.warrantyClaim · POST /hvacs/warranty-claim · gate offer · sandbox · answers HvacWarrantyClaim@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) · /1G1YC2D45P5114360 (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.

EmitsHvac.warrantyClaimFiled@1 · WarrantyClaim.approved@1 · WarrantyClaim.reimbursed@1.

the SDK — hvac.warrantyClaim
import { hvac } from 'apis.vin'

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

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:12.394Z · HTTP 200
{
  "type": "OK",
  "answers": "HvacWarrantyClaim@1",
  "value": {
    "vin": "1G1YC2D45P5114360",
    "system": "hvac",
    "asOf": "2026-08-10",
    "warranty": "active",
    "claim": {
      "id": "WC-0d2f769f",
      "decision": "approved"
    }
  },
  "evidence": {
    "vin": "1G1YC2D45P5114360",
    "system": "hvac",
    "asOf": "2026-08-10",
    "warranty": "active",
    "claim": {
      "id": "WC-0d2f769f",
      "decision": "approved"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "wear-systems-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

warrantyCheck

hvac.warrantyCheck · GET /hvacs/warranty-check · gate none · sandbox · answers HvacWarrantyCheck@1

FieldTypeRequiredNotes
vinstringno

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

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await hvac.warrantyCheck({"vin":"1G1YC2D45P5114360"})
GET /hvacs/warranty-check
curl 'https://apis.vin/hvacs/warranty-check?vin=1G1YC2D45P5114360'

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:12.394Z · HTTP 200
{
  "type": "OK",
  "answers": "HvacWarrantyCheck@1",
  "value": {
    "vin": "1G1YC2D45P5114360",
    "system": "hvac",
    "asOf": "2026-08-10",
    "warranty": "active",
    "void": false,
    "coverageMilesLeft": 12620
  },
  "evidence": {
    "vin": "1G1YC2D45P5114360",
    "system": "hvac",
    "asOf": "2026-08-10",
    "warranty": "active",
    "void": false,
    "coverageMilesLeft": 12620
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "wear-systems-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

More actions

evac

hvac.evac · POST /hvacs/evac · gate offer · sandbox · answers HvacEvac@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) · /1G1YC2D45P5114360 (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.

EmitsHvac.evacFailed@1 · Hvac.evacRequested@1 · Hvac.evaced@1 · Hvac.evacuated@1.

the SDK — hvac.evac
import { hvac } from 'apis.vin'

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

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:12.352Z · HTTP 200
{
  "type": "OK",
  "answers": "HvacEvac@1",
  "value": {
    "vin": "1G1YC2D45P5114360",
    "system": "hvac",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "workOrder": {
      "id": "WO-fce4bc1e",
      "operation": "evac",
      "status": "scheduled",
      "costCents": 37000,
      "currency": "USD"
    }
  },
  "evidence": {
    "vin": "1G1YC2D45P5114360",
    "system": "hvac",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "workOrder": {
      "id": "WO-fce4bc1e",
      "operation": "evac",
      "status": "scheduled",
      "costCents": 37000,
      "currency": "USD"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "wear-systems-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

refrigerantAnalysis

hvac.refrigerantAnalysis · POST /hvacs/refrigerant-analysis · gate key · sandbox · answers HvacRefrigerantAnalysis@1

No input — this capability takes no request body.

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

EmitsHvac.refrigerantAnalyzed@1.

the SDK — hvac.refrigerantAnalysis
import { hvac } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await hvac.refrigerantAnalysis()
POST /hvacs/refrigerant-analysis
curl -X POST https://apis.vin/hvacs/refrigerant-analysis \
  -H 'content-type: application/json' \
  -d '{}'

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

receipt · executed 2026-08-16T14:50:09.861Z · HTTP 200
{
  "type": "OK",
  "answers": "HvacRefrigerantAnalysis@1",
  "value": {
    "vin": "1HGCM82633A004352",
    "system": "hvac",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "contamination": "none",
    "moisturePct": 0,
    "recommendation": "continue normal service interval"
  },
  "evidence": {
    "vin": "1HGCM82633A004352",
    "system": "hvac",
    "asOf": "2026-08-10",
    "verdict": "pass",
    "contamination": "none",
    "moisturePct": 0,
    "recommendation": "continue normal service interval"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "wear-systems-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.

RepairOrder


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