rebate
The rebate noun — identity, lifecycle, events, and every capability as an anchored section: 6 capabilities, 0 live, 6 sandbox, 0 declared.
rebate 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
| Noun | rebate |
| Pillar | Data (facets: 3 data · 1 services · 2 commerce) |
| Capabilities | 6 — 0 live · 6 sandbox · 0 declared |
| Entities | Deal |
| Doors | aggregator.vin |
| SDK | Vin.rebate.* from apis.vin |
| Address | /catalog/rebate#{action} — the anchor IS the wire name minus rebate. |
Events
The vocabulary this noun can append to the record — 4 past-tense, versioned event types, each linked to the capability that emits it:
Rebate.applied@1— emitted byapplyRebate.assigned@1— emitted byassignRebate.claimFiled@1— emitted byclaimRebate.failed@1— emitted byapply·claim
Discover & read
lookup
rebate.lookup · GET /rebates/lookup · gate none · sandbox · answers RebateLookup@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1FTBR3X87LKA53315 (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 { rebate } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await rebate.lookup({"vin":"1FTBR3X87LKA53315"})curl 'https://apis.vin/rebates/lookup?vin=1FTBR3X87LKA53315'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": "RebateLookup@1",
"value": {
"dealId": "rebate_89b2442d",
"workflow": "workflow-0b667543",
"dealType": "Deal-01",
"vehicleId": "vehicle_9b7a84e3",
"buyerId": "party_00c8f2f0",
"sellerId": "party_eea93b90",
"dealerOfRecordId": "dealer_a2de8fa2",
"authority": "mandate_41ee8cbb",
"structure": "Deal-01",
"state": "Deal-01",
"correlationId": "W0-EVT-01",
"dependsOn": []
},
"evidence": {
"dealId": "rebate_89b2442d",
"workflow": "workflow-0b667543",
"dealType": "Deal-01",
"vehicleId": "vehicle_9b7a84e3",
"buyerId": "party_00c8f2f0",
"sellerId": "party_eea93b90",
"dealerOfRecordId": "dealer_a2de8fa2",
"authority": "mandate_41ee8cbb",
"structure": "Deal-01",
"state": "Deal-01",
"correlationId": "W0-EVT-01",
"dependsOn": []
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "rebate-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Apply & book
apply
rebate.apply · POST /rebates/apply · gate offer · sandbox · answers RebateApply@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) · /1FTBR3X87LKA53315 (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 — Rebate.applied@1 · Rebate.failed@1.
import { rebate } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await rebate.apply({"vin":"1FTBR3X87LKA53315"})curl -X POST https://apis.vin/rebates/apply \
-H 'content-type: application/json' \
-d '{"vin":"1FTBR3X87LKA53315"}'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": "RebateApply@1",
"value": {
"rebateRef": "RBT-05S0UAA",
"vin": "1FTBR3X87LKA53315",
"state": "applied",
"amount": {
"amount": "1480.00",
"currency": "USD"
},
"appliedTo": "cap-cost",
"asOf": "2026-08-10"
},
"evidence": {
"rebateRef": "RBT-05S0UAA",
"vin": "1FTBR3X87LKA53315",
"state": "applied",
"amount": {
"amount": "1480.00",
"currency": "USD"
},
"appliedTo": "cap-cost",
"asOf": "2026-08-10"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "market-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}assign
rebate.assign · POST /rebates/assign · gate offer · sandbox · answers RebateAssign@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) · /1FTBR3X87LKA53315 (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 — Rebate.assigned@1.
import { rebate } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await rebate.assign({"vin":"1FTBR3X87LKA53315"})curl -X POST https://apis.vin/rebates/assign \
-H 'content-type: application/json' \
-d '{"vin":"1FTBR3X87LKA53315"}'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": "RebateAssign@1",
"value": {
"dealId": "rebate_e26836ca",
"workflow": "workflow-f428d7f0",
"dealType": "Deal-01",
"vehicleId": "vehicle_52f5715a",
"buyerId": "party_9221aeed",
"sellerId": "party_a70cdd23",
"dealerOfRecordId": "dealer_d29a2119",
"authority": "mandate_f3530e9e",
"structure": "Deal-01",
"state": "Deal-01",
"correlationId": "W0-EVT-01",
"dependsOn": []
},
"evidence": {
"dealId": "rebate_e26836ca",
"workflow": "workflow-f428d7f0",
"dealType": "Deal-01",
"vehicleId": "vehicle_52f5715a",
"buyerId": "party_9221aeed",
"sellerId": "party_a70cdd23",
"dealerOfRecordId": "dealer_d29a2119",
"authority": "mandate_f3530e9e",
"structure": "Deal-01",
"state": "Deal-01",
"correlationId": "W0-EVT-01",
"dependsOn": []
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "rebate-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Authorize & resolve
claim
rebate.claim · POST /rebates/claim · gate offer · sandbox · answers RebateClaim@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) · /1FTBR3X87LKA53315 (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 — Rebate.claimFiled@1 · Rebate.failed@1.
import { rebate } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await rebate.claim({"vin":"1FTBR3X87LKA53315"})curl -X POST https://apis.vin/rebates/claim \
-H 'content-type: application/json' \
-d '{"vin":"1FTBR3X87LKA53315"}'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": "RebateClaim@1",
"value": {
"dealId": "rebate_5d6b457e",
"workflow": "workflow-c49c2a64",
"dealType": "Deal-01",
"vehicleId": "vehicle_c0f33dde",
"buyerId": "party_3f12ca21",
"sellerId": "party_0562189f",
"dealerOfRecordId": "dealer_9d6f532d",
"authority": "mandate_23c47e0a",
"structure": "Deal-01",
"state": "Deal-01",
"correlationId": "W0-EVT-01",
"dependsOn": []
},
"evidence": {
"dealId": "rebate_5d6b457e",
"workflow": "workflow-c49c2a64",
"dealType": "Deal-01",
"vehicleId": "vehicle_c0f33dde",
"buyerId": "party_3f12ca21",
"sellerId": "party_0562189f",
"dealerOfRecordId": "dealer_9d6f532d",
"authority": "mandate_23c47e0a",
"structure": "Deal-01",
"state": "Deal-01",
"correlationId": "W0-EVT-01",
"dependsOn": []
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "rebate-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}More actions
stack
rebate.stack · GET /rebates/stack · gate key · sandbox · answers RebateStack@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1FTBR3X87LKA53315 (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 { rebate } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await rebate.stack({"vin":"1FTBR3X87LKA53315"})curl 'https://apis.vin/rebates/stack?vin=1FTBR3X87LKA53315'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": "RebateStack@1",
"value": {
"dealId": "rebate_74ffb9ba",
"workflow": "workflow-caca6e80",
"dealType": "Deal-01",
"vehicleId": "vehicle_cd333aca",
"buyerId": "party_f4149d1d",
"sellerId": "party_5dafb313",
"dealerOfRecordId": "dealer_56921e69",
"authority": "mandate_20f3558e",
"structure": "Deal-01",
"state": "Deal-01",
"correlationId": "W0-EVT-01",
"dependsOn": []
},
"evidence": {
"dealId": "rebate_74ffb9ba",
"workflow": "workflow-caca6e80",
"dealType": "Deal-01",
"vehicleId": "vehicle_cd333aca",
"buyerId": "party_f4149d1d",
"sellerId": "party_5dafb313",
"dealerOfRecordId": "dealer_56921e69",
"authority": "mandate_20f3558e",
"structure": "Deal-01",
"state": "Deal-01",
"correlationId": "W0-EVT-01",
"dependsOn": []
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "rebate-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}taxTreatment
rebate.taxTreatment · GET /rebates/tax-treatment · gate key · sandbox · answers RebateTaxTreatment@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1FTBR3X87LKA53315 (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 { rebate } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await rebate.taxTreatment({"vin":"1FTBR3X87LKA53315"})curl 'https://apis.vin/rebates/tax-treatment?vin=1FTBR3X87LKA53315'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": "RebateTaxTreatment@1",
"value": {
"dealId": "rebate_e1588342",
"workflow": "workflow-c034e048",
"dealType": "Deal-01",
"vehicleId": "vehicle_4907c3a2",
"buyerId": "party_647b0095",
"sellerId": "party_0ad3082b",
"dealerOfRecordId": "dealer_a703acf1",
"authority": "mandate_bc022466",
"structure": "Deal-01",
"state": "Deal-01",
"correlationId": "W0-EVT-01",
"dependsOn": []
},
"evidence": {
"dealId": "rebate_e1588342",
"workflow": "workflow-c034e048",
"dealType": "Deal-01",
"vehicleId": "vehicle_4907c3a2",
"buyerId": "party_647b0095",
"sellerId": "party_0ad3082b",
"dealerOfRecordId": "dealer_a703acf1",
"authority": "mandate_bc022466",
"structure": "Deal-01",
"state": "Deal-01",
"correlationId": "W0-EVT-01",
"dependsOn": []
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "rebate-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.
Deal
Modeled
The noun drawn out — its record shape, its lifecycle, and how it is exercised end to end. 5 diagrams, rendered from the estate model.
Rebate · Class model
Rebate · Class model
Rebate · State machine
Rebate · State machine
Rebate · Sequence
Generated from the catalog. Every capability, answer, gate, and entity on this page is a rendered descriptor — it cannot drift from the wire.