docs.vin

aging

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

aging 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

Nounaging
PillarData (facets: 8 data · 5 services · 2 commerce)
Capabilities15 — 0 live · 15 sandbox · 0 declared
EntitiesInventoryItem
Doorsaggregator.vin
SDKVin.aging.* from apis.vin
Address/catalog/aging#{action} — the anchor IS the wire name minus aging.

Events

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

Discover & read

read

aging.read · GET /agings/read · gate none · sandbox · answers AgingRead@1

FieldTypeRequiredNotes
vinstringno

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

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

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:07.273Z · HTTP 200
{
  "type": "OK",
  "answers": "AgingRead@1",
  "value": {
    "vin": "1C6SRFFT9MN701378",
    "noun": "aging",
    "asOf": "2026-08-10",
    "aging": {
      "stockNumber": "STK-be60e7f2",
      "ageDays": 31,
      "bucket": "aged",
      "agedMark": 30
    }
  },
  "evidence": {
    "vin": "1C6SRFFT9MN701378",
    "noun": "aging",
    "asOf": "2026-08-10",
    "aging": {
      "stockNumber": "STK-be60e7f2",
      "ageDays": 31,
      "bucket": "aged",
      "agedMark": 30
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

liquidationPredict

aging.liquidationPredict · GET /agings/liquidation-predict · gate none · sandbox · answers AgingLiquidationPredict@1

No input — this capability takes no request body.

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

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await aging.liquidationPredict()
GET /agings/liquidation-predict
curl 'https://apis.vin/agings/liquidation-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.593Z · HTTP 200
{
  "type": "OK",
  "answers": "AgingLiquidationPredict@1",
  "value": {
    "vin": "1HGCM82633A004352",
    "noun": "aging",
    "asOf": "2026-08-10",
    "prediction": {
      "status": "not-in-stock"
    }
  },
  "evidence": {
    "vin": "1HGCM82633A004352",
    "noun": "aging",
    "asOf": "2026-08-10",
    "prediction": {
      "status": "not-in-stock"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Authorize & resolve

flag

aging.flag · POST /agings/flag · gate offer · sandbox · answers AgingFlag@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) · /1C6SRFFT9MN701378 (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.

EmitsAging.flagged@1.

the SDK — aging.flag
import { aging } from 'apis.vin'

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

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:07.253Z · HTTP 200
{
  "type": "OK",
  "answers": "AgingFlag@1",
  "value": {
    "vin": "1C6SRFFT9MN701378",
    "noun": "aging",
    "asOf": "2026-08-10",
    "flag": {
      "stockNumber": "STK-be60e7f2",
      "flagged": true,
      "ageDays": 31,
      "mark": 30
    }
  },
  "evidence": {
    "vin": "1C6SRFFT9MN701378",
    "noun": "aging",
    "asOf": "2026-08-10",
    "flag": {
      "stockNumber": "STK-be60e7f2",
      "flagged": true,
      "ageDays": 31,
      "mark": 30
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

More actions

agedUnits

aging.agedUnits · GET /agings/aged-units · gate key · sandbox · answers AgingAgedUnits@1

FieldTypeRequiredNotes
vinstringno

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

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await aging.agedUnits({"vin":"1C6SRFFT9MN701378"})
GET /agings/aged-units
curl 'https://apis.vin/agings/aged-units?vin=1C6SRFFT9MN701378'

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:07.247Z · HTTP 200
{
  "type": "OK",
  "answers": "AgingAgedUnits@1",
  "value": {
    "vin": "1C6SRFFT9MN701378",
    "noun": "aging",
    "asOf": "2026-08-10",
    "agedUnits": {
      "stocked": 10,
      "fresh": 3,
      "watch": 5,
      "aged": 2
    }
  },
  "evidence": {
    "vin": "1C6SRFFT9MN701378",
    "noun": "aging",
    "asOf": "2026-08-10",
    "agedUnits": {
      "stocked": 10,
      "fresh": 3,
      "watch": 5,
      "aged": 2
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

daysSupply

aging.daysSupply · GET /agings/days-supply · gate key · sandbox · answers AgingDaysSupply@1

FieldTypeRequiredNotes
vinstringno

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

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await aging.daysSupply({"vin":"1C6SRFFT9MN701378"})
GET /agings/days-supply
curl 'https://apis.vin/agings/days-supply?vin=1C6SRFFT9MN701378'

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:07.252Z · HTTP 200
{
  "type": "OK",
  "answers": "AgingDaysSupply@1",
  "value": {
    "vin": "1C6SRFFT9MN701378",
    "noun": "aging",
    "asOf": "2026-08-10",
    "daysSupply": {
      "units": 10,
      "frontlineUnits": 3,
      "daysSupply": 150
    }
  },
  "evidence": {
    "vin": "1C6SRFFT9MN701378",
    "noun": "aging",
    "asOf": "2026-08-10",
    "daysSupply": {
      "units": 10,
      "frontlineUnits": 3,
      "daysSupply": 150
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

floorplanCost

aging.floorplanCost · GET /agings/floorplan-cost · gate key · sandbox · answers AgingFloorplanCost@1

FieldTypeRequiredNotes
vinstringno

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

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await aging.floorplanCost({"vin":"1C6SRFFT9MN701378"})
GET /agings/floorplan-cost
curl 'https://apis.vin/agings/floorplan-cost?vin=1C6SRFFT9MN701378'

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:07.256Z · HTTP 200
{
  "type": "OK",
  "answers": "AgingFloorplanCost@1",
  "value": {
    "vin": "1C6SRFFT9MN701378",
    "noun": "aging",
    "asOf": "2026-08-10",
    "floorplan": {
      "floored": false,
      "perDiemCents": 0,
      "accruedCents": 0,
      "principalCents": 0,
      "currency": "USD"
    }
  },
  "evidence": {
    "vin": "1C6SRFFT9MN701378",
    "noun": "aging",
    "asOf": "2026-08-10",
    "floorplan": {
      "floored": false,
      "perDiemCents": 0,
      "accruedCents": 0,
      "principalCents": 0,
      "currency": "USD"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

liquidate

aging.liquidate · POST /agings/liquidate · gate offer · sandbox · answers AgingLiquidate@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) · /1C6SRFFT9MN701378 (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.

EmitsAging.liquidated@1.

the SDK — aging.liquidate
import { aging } from 'apis.vin'

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

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:07.258Z · HTTP 200
{
  "type": "OK",
  "answers": "AgingLiquidate@1",
  "value": {
    "vin": "1C6SRFFT9MN701378",
    "noun": "aging",
    "asOf": "2026-08-10",
    "liquidation": {
      "status": "routed",
      "stockNumber": "STK-be60e7f2",
      "channel": "auction",
      "expectedProceedsCents": 1850000,
      "currency": "USD"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "1C6SRFFT9MN701378",
    "noun": "aging",
    "asOf": "2026-08-10",
    "liquidation": {
      "status": "routed",
      "stockNumber": "STK-be60e7f2",
      "channel": "auction",
      "expectedProceedsCents": 1850000,
      "currency": "USD"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

overageRisk

aging.overageRisk · GET /agings/overage-risk · gate key · sandbox · answers AgingOverageRisk@1

FieldTypeRequiredNotes
vinstringno

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

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await aging.overageRisk({"vin":"1C6SRFFT9MN701378"})
GET /agings/overage-risk
curl 'https://apis.vin/agings/overage-risk?vin=1C6SRFFT9MN701378'

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:07.263Z · HTTP 200
{
  "type": "OK",
  "answers": "AgingOverageRisk@1",
  "value": {
    "vin": "1C6SRFFT9MN701378",
    "noun": "aging",
    "asOf": "2026-08-10",
    "risk": {
      "stockNumber": "STK-be60e7f2",
      "level": "high",
      "ageDays": 31,
      "daysToMark": 0
    }
  },
  "evidence": {
    "vin": "1C6SRFFT9MN701378",
    "noun": "aging",
    "asOf": "2026-08-10",
    "risk": {
      "stockNumber": "STK-be60e7f2",
      "level": "high",
      "ageDays": 31,
      "daysToMark": 0
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

rebalance

aging.rebalance · POST /agings/rebalance · gate offer · sandbox · answers AgingRebalance@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) · /1C6SRFFT9MN701378 (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.

EmitsAging.rebalanced@1.

the SDK — aging.rebalance
import { aging } from 'apis.vin'

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

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:07.273Z · HTTP 200
{
  "type": "OK",
  "answers": "AgingRebalance@1",
  "value": {
    "vin": "1C6SRFFT9MN701378",
    "noun": "aging",
    "asOf": "2026-08-10",
    "rebalance": {
      "recommendation": "wholesale-aged-units",
      "agedUnits": 2,
      "stocked": 10
    }
  },
  "evidence": {
    "vin": "1C6SRFFT9MN701378",
    "noun": "aging",
    "asOf": "2026-08-10",
    "rebalance": {
      "recommendation": "wholesale-aged-units",
      "agedUnits": 2,
      "stocked": 10
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

repriceTrigger

aging.repriceTrigger · POST /agings/reprice-trigger · gate offer · sandbox · answers AgingRepriceTrigger@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) · /1C6SRFFT9MN701378 (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.

EmitsAging.repriceTriggered@1.

the SDK — aging.repriceTrigger
import { aging } from 'apis.vin'

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

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:07.274Z · HTTP 200
{
  "type": "OK",
  "answers": "AgingRepriceTrigger@1",
  "value": {
    "vin": "1C6SRFFT9MN701378",
    "noun": "aging",
    "asOf": "2026-08-10",
    "trigger": {
      "status": "triggered",
      "stockNumber": "STK-be60e7f2",
      "askingPriceCents": 2300000,
      "newPriceCents": 2185000,
      "currency": "USD"
    }
  },
  "evidence": {
    "vin": "1C6SRFFT9MN701378",
    "noun": "aging",
    "asOf": "2026-08-10",
    "trigger": {
      "status": "triggered",
      "stockNumber": "STK-be60e7f2",
      "askingPriceCents": 2300000,
      "newPriceCents": 2185000,
      "currency": "USD"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

stockingMix

aging.stockingMix · GET /agings/stocking-mix · gate key · sandbox · answers AgingStockingMix@1

FieldTypeRequiredNotes
vinstringno

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

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await aging.stockingMix({"vin":"1C6SRFFT9MN701378"})
GET /agings/stocking-mix
curl 'https://apis.vin/agings/stocking-mix?vin=1C6SRFFT9MN701378'

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:07.283Z · HTTP 200
{
  "type": "OK",
  "answers": "AgingStockingMix@1",
  "value": {
    "vin": "1C6SRFFT9MN701378",
    "noun": "aging",
    "asOf": "2026-08-10",
    "stockingMix": {
      "stocked": 10,
      "byPosition": {
        "SOURCING": 1,
        "BIDDING": 1,
        "ACQUIRED": 1,
        "IN_TRANSIT": 1,
        "RECEIVED": 1,
        "INSPECTED": 1,
        "RECONDITIONED": 1,
        "FRONTLINE": 1,
        "FLOORED": 1,
        "LISTED": 1
      }
    }
  },
  "evidence": {
    "vin": "1C6SRFFT9MN701378",
    "noun": "aging",
    "asOf": "2026-08-10",
    "stockingMix": {
      "stocked": 10,
      "byPosition": {
        "SOURCING": 1,
        "BIDDING": 1,
        "ACQUIRED": 1,
        "IN_TRANSIT": 1,
        "RECEIVED": 1,
        "INSPECTED": 1,
        "RECONDITIONED": 1,
        "FRONTLINE": 1,
        "FLOORED": 1,
        "LISTED": 1
      }
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

turn

aging.turn · GET /agings/turn · gate key · sandbox · answers AgingTurn@1

FieldTypeRequiredNotes
vinstringno

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

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

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:07.284Z · HTTP 200
{
  "type": "OK",
  "answers": "AgingTurn@1",
  "value": {
    "vin": "1C6SRFFT9MN701378",
    "noun": "aging",
    "asOf": "2026-08-10",
    "turn": {
      "turnDays": 32,
      "targetDays": 45
    }
  },
  "evidence": {
    "vin": "1C6SRFFT9MN701378",
    "noun": "aging",
    "asOf": "2026-08-10",
    "turn": {
      "turnDays": 32,
      "targetDays": 45
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

wholesaleOut

aging.wholesaleOut · POST /agings/wholesale-out · gate offer · sandbox · answers AgingWholesaleOut@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) · /1C6SRFFT9MN701378 (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.

EmitsAging.failed@1 · Aging.wholesaledOut@1.

the SDK — aging.wholesaleOut
import { aging } from 'apis.vin'

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

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:07.296Z · HTTP 200
{
  "type": "OK",
  "answers": "AgingWholesaleOut@1",
  "value": {
    "vin": "1C6SRFFT9MN701378",
    "noun": "aging",
    "asOf": "2026-08-10",
    "liquidation": {
      "status": "routed",
      "stockNumber": "STK-be60e7f2",
      "channel": "auction",
      "expectedProceedsCents": 1850000,
      "currency": "USD"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "1C6SRFFT9MN701378",
    "noun": "aging",
    "asOf": "2026-08-10",
    "liquidation": {
      "status": "routed",
      "stockNumber": "STK-be60e7f2",
      "channel": "auction",
      "expectedProceedsCents": 1850000,
      "currency": "USD"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

wholesaleTrigger

aging.wholesaleTrigger · POST /agings/wholesale-trigger · gate offer · sandbox · answers AgingWholesaleTrigger@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) · /1C6SRFFT9MN701378 (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.

EmitsAging.wholesaleTriggered@1.

the SDK — aging.wholesaleTrigger
import { aging } from 'apis.vin'

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

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:07.300Z · HTTP 200
{
  "type": "OK",
  "answers": "AgingWholesaleTrigger@1",
  "value": {
    "vin": "1C6SRFFT9MN701378",
    "noun": "aging",
    "asOf": "2026-08-10",
    "trigger": {
      "stockNumber": "STK-be60e7f2",
      "triggered": true,
      "ageDays": 31,
      "mark": 30
    }
  },
  "evidence": {
    "vin": "1C6SRFFT9MN701378",
    "noun": "aging",
    "asOf": "2026-08-10",
    "trigger": {
      "stockNumber": "STK-be60e7f2",
      "triggered": true,
      "ageDays": 31,
      "mark": 30
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

writeDown

aging.writeDown · POST /agings/write-down · gate offer · sandbox · answers AgingWriteDown@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) · /1C6SRFFT9MN701378 (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.

EmitsAging.failed@1 · Aging.writtenDown@1.

the SDK — aging.writeDown
import { aging } from 'apis.vin'

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

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:07.300Z · HTTP 200
{
  "type": "OK",
  "answers": "AgingWriteDown@1",
  "value": {
    "vin": "1C6SRFFT9MN701378",
    "noun": "aging",
    "asOf": "2026-08-10",
    "writeDown": {
      "status": "written-down",
      "stockNumber": "STK-be60e7f2",
      "previousBookCents": 2300000,
      "newBookCents": 1850000,
      "writeDownCents": 450000,
      "currency": "USD"
    }
  },
  "evidence": {
    "vin": "1C6SRFFT9MN701378",
    "noun": "aging",
    "asOf": "2026-08-10",
    "writeDown": {
      "status": "written-down",
      "stockNumber": "STK-be60e7f2",
      "previousBookCents": 2300000,
      "newBookCents": 1850000,
      "writeDownCents": 450000,
      "currency": "USD"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "yard-iron-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.

InventoryItem


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