recycledPart
The recycledPart noun — identity, lifecycle, events, and every capability as an anchored section: 21 capabilities, 0 live, 21 sandbox, 0 declared.
recycledPart is one of the estate's 317 automotive nouns — a job a car needs done. It carries 21 capabilities: 0 live, 21 sandbox, 0 declared · doors aggregator.vin.
Identity
| Noun | recycledPart |
| Pillar | Data (facets: 9 data · 6 services · 6 commerce) |
| Capabilities | 21 — 0 live · 21 sandbox · 0 declared |
| Entities | Part |
| Doors | aggregator.vin |
| SDK | Vin.recycledPart.* from apis.vin |
| Address | /catalog/recycledPart#{action} — the anchor IS the wire name minus recycledPart. |
Events
The vocabulary this noun can append to the record — 25 past-tense, versioned event types, each linked to the capability that emits it:
RecycledPart.charged@1— emitted bypayRecycledPart.completed@1— emitted byorderRecycledPart.dispatched@1— emitted byorderRecycledPart.graded@1— emitted bygradeRecycledPart.inspectRequested@1— emitted byinspectRecycledPart.inspected@1— emitted byinspectRecycledPart.installFailed@1— emitted byinstallRecycledPart.installRequested@1— emitted byinstallRecycledPart.installed@1— emitted byinstallRecycledPart.ordered@1— emitted byorderRecycledPart.paid@1— emitted bypayRecycledPart.payFailed@1— emitted bypayRecycledPart.payRequested@1— emitted bypayRecycledPart.pullRequested@1— emitted bypullRecycledPart.pulled@1— emitted bypullRecycledPart.purchased@1— emitted bybuyRecycledPart.quoteRequested@1— emitted byquoteRecycledPart.quoted@1— emitted byquoteRecycledPart.refunded@1— emitted byrefundRecycledPart.returnRequested@1— emitted byreturnRecycledPart.returned@1— emitted byreturnRecycledPart.shipped@1— emitted byshipRecycledPart.sold@1— emitted bysellRecycledPart.tested@1— emitted bytestServiceOrder.settled@1— emitted byorder·pay
Discover & read
lookup
recycledPart.lookup · GET /recycled-parts/lookup · gate none · sandbox · answers RecycledPartLookup@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /7FCTGAAP2TN043881 (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.
import { recycledPart } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await recycledPart.lookup({"vin":"7FCTGAAP2TN043881"})curl 'https://apis.vin/recycled-parts/lookup?vin=7FCTGAAP2TN043881'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.
{
"type": "OK",
"answers": "RecycledPartLookup@1",
"value": {
"vin": "7FCTGAAP2TN043881",
"noun": "recycledPart",
"asOf": "2026-08-10",
"lookup": "lookup",
"partNumber": "RP-69128f91",
"component": "recycled component",
"fits": true,
"partSource": "recycled"
},
"evidence": {
"vin": "7FCTGAAP2TN043881",
"noun": "recycledPart",
"asOf": "2026-08-10",
"lookup": "lookup",
"partNumber": "RP-69128f91",
"component": "recycled component",
"fits": true,
"partSource": "recycled"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "ownership-upkeep-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}availability
recycledPart.availability · GET /recycled-parts/availability · gate none · sandbox · answers RecycledPartAvailability@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /7FCTGAAP2TN043881 (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.
import { recycledPart } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await recycledPart.availability({"vin":"7FCTGAAP2TN043881"})curl 'https://apis.vin/recycled-parts/availability?vin=7FCTGAAP2TN043881'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.
{
"type": "OK",
"answers": "RecycledPartAvailability@1",
"value": {
"vin": "7FCTGAAP2TN043881",
"noun": "recycledPart",
"asOf": "2026-08-10",
"partNumber": "RP-69128f91",
"onHand": 4,
"yards": 4,
"nearestMiles": 119
},
"evidence": {
"vin": "7FCTGAAP2TN043881",
"noun": "recycledPart",
"asOf": "2026-08-10",
"partNumber": "RP-69128f91",
"onHand": 4,
"yards": 4,
"nearestMiles": 119
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "ownership-upkeep-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}fitment
recycledPart.fitment · GET /recycled-parts/fitment · gate none · sandbox · answers RecycledPartFitment@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /7FCTGAAP2TN043881 (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.
import { recycledPart } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await recycledPart.fitment({"vin":"7FCTGAAP2TN043881"})curl 'https://apis.vin/recycled-parts/fitment?vin=7FCTGAAP2TN043881'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.
{
"type": "OK",
"answers": "RecycledPartFitment@1",
"value": {
"vin": "7FCTGAAP2TN043881",
"noun": "recycledPart",
"asOf": "2026-08-10",
"lookup": "fitment",
"partNumber": "RP-69128f91",
"component": "recycled component",
"fits": true,
"partSource": "recycled"
},
"evidence": {
"vin": "7FCTGAAP2TN043881",
"noun": "recycledPart",
"asOf": "2026-08-10",
"lookup": "fitment",
"partNumber": "RP-69128f91",
"component": "recycled component",
"fits": true,
"partSource": "recycled"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "ownership-upkeep-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}locate
recycledPart.locate · GET /recycled-parts/locate · gate none · sandbox · answers RecycledPartLocate@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /7FCTGAAP2TN043881 (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.
import { recycledPart } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await recycledPart.locate({"vin":"7FCTGAAP2TN043881"})curl 'https://apis.vin/recycled-parts/locate?vin=7FCTGAAP2TN043881'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.
{
"type": "OK",
"answers": "RecycledPartLocate@1",
"value": {
"vin": "7FCTGAAP2TN043881",
"noun": "recycledPart",
"asOf": "2026-08-10",
"partNumber": "RP-69128f91",
"onHand": 4,
"yards": 4,
"nearestMiles": 119
},
"evidence": {
"vin": "7FCTGAAP2TN043881",
"noun": "recycledPart",
"asOf": "2026-08-10",
"partNumber": "RP-69128f91",
"onHand": 4,
"yards": 4,
"nearestMiles": 119
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "ownership-upkeep-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}grade
recycledPart.grade · GET /recycled-parts/grade · gate key · sandbox · answers RecycledPartGrade@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /7FCTGAAP2TN043881 (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.
Emits — RecycledPart.graded@1.
import { recycledPart } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await recycledPart.grade({"vin":"7FCTGAAP2TN043881"})curl 'https://apis.vin/recycled-parts/grade?vin=7FCTGAAP2TN043881'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.
{
"type": "OK",
"answers": "RecycledPartGrade@1",
"value": {
"vin": "7FCTGAAP2TN043881",
"noun": "recycledPart",
"asOf": "2026-08-10",
"partNumber": "RP-69128f91",
"grade": "A",
"basis": "clean"
},
"evidence": {
"vin": "7FCTGAAP2TN043881",
"noun": "recycledPart",
"asOf": "2026-08-10",
"partNumber": "RP-69128f91",
"grade": "A",
"basis": "clean"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "ownership-upkeep-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}gradeLookup
recycledPart.gradeLookup · GET /recycled-parts/grade-lookup · gate none · sandbox · answers RecycledPartGradeLookup@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /7FCTGAAP2TN043881 (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.
import { recycledPart } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await recycledPart.gradeLookup({"vin":"7FCTGAAP2TN043881"})curl 'https://apis.vin/recycled-parts/grade-lookup?vin=7FCTGAAP2TN043881'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.
{
"type": "OK",
"answers": "RecycledPartGradeLookup@1",
"value": {
"vin": "7FCTGAAP2TN043881",
"noun": "recycledPart",
"asOf": "2026-08-10",
"partNumber": "RP-69128f91",
"grade": "A",
"basis": "clean"
},
"evidence": {
"vin": "7FCTGAAP2TN043881",
"noun": "recycledPart",
"asOf": "2026-08-10",
"partNumber": "RP-69128f91",
"grade": "A",
"basis": "clean"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "ownership-upkeep-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}interchangeLookup
recycledPart.interchangeLookup · GET /recycled-parts/interchange-lookup · gate none · sandbox · answers RecycledPartInterchangeLookup@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /7FCTGAAP2TN043881 (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.
import { recycledPart } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await recycledPart.interchangeLookup({"vin":"7FCTGAAP2TN043881"})curl 'https://apis.vin/recycled-parts/interchange-lookup?vin=7FCTGAAP2TN043881'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.
{
"type": "OK",
"answers": "RecycledPartInterchangeLookup@1",
"value": {
"vin": "7FCTGAAP2TN043881",
"noun": "recycledPart",
"asOf": "2026-08-10",
"lookup": "interchangeLookup",
"partNumber": "RP-69128f91",
"component": "recycled component",
"fits": true,
"partSource": "recycled",
"interchange": "1C-b62beafe"
},
"evidence": {
"vin": "7FCTGAAP2TN043881",
"noun": "recycledPart",
"asOf": "2026-08-10",
"lookup": "interchangeLookup",
"partNumber": "RP-69128f91",
"component": "recycled component",
"fits": true,
"partSource": "recycled",
"interchange": "1C-b62beafe"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "ownership-upkeep-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Quote & price
quote
recycledPart.quote · POST /recycled-parts/quote · gate offer · sandbox · answers RecycledPartQuote@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
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.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /7FCTGAAP2TN043881 (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.
Emits — RecycledPart.quoteRequested@1 · RecycledPart.quoted@1.
import { recycledPart } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await recycledPart.quote({"vin":"7FCTGAAP2TN043881"})curl -X POST https://apis.vin/recycled-parts/quote \
-H 'content-type: application/json' \
-d '{"vin":"7FCTGAAP2TN043881"}'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.
{
"type": "OK",
"answers": "RecycledPartQuote@1",
"value": {
"vin": "7FCTGAAP2TN043881",
"noun": "recycledPart",
"asOf": "2026-08-10",
"partNumber": "RP-69128f91",
"grade": "A",
"quote": {
"id": "RQ-18f6c214",
"amountCents": 14400,
"newComparableCents": 24000,
"currency": "USD",
"status": "extended"
}
},
"evidence": {
"vin": "7FCTGAAP2TN043881",
"noun": "recycledPart",
"asOf": "2026-08-10",
"partNumber": "RP-69128f91",
"grade": "A",
"quote": {
"id": "RQ-18f6c214",
"amountCents": 14400,
"newComparableCents": 24000,
"currency": "USD",
"status": "extended"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "ownership-upkeep-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}price
recycledPart.price · GET /recycled-parts/price · gate none · sandbox · answers RecycledPartPrice@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /7FCTGAAP2TN043881 (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.
import { recycledPart } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await recycledPart.price({"vin":"7FCTGAAP2TN043881"})curl 'https://apis.vin/recycled-parts/price?vin=7FCTGAAP2TN043881'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.
{
"type": "OK",
"answers": "RecycledPartPrice@1",
"value": {
"vin": "7FCTGAAP2TN043881",
"noun": "recycledPart",
"asOf": "2026-08-10",
"partNumber": "RP-69128f91",
"grade": "A",
"unitPriceCents": 14400,
"newComparableCents": 24000,
"currency": "USD"
},
"evidence": {
"vin": "7FCTGAAP2TN043881",
"noun": "recycledPart",
"asOf": "2026-08-10",
"partNumber": "RP-69128f91",
"grade": "A",
"unitPriceCents": 14400,
"newComparableCents": 24000,
"currency": "USD"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "ownership-upkeep-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Apply & book
order
recycledPart.order · POST /recycled-parts/order · gate offer · sandbox · answers RecycledPartOrder@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
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.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /7FCTGAAP2TN043881 (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.
Emits — RecycledPart.completed@1 · RecycledPart.dispatched@1 · RecycledPart.ordered@1 · ServiceOrder.settled@1.
import { recycledPart } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await recycledPart.order({"vin":"7FCTGAAP2TN043881"})curl -X POST https://apis.vin/recycled-parts/order \
-H 'content-type: application/json' \
-d '{"vin":"7FCTGAAP2TN043881"}'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.
{
"type": "OK",
"answers": "RecycledPartOrder@1",
"value": {
"vin": "7FCTGAAP2TN043881",
"noun": "recycledPart",
"asOf": "2026-08-10",
"partNumber": "RP-69128f91",
"order": {
"id": "ORD-381b2418",
"item": "recycled component",
"grade": "A",
"status": "placed",
"amountCents": 14400,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "7FCTGAAP2TN043881",
"noun": "recycledPart",
"asOf": "2026-08-10",
"partNumber": "RP-69128f91",
"order": {
"id": "ORD-381b2418",
"item": "recycled component",
"grade": "A",
"status": "placed",
"amountCents": 14400,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "ownership-upkeep-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Pay & settle
pay
recycledPart.pay · POST /recycled-parts/pay · gate offer · sandbox · answers RecycledPartPay@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
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.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /7FCTGAAP2TN043881 (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.
Emits — RecycledPart.charged@1 · RecycledPart.paid@1 · RecycledPart.payFailed@1 · RecycledPart.payRequested@1 · ServiceOrder.settled@1.
import { recycledPart } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await recycledPart.pay({"vin":"7FCTGAAP2TN043881"})curl -X POST https://apis.vin/recycled-parts/pay \
-H 'content-type: application/json' \
-d '{"vin":"7FCTGAAP2TN043881"}'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.
{
"type": "OK",
"answers": "RecycledPartPay@1",
"value": {
"vin": "7FCTGAAP2TN043881",
"noun": "recycledPart",
"asOf": "2026-08-10",
"partNumber": "RP-69128f91",
"payment": {
"id": "PAY-197af1ae",
"status": "settled",
"amountCents": 14400,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "7FCTGAAP2TN043881",
"noun": "recycledPart",
"asOf": "2026-08-10",
"partNumber": "RP-69128f91",
"payment": {
"id": "PAY-197af1ae",
"status": "settled",
"amountCents": 14400,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "ownership-upkeep-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}buy
recycledPart.buy · POST /recycled-parts/buy · gate offer · sandbox · answers RecycledPartBuy@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
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.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /7FCTGAAP2TN043881 (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.
Emits — RecycledPart.purchased@1.
import { recycledPart } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await recycledPart.buy({"vin":"7FCTGAAP2TN043881"})curl -X POST https://apis.vin/recycled-parts/buy \
-H 'content-type: application/json' \
-d '{"vin":"7FCTGAAP2TN043881"}'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.
{
"type": "OK",
"answers": "RecycledPartBuy@1",
"value": {
"vin": "7FCTGAAP2TN043881",
"noun": "recycledPart",
"asOf": "2026-08-10",
"partNumber": "RP-69128f91",
"order": {
"id": "ORD-20fa6290",
"item": "recycled component",
"grade": "A",
"status": "placed",
"amountCents": 14400,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "7FCTGAAP2TN043881",
"noun": "recycledPart",
"asOf": "2026-08-10",
"partNumber": "RP-69128f91",
"order": {
"id": "ORD-20fa6290",
"item": "recycled component",
"grade": "A",
"status": "placed",
"amountCents": 14400,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "ownership-upkeep-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}sell
recycledPart.sell · POST /recycled-parts/sell · gate offer · sandbox · answers RecycledPartSell@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
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.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /7FCTGAAP2TN043881 (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.
Emits — RecycledPart.sold@1.
import { recycledPart } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await recycledPart.sell({"vin":"7FCTGAAP2TN043881"})curl -X POST https://apis.vin/recycled-parts/sell \
-H 'content-type: application/json' \
-d '{"vin":"7FCTGAAP2TN043881"}'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.
{
"type": "OK",
"answers": "RecycledPartSell@1",
"value": {
"vin": "7FCTGAAP2TN043881",
"noun": "recycledPart",
"asOf": "2026-08-10",
"partNumber": "RP-69128f91",
"sale": {
"status": "refused",
"reason": "no-donor-vehicle"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "7FCTGAAP2TN043881",
"noun": "recycledPart",
"asOf": "2026-08-10",
"partNumber": "RP-69128f91",
"sale": {
"status": "refused",
"reason": "no-donor-vehicle"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "ownership-upkeep-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}refund
recycledPart.refund · POST /recycled-parts/refund · gate offer · sandbox · answers RecycledPartRefund@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
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.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /7FCTGAAP2TN043881 (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.
Emits — RecycledPart.refunded@1.
import { recycledPart } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await recycledPart.refund({"vin":"7FCTGAAP2TN043881"})curl -X POST https://apis.vin/recycled-parts/refund \
-H 'content-type: application/json' \
-d '{"vin":"7FCTGAAP2TN043881"}'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.
{
"type": "OK",
"answers": "RecycledPartRefund@1",
"value": {
"vin": "7FCTGAAP2TN043881",
"noun": "recycledPart",
"asOf": "2026-08-10",
"partNumber": "RP-69128f91",
"refund": {
"id": "RF-0562edf2",
"kind": "refund",
"status": "issued",
"amountCents": 14400,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "7FCTGAAP2TN043881",
"noun": "recycledPart",
"asOf": "2026-08-10",
"partNumber": "RP-69128f91",
"refund": {
"id": "RF-0562edf2",
"kind": "refund",
"status": "issued",
"amountCents": 14400,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "ownership-upkeep-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Fulfill & operate
install
recycledPart.install · POST /recycled-parts/install · gate offer · sandbox · answers RecycledPartInstall@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
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.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /7FCTGAAP2TN043881 (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.
Emits — RecycledPart.installFailed@1 · RecycledPart.installRequested@1 · RecycledPart.installed@1.
import { recycledPart } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await recycledPart.install({"vin":"7FCTGAAP2TN043881"})curl -X POST https://apis.vin/recycled-parts/install \
-H 'content-type: application/json' \
-d '{"vin":"7FCTGAAP2TN043881"}'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.
{
"type": "OK",
"answers": "RecycledPartInstall@1",
"value": {
"vin": "7FCTGAAP2TN043881",
"noun": "recycledPart",
"asOf": "2026-08-10",
"partNumber": "RP-69128f91",
"workOrder": {
"id": "WO-fc36d9c3",
"operation": "install",
"status": "scheduled",
"costCents": 7200,
"currency": "USD"
}
},
"evidence": {
"vin": "7FCTGAAP2TN043881",
"noun": "recycledPart",
"asOf": "2026-08-10",
"partNumber": "RP-69128f91",
"workOrder": {
"id": "WO-fc36d9c3",
"operation": "install",
"status": "scheduled",
"costCents": 7200,
"currency": "USD"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "ownership-upkeep-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}inspect
recycledPart.inspect · POST /recycled-parts/inspect · gate offer · sandbox · answers RecycledPartInspect@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
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.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /7FCTGAAP2TN043881 (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.
Emits — RecycledPart.inspectRequested@1 · RecycledPart.inspected@1.
import { recycledPart } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await recycledPart.inspect({"vin":"7FCTGAAP2TN043881"})curl -X POST https://apis.vin/recycled-parts/inspect \
-H 'content-type: application/json' \
-d '{"vin":"7FCTGAAP2TN043881"}'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.
{
"type": "OK",
"answers": "RecycledPartInspect@1",
"value": {
"vin": "7FCTGAAP2TN043881",
"noun": "recycledPart",
"asOf": "2026-08-10",
"partNumber": "RP-69128f91",
"grade": "A",
"result": {
"id": "RT-9bbee914",
"outcome": "passed"
}
},
"evidence": {
"vin": "7FCTGAAP2TN043881",
"noun": "recycledPart",
"asOf": "2026-08-10",
"partNumber": "RP-69128f91",
"grade": "A",
"result": {
"id": "RT-9bbee914",
"outcome": "passed"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "ownership-upkeep-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}ship
recycledPart.ship · POST /recycled-parts/ship · gate offer · sandbox · answers RecycledPartShip@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
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.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /7FCTGAAP2TN043881 (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.
Emits — RecycledPart.shipped@1.
import { recycledPart } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await recycledPart.ship({"vin":"7FCTGAAP2TN043881"})curl -X POST https://apis.vin/recycled-parts/ship \
-H 'content-type: application/json' \
-d '{"vin":"7FCTGAAP2TN043881"}'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.
{
"type": "OK",
"answers": "RecycledPartShip@1",
"value": {
"vin": "7FCTGAAP2TN043881",
"noun": "recycledPart",
"asOf": "2026-08-10",
"partNumber": "RP-69128f91",
"shipment": {
"id": "SH-c8252efa",
"mode": "freight",
"etaDays": 2,
"status": "shipped"
}
},
"evidence": {
"vin": "7FCTGAAP2TN043881",
"noun": "recycledPart",
"asOf": "2026-08-10",
"partNumber": "RP-69128f91",
"shipment": {
"id": "SH-c8252efa",
"mode": "freight",
"etaDays": 2,
"status": "shipped"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "ownership-upkeep-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Authorize & resolve
warrantyCheck
recycledPart.warrantyCheck · GET /recycled-parts/warranty-check · gate none · sandbox · answers RecycledPartWarrantyCheck@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /7FCTGAAP2TN043881 (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.
import { recycledPart } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await recycledPart.warrantyCheck({"vin":"7FCTGAAP2TN043881"})curl 'https://apis.vin/recycled-parts/warranty-check?vin=7FCTGAAP2TN043881'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.
{
"type": "OK",
"answers": "RecycledPartWarrantyCheck@1",
"value": {
"vin": "7FCTGAAP2TN043881",
"noun": "recycledPart",
"asOf": "2026-08-10",
"partNumber": "RP-69128f91",
"grade": "A",
"warranty": {
"kind": "exchange",
"days": 90
}
},
"evidence": {
"vin": "7FCTGAAP2TN043881",
"noun": "recycledPart",
"asOf": "2026-08-10",
"partNumber": "RP-69128f91",
"grade": "A",
"warranty": {
"kind": "exchange",
"days": 90
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "ownership-upkeep-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Lifecycle & state
return
recycledPart.return · POST /recycled-parts/return · gate offer · sandbox · answers RecycledPartReturn@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
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.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /7FCTGAAP2TN043881 (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.
Emits — RecycledPart.returnRequested@1 · RecycledPart.returned@1.
import { recycledPart } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await recycledPart.return({"vin":"7FCTGAAP2TN043881"})curl -X POST https://apis.vin/recycled-parts/return \
-H 'content-type: application/json' \
-d '{"vin":"7FCTGAAP2TN043881"}'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.
{
"type": "OK",
"answers": "RecycledPartReturn@1",
"value": {
"vin": "7FCTGAAP2TN043881",
"noun": "recycledPart",
"asOf": "2026-08-10",
"partNumber": "RP-69128f91",
"refund": {
"id": "RF-9d6ed526",
"kind": "return",
"status": "issued",
"amountCents": 14400,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "7FCTGAAP2TN043881",
"noun": "recycledPart",
"asOf": "2026-08-10",
"partNumber": "RP-69128f91",
"refund": {
"id": "RF-9d6ed526",
"kind": "return",
"status": "issued",
"amountCents": 14400,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "ownership-upkeep-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}More actions
pull
recycledPart.pull · POST /recycled-parts/pull · gate offer · sandbox · answers RecycledPartPull@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
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.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /7FCTGAAP2TN043881 (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.
Emits — RecycledPart.pullRequested@1 · RecycledPart.pulled@1.
import { recycledPart } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await recycledPart.pull({"vin":"7FCTGAAP2TN043881"})curl -X POST https://apis.vin/recycled-parts/pull \
-H 'content-type: application/json' \
-d '{"vin":"7FCTGAAP2TN043881"}'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.
{
"type": "OK",
"answers": "RecycledPartPull@1",
"value": {
"vin": "7FCTGAAP2TN043881",
"noun": "recycledPart",
"asOf": "2026-08-10",
"partNumber": "RP-69128f91",
"pull": {
"status": "no-donor-vehicle"
}
},
"evidence": {
"vin": "7FCTGAAP2TN043881",
"noun": "recycledPart",
"asOf": "2026-08-10",
"partNumber": "RP-69128f91",
"pull": {
"status": "no-donor-vehicle"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "ownership-upkeep-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}test
recycledPart.test · POST /recycled-parts/test · gate offer · sandbox · answers RecycledPartTest@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
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.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /7FCTGAAP2TN043881 (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.
Emits — RecycledPart.tested@1.
import { recycledPart } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await recycledPart.test({"vin":"7FCTGAAP2TN043881"})curl -X POST https://apis.vin/recycled-parts/test \
-H 'content-type: application/json' \
-d '{"vin":"7FCTGAAP2TN043881"}'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.
{
"type": "OK",
"answers": "RecycledPartTest@1",
"value": {
"vin": "7FCTGAAP2TN043881",
"noun": "recycledPart",
"asOf": "2026-08-10",
"partNumber": "RP-69128f91",
"grade": "A",
"result": {
"id": "RT-99558404",
"outcome": "passed"
}
},
"evidence": {
"vin": "7FCTGAAP2TN043881",
"noun": "recycledPart",
"asOf": "2026-08-10",
"partNumber": "RP-69128f91",
"grade": "A",
"result": {
"id": "RT-99558404",
"outcome": "passed"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "ownership-upkeep-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.
Part
Generated from the catalog. Every capability, answer, gate, and entity on this page is a rendered descriptor — it cannot drift from the wire.
reconciliation
The reconciliation noun — identity, lifecycle, events, and every capability as an anchored section: 13 capabilities, 0 live, 13 sandbox, 0 declared.
refinance
The refinance noun — identity, lifecycle, events, and every capability as an anchored section: 8 capabilities, 0 live, 8 sandbox, 0 declared.