docs.vin

mobilityConversion

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

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

Identity

NounmobilityConversion
PillarServices (facets: 4 services · 2 commerce)
Capabilities6 — 0 live · 6 sandbox · 0 declared
EntitiesRepairOrder
Doorsaggregator.vin
SDKVin.mobilityConversion.* from apis.vin
Address/catalog/mobilityConversion#{action} — the anchor IS the wire name minus mobilityConversion.

Events

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

Discover & read

assess

mobilityConversion.assess · GET /mobility-conversions/assess · gate none · sandbox · answers MobilityConversionAssess@1

No input — this capability takes no request body.

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

EmitsMobilityConversion.assessed@1.

the SDK — mobilityConversion.assess
import { mobilityConversion } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await mobilityConversion.assess()
GET /mobility-conversions/assess
curl 'https://apis.vin/mobility-conversions/assess'

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.930Z · HTTP 200
{
  "type": "OK",
  "answers": "MobilityConversionAssess@1",
  "value": {
    "vin": "1HGCM82633A004352",
    "assessmentRef": "MC-001O",
    "conversionType": "wheelchair-lift",
    "feasible": true,
    "estimatedCost": {
      "amount": "18500.00",
      "currency": "USD"
    },
    "grantReimbursementEligible": true,
    "certifiedInspectionRequired": true,
    "recommendedInstall": [
      "rear-entry-ramp",
      "hand-controls"
    ],
    "asOf": "2026-08-10"
  },
  "evidence": {
    "vin": "1HGCM82633A004352",
    "assessmentRef": "MC-001O",
    "conversionType": "wheelchair-lift",
    "feasible": true,
    "estimatedCost": {
      "amount": "18500.00",
      "currency": "USD"
    },
    "grantReimbursementEligible": true,
    "certifiedInspectionRequired": true,
    "recommendedInstall": [
      "rear-entry-ramp",
      "hand-controls"
    ],
    "asOf": "2026-08-10"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "accessibility-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Quote & price

quote

mobilityConversion.quote · GET /mobility-conversions/quote · gate none · sandbox · answers MobilityConversionQuote@1

No input — this capability takes no request body.

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

EmitsMobilityConversion.quoted@1.

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

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await mobilityConversion.quote()
GET /mobility-conversions/quote
curl 'https://apis.vin/mobility-conversions/quote'

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.931Z · HTTP 200
{
  "type": "OK",
  "answers": "MobilityConversionQuote@1",
  "value": {
    "vin": "1HGCM82633A004352",
    "noun": "mobilityConversion",
    "asOf": "2026-08-10",
    "id": "RO-1f2a3746",
    "concerns": [],
    "payType": "warranty",
    "lines": [
      {
        "line": 1,
        "kind": "labor",
        "description": "labor operation",
        "amountCents": 16500
      }
    ],
    "technicianId": "TECH-3f68cc26",
    "estimateId": "EST-feef6ee9",
    "status": "Open",
    "upfitQuote": {
      "status": "no-upfit-menu-posted",
      "postedLaborRateCentsPerHour": 16500,
      "basis": "no-conversion-hardware-menu-posted"
    }
  },
  "evidence": {
    "vin": "1HGCM82633A004352",
    "noun": "mobilityConversion",
    "asOf": "2026-08-10",
    "id": "RO-1f2a3746",
    "concerns": [],
    "payType": "warranty",
    "lines": [
      {
        "line": 1,
        "kind": "labor",
        "description": "labor operation",
        "amountCents": 16500
      }
    ],
    "technicianId": "TECH-3f68cc26",
    "estimateId": "EST-feef6ee9",
    "status": "Open",
    "upfitQuote": {
      "status": "no-upfit-menu-posted",
      "postedLaborRateCentsPerHour": 16500,
      "basis": "no-conversion-hardware-menu-posted"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "shop-ticket-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Pay & settle

grantReimburse

mobilityConversion.grantReimburse · POST /mobility-conversions/grant-reimburse · gate key · sandbox · answers MobilityConversionGrantReimburse@1

No input — this capability takes no request body.

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

EmitsMobilityConversion.grantReimbursed@1.

the SDK — mobilityConversion.grantReimburse
import { mobilityConversion } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await mobilityConversion.grantReimburse()
POST /mobility-conversions/grant-reimburse
curl -X POST https://apis.vin/mobility-conversions/grant-reimburse \
  -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.930Z · HTTP 200
{
  "type": "OK",
  "answers": "MobilityConversionGrantReimburse@1",
  "value": {
    "vin": "1HGCM82633A004352",
    "noun": "mobilityConversion",
    "asOf": "2026-08-10",
    "id": "RO-1f2a3746",
    "concerns": [],
    "payType": "warranty",
    "lines": [
      {
        "line": 1,
        "kind": "labor",
        "description": "labor operation",
        "amountCents": 16500
      }
    ],
    "technicianId": "TECH-3f68cc26",
    "estimateId": "EST-feef6ee9",
    "status": "Open",
    "grantReimbursement": {
      "status": "no-grant-program-posted",
      "basis": "no-mobility-grant-program-payer-or-cap-posted"
    }
  },
  "evidence": {
    "vin": "1HGCM82633A004352",
    "noun": "mobilityConversion",
    "asOf": "2026-08-10",
    "id": "RO-1f2a3746",
    "concerns": [],
    "payType": "warranty",
    "lines": [
      {
        "line": 1,
        "kind": "labor",
        "description": "labor operation",
        "amountCents": 16500
      }
    ],
    "technicianId": "TECH-3f68cc26",
    "estimateId": "EST-feef6ee9",
    "status": "Open",
    "grantReimbursement": {
      "status": "no-grant-program-posted",
      "basis": "no-mobility-grant-program-payer-or-cap-posted"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "shop-ticket-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Fulfill & operate

install

mobilityConversion.install · POST /mobility-conversions/install · gate key · sandbox · answers MobilityConversionInstall@1

No input — this capability takes no request body.

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

EmitsMobilityConversion.installed@1.

the SDK — mobilityConversion.install
import { mobilityConversion } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await mobilityConversion.install()
POST /mobility-conversions/install
curl -X POST https://apis.vin/mobility-conversions/install \
  -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.930Z · HTTP 200
{
  "type": "OK",
  "answers": "MobilityConversionInstall@1",
  "value": {
    "vin": "1HGCM82633A004352",
    "noun": "mobilityConversion",
    "asOf": "2026-08-10",
    "id": "RO-1f2a3746",
    "concerns": [],
    "payType": "warranty",
    "lines": [
      {
        "line": 1,
        "kind": "labor",
        "description": "labor operation",
        "amountCents": 16500
      }
    ],
    "technicianId": "TECH-3f68cc26",
    "estimateId": "EST-feef6ee9",
    "status": "Open",
    "work": {
      "roId": "RO-1f2a3746",
      "position": "Open",
      "workStatus": "not-started",
      "basis": "ro-position-adjudication"
    }
  },
  "evidence": {
    "vin": "1HGCM82633A004352",
    "noun": "mobilityConversion",
    "asOf": "2026-08-10",
    "id": "RO-1f2a3746",
    "concerns": [],
    "payType": "warranty",
    "lines": [
      {
        "line": 1,
        "kind": "labor",
        "description": "labor operation",
        "amountCents": 16500
      }
    ],
    "technicianId": "TECH-3f68cc26",
    "estimateId": "EST-feef6ee9",
    "status": "Open",
    "work": {
      "roId": "RO-1f2a3746",
      "position": "Open",
      "workStatus": "not-started",
      "basis": "ro-position-adjudication"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "shop-ticket-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

wheelchairLiftInstall

mobilityConversion.wheelchairLiftInstall · POST /mobility-conversions/wheelchair-lift-install · gate key · sandbox · answers MobilityConversionWheelchairLiftInstall@1

No input — this capability takes no request body.

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

EmitsMobilityConversion.wheelchairLiftInstalled@1.

the SDK — mobilityConversion.wheelchairLiftInstall
import { mobilityConversion } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await mobilityConversion.wheelchairLiftInstall()
POST /mobility-conversions/wheelchair-lift-install
curl -X POST https://apis.vin/mobility-conversions/wheelchair-lift-install \
  -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.931Z · HTTP 200
{
  "type": "OK",
  "answers": "MobilityConversionWheelchairLiftInstall@1",
  "value": {
    "vin": "1HGCM82633A004352",
    "noun": "mobilityConversion",
    "asOf": "2026-08-10",
    "id": "RO-1f2a3746",
    "concerns": [],
    "payType": "warranty",
    "lines": [
      {
        "line": 1,
        "kind": "labor",
        "description": "labor operation",
        "amountCents": 16500
      }
    ],
    "technicianId": "TECH-3f68cc26",
    "estimateId": "EST-feef6ee9",
    "status": "Open",
    "work": {
      "roId": "RO-1f2a3746",
      "position": "Open",
      "workStatus": "not-started",
      "basis": "ro-position-adjudication"
    },
    "kind": "wheelchair-lift"
  },
  "evidence": {
    "vin": "1HGCM82633A004352",
    "noun": "mobilityConversion",
    "asOf": "2026-08-10",
    "id": "RO-1f2a3746",
    "concerns": [],
    "payType": "warranty",
    "lines": [
      {
        "line": 1,
        "kind": "labor",
        "description": "labor operation",
        "amountCents": 16500
      }
    ],
    "technicianId": "TECH-3f68cc26",
    "estimateId": "EST-feef6ee9",
    "status": "Open",
    "work": {
      "roId": "RO-1f2a3746",
      "position": "Open",
      "workStatus": "not-started",
      "basis": "ro-position-adjudication"
    },
    "kind": "wheelchair-lift"
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "shop-ticket-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

certifyInspect

mobilityConversion.certifyInspect · POST /mobility-conversions/certify-inspect · gate key · sandbox · answers MobilityConversionCertifyInspect@1

No input — this capability takes no request body.

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

EmitsMobilityConversion.certifyInspected@1.

the SDK — mobilityConversion.certifyInspect
import { mobilityConversion } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await mobilityConversion.certifyInspect()
POST /mobility-conversions/certify-inspect
curl -X POST https://apis.vin/mobility-conversions/certify-inspect \
  -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.930Z · HTTP 200
{
  "type": "OK",
  "answers": "MobilityConversionCertifyInspect@1",
  "value": {
    "vin": "1HGCM82633A004352",
    "noun": "mobilityConversion",
    "asOf": "2026-08-10",
    "id": "RO-1f2a3746",
    "concerns": [],
    "payType": "warranty",
    "lines": [
      {
        "line": 1,
        "kind": "labor",
        "description": "labor operation",
        "amountCents": 16500
      }
    ],
    "technicianId": "TECH-3f68cc26",
    "estimateId": "EST-feef6ee9",
    "status": "Open",
    "certification": {
      "roId": "RO-1f2a3746",
      "position": "Open",
      "workStatus": "not-started",
      "basis": "ro-position-adjudication",
      "status": "not-certifiable-until-complete",
      "standard": {
        "status": "no-certification-standard-posted",
        "basis": "no-certifying-authority-posted"
      }
    }
  },
  "evidence": {
    "vin": "1HGCM82633A004352",
    "noun": "mobilityConversion",
    "asOf": "2026-08-10",
    "id": "RO-1f2a3746",
    "concerns": [],
    "payType": "warranty",
    "lines": [
      {
        "line": 1,
        "kind": "labor",
        "description": "labor operation",
        "amountCents": 16500
      }
    ],
    "technicianId": "TECH-3f68cc26",
    "estimateId": "EST-feef6ee9",
    "status": "Open",
    "certification": {
      "roId": "RO-1f2a3746",
      "position": "Open",
      "workStatus": "not-started",
      "basis": "ro-position-adjudication",
      "status": "not-certifiable-until-complete",
      "standard": {
        "status": "no-certification-standard-posted",
        "basis": "no-certifying-authority-posted"
      }
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "shop-ticket-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

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.

MobilityConversion · Class model

MobilityConversion · 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.