dealJacket
The dealJacket noun — identity, lifecycle, events, and every capability as an anchored section: 11 capabilities, 0 live, 11 sandbox, 0 declared.
dealJacket is one of the estate's 317 automotive nouns — a job a car needs done. It carries 11 capabilities: 0 live, 11 sandbox, 0 declared · doors aggregator.vin.
Identity
| Noun | dealJacket |
| Pillar | Data (facets: 5 data · 4 services · 2 commerce) |
| Capabilities | 11 — 0 live · 11 sandbox · 0 declared |
| Entities | DealJacket |
| Doors | aggregator.vin |
| SDK | Vin.dealJacket.* from apis.vin |
| Address | /catalog/dealJacket#{action} — the anchor IS the wire name minus dealJacket. |
Events
The vocabulary this noun can append to the record — 14 past-tense, versioned event types, each linked to the capability that emits it:
DealJacket.archiveRequested@1— emitted byarchiveDealJacket.archived@1— emitted byarchiveDealJacket.assembleRequested@1— emitted byassembleDealJacket.assembled@1— emitted byassembleDealJacket.completeRequested@1— emitted bycompleteDealJacket.completed@1— emitted bycompleteDealJacket.fundFailed@1— emitted byfundDealJacket.fundRequested@1— emitted byfundDealJacket.funded@1— emitted byfundDealJacket.stipulateRequested@1— emitted bystipulateDealJacket.stipulated@1— emitted bystipulateDealJacket.submitFailed@1— emitted bysubmitDealJacket.submitRequested@1— emitted bysubmitDealJacket.submitted@1— emitted bysubmit
Discover & read
read
dealJacket.read · GET /deal-jackets/read · gate none · sandbox · answers DealJacketRead@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1G1FF1R75M0137917 (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 { dealJacket } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await dealJacket.read({"vin":"1G1FF1R75M0137917"})curl 'https://apis.vin/deal-jackets/read?vin=1G1FF1R75M0137917'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": "DealJacketRead@1",
"value": {
"vin": "1G1FF1R75M0137917",
"noun": "dealJacket",
"asOf": "2026-08-10",
"id": "DJK-9d1c64a4",
"dealId": "DL-f789bfe2",
"documents": [
"DOC-11520f1b"
],
"complete": false,
"position": "QUOTED"
},
"evidence": {
"vin": "1G1FF1R75M0137917",
"noun": "dealJacket",
"asOf": "2026-08-10",
"id": "DJK-9d1c64a4",
"dealId": "DL-f789bfe2",
"documents": [
"DOC-11520f1b"
],
"complete": false,
"position": "QUOTED"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "deal-file-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}status
dealJacket.status · GET /deal-jackets/status · gate none · sandbox · answers DealJacketStatus@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1G1FF1R75M0137917 (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 { dealJacket } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await dealJacket.status({"vin":"1G1FF1R75M0137917"})curl 'https://apis.vin/deal-jackets/status?vin=1G1FF1R75M0137917'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": "DealJacketStatus@1",
"value": {
"vin": "1G1FF1R75M0137917",
"noun": "dealJacket",
"asOf": "2026-08-10",
"id": "DJK-9d1c64a4",
"dealId": "DL-f789bfe2",
"documents": [
"DOC-11520f1b"
],
"complete": false,
"position": "QUOTED",
"openItems": [
"credit-approved",
"documents-signed",
"contract-signed",
"funds-settled"
]
},
"evidence": {
"vin": "1G1FF1R75M0137917",
"noun": "dealJacket",
"asOf": "2026-08-10",
"id": "DJK-9d1c64a4",
"dealId": "DL-f789bfe2",
"documents": [
"DOC-11520f1b"
],
"complete": false,
"position": "QUOTED",
"openItems": [
"credit-approved",
"documents-signed",
"contract-signed",
"funds-settled"
]
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "deal-file-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}audit
dealJacket.audit · GET /deal-jackets/audit · gate none · sandbox · answers DealJacketAudit@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1G1FF1R75M0137917 (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 { dealJacket } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await dealJacket.audit({"vin":"1G1FF1R75M0137917"})curl 'https://apis.vin/deal-jackets/audit?vin=1G1FF1R75M0137917'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": "DealJacketAudit@1",
"value": {
"vin": "1G1FF1R75M0137917",
"noun": "dealJacket",
"asOf": "2026-08-10",
"id": "DJK-9d1c64a4",
"dealId": "DL-f789bfe2",
"documents": [
"DOC-11520f1b"
],
"complete": false,
"auditLog": {
"entries": [
{
"event": "jacket-opened",
"jacketId": "DJK-9d1c64a4",
"dealId": "DL-f789bfe2"
}
],
"count": 1
}
},
"evidence": {
"vin": "1G1FF1R75M0137917",
"noun": "dealJacket",
"asOf": "2026-08-10",
"id": "DJK-9d1c64a4",
"dealId": "DL-f789bfe2",
"documents": [
"DOC-11520f1b"
],
"complete": false,
"auditLog": {
"entries": [
{
"event": "jacket-opened",
"jacketId": "DJK-9d1c64a4",
"dealId": "DL-f789bfe2"
}
],
"count": 1
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "deal-file-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}checklist
dealJacket.checklist · GET /deal-jackets/checklist · gate none · sandbox · answers DealJacketChecklist@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1G1FF1R75M0137917 (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 { dealJacket } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await dealJacket.checklist({"vin":"1G1FF1R75M0137917"})curl 'https://apis.vin/deal-jackets/checklist?vin=1G1FF1R75M0137917'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": "DealJacketChecklist@1",
"value": {
"vin": "1G1FF1R75M0137917",
"noun": "dealJacket",
"asOf": "2026-08-10",
"id": "DJK-9d1c64a4",
"dealId": "DL-f789bfe2",
"documents": [
"DOC-11520f1b"
],
"complete": false,
"checklist": {
"items": [
{
"item": "credit-approved",
"done": false,
"position": "Prequal"
},
{
"item": "documents-signed",
"done": false,
"position": "Draft"
},
{
"item": "contract-signed",
"done": false,
"position": "Generated"
},
{
"item": "funds-settled",
"done": false,
"position": "QUOTED"
}
],
"openItems": [
"credit-approved",
"documents-signed",
"contract-signed",
"funds-settled"
]
}
},
"evidence": {
"vin": "1G1FF1R75M0137917",
"noun": "dealJacket",
"asOf": "2026-08-10",
"id": "DJK-9d1c64a4",
"dealId": "DL-f789bfe2",
"documents": [
"DOC-11520f1b"
],
"complete": false,
"checklist": {
"items": [
{
"item": "credit-approved",
"done": false,
"position": "Prequal"
},
{
"item": "documents-signed",
"done": false,
"position": "Draft"
},
{
"item": "contract-signed",
"done": false,
"position": "Generated"
},
{
"item": "funds-settled",
"done": false,
"position": "QUOTED"
}
],
"openItems": [
"credit-approved",
"documents-signed",
"contract-signed",
"funds-settled"
]
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "deal-file-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Apply & book
submit
dealJacket.submit · POST /deal-jackets/submit · gate offer · sandbox · answers DealJacketSubmit@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) · /1G1FF1R75M0137917 (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 — DealJacket.submitFailed@1 · DealJacket.submitRequested@1 · DealJacket.submitted@1.
import { dealJacket } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await dealJacket.submit({"vin":"1G1FF1R75M0137917"})curl -X POST https://apis.vin/deal-jackets/submit \
-H 'content-type: application/json' \
-d '{"vin":"1G1FF1R75M0137917"}'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": "DealJacketSubmit@1",
"value": {
"vin": "1G1FF1R75M0137917",
"noun": "dealJacket",
"asOf": "2026-08-10",
"id": "DJK-9d1c64a4",
"dealId": "DL-f789bfe2",
"documents": [
"DOC-11520f1b"
],
"complete": false,
"submission": {
"status": "not-yet-submitted",
"creditPosition": "Prequal"
}
},
"evidence": {
"vin": "1G1FF1R75M0137917",
"noun": "dealJacket",
"asOf": "2026-08-10",
"id": "DJK-9d1c64a4",
"dealId": "DL-f789bfe2",
"documents": [
"DOC-11520f1b"
],
"complete": false,
"submission": {
"status": "not-yet-submitted",
"creditPosition": "Prequal"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "deal-file-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Pay & settle
fund
dealJacket.fund · POST /deal-jackets/fund · gate offer · sandbox · answers DealJacketFund@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) · /1G1FF1R75M0137917 (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 — DealJacket.fundFailed@1 · DealJacket.fundRequested@1 · DealJacket.funded@1.
import { dealJacket } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await dealJacket.fund({"vin":"1G1FF1R75M0137917"})curl -X POST https://apis.vin/deal-jackets/fund \
-H 'content-type: application/json' \
-d '{"vin":"1G1FF1R75M0137917"}'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": "DealJacketFund@1",
"value": {
"vin": "1G1FF1R75M0137917",
"noun": "dealJacket",
"asOf": "2026-08-10",
"id": "DJK-9d1c64a4",
"dealId": "DL-f789bfe2",
"documents": [
"DOC-11520f1b"
],
"complete": false,
"funding": {
"status": "not-yet-funded",
"position": "QUOTED"
}
},
"evidence": {
"vin": "1G1FF1R75M0137917",
"noun": "dealJacket",
"asOf": "2026-08-10",
"id": "DJK-9d1c64a4",
"dealId": "DL-f789bfe2",
"documents": [
"DOC-11520f1b"
],
"complete": false,
"funding": {
"status": "not-yet-funded",
"position": "QUOTED"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "deal-file-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Fulfill & operate
complete
dealJacket.complete · POST /deal-jackets/complete · gate offer · sandbox · answers DealJacketComplete@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) · /1G1FF1R75M0137917 (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 — DealJacket.completeRequested@1 · DealJacket.completed@1.
import { dealJacket } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await dealJacket.complete({"vin":"1G1FF1R75M0137917"})curl -X POST https://apis.vin/deal-jackets/complete \
-H 'content-type: application/json' \
-d '{"vin":"1G1FF1R75M0137917"}'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": "DealJacketComplete@1",
"value": {
"vin": "1G1FF1R75M0137917",
"noun": "dealJacket",
"asOf": "2026-08-10",
"id": "DJK-9d1c64a4",
"dealId": "DL-f789bfe2",
"documents": [
"DOC-11520f1b"
],
"complete": false,
"completion": {
"status": "incomplete",
"openItems": [
"credit-approved",
"documents-signed",
"contract-signed",
"funds-settled"
]
}
},
"evidence": {
"vin": "1G1FF1R75M0137917",
"noun": "dealJacket",
"asOf": "2026-08-10",
"id": "DJK-9d1c64a4",
"dealId": "DL-f789bfe2",
"documents": [
"DOC-11520f1b"
],
"complete": false,
"completion": {
"status": "incomplete",
"openItems": [
"credit-approved",
"documents-signed",
"contract-signed",
"funds-settled"
]
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "deal-file-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}assemble
dealJacket.assemble · POST /deal-jackets/assemble · gate offer · sandbox · answers DealJacketAssemble@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) · /1G1FF1R75M0137917 (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 — DealJacket.assembleRequested@1 · DealJacket.assembled@1.
import { dealJacket } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await dealJacket.assemble({"vin":"1G1FF1R75M0137917"})curl -X POST https://apis.vin/deal-jackets/assemble \
-H 'content-type: application/json' \
-d '{"vin":"1G1FF1R75M0137917"}'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": "DealJacketAssemble@1",
"value": {
"dealJacket": {
"dealJacketId": "DJ-1",
"provenance": {
"environment": "sandbox",
"simulated": true,
"provider": "credit-rail-sandbox"
}
}
},
"evidence": {
"dealJacket": {
"dealJacketId": "DJ-1",
"provenance": {
"environment": "sandbox",
"simulated": true,
"provider": "credit-rail-sandbox"
}
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "credit-rail-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Lifecycle & state
archive
dealJacket.archive · POST /deal-jackets/archive · gate offer · sandbox · answers DealJacketArchive@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) · /1G1FF1R75M0137917 (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 — DealJacket.archiveRequested@1 · DealJacket.archived@1.
import { dealJacket } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await dealJacket.archive({"vin":"1G1FF1R75M0137917"})curl -X POST https://apis.vin/deal-jackets/archive \
-H 'content-type: application/json' \
-d '{"vin":"1G1FF1R75M0137917"}'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": "DealJacketArchive@1",
"value": {
"vin": "1G1FF1R75M0137917",
"noun": "dealJacket",
"asOf": "2026-08-10",
"id": "DJK-9d1c64a4",
"dealId": "DL-f789bfe2",
"documents": [
"DOC-11520f1b"
],
"complete": false,
"archive": {
"status": "still-active",
"position": "QUOTED"
}
},
"evidence": {
"vin": "1G1FF1R75M0137917",
"noun": "dealJacket",
"asOf": "2026-08-10",
"id": "DJK-9d1c64a4",
"dealId": "DL-f789bfe2",
"documents": [
"DOC-11520f1b"
],
"complete": false,
"archive": {
"status": "still-active",
"position": "QUOTED"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "deal-file-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}More actions
completeness
dealJacket.completeness · GET /deal-jackets/completeness · gate none · sandbox · answers DealJacketCompleteness@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1G1FF1R75M0137917 (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 { dealJacket } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await dealJacket.completeness({"vin":"1G1FF1R75M0137917"})curl 'https://apis.vin/deal-jackets/completeness?vin=1G1FF1R75M0137917'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": "DealJacketCompleteness@1",
"value": {
"vin": "1G1FF1R75M0137917",
"noun": "dealJacket",
"asOf": "2026-08-10",
"id": "DJK-9d1c64a4",
"dealId": "DL-f789bfe2",
"documents": [
"DOC-11520f1b"
],
"complete": false,
"completeness": {
"done": 0,
"total": 4,
"openItems": [
"credit-approved",
"documents-signed",
"contract-signed",
"funds-settled"
]
}
},
"evidence": {
"vin": "1G1FF1R75M0137917",
"noun": "dealJacket",
"asOf": "2026-08-10",
"id": "DJK-9d1c64a4",
"dealId": "DL-f789bfe2",
"documents": [
"DOC-11520f1b"
],
"complete": false,
"completeness": {
"done": 0,
"total": 4,
"openItems": [
"credit-approved",
"documents-signed",
"contract-signed",
"funds-settled"
]
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "deal-file-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}stipulate
dealJacket.stipulate · POST /deal-jackets/stipulate · gate offer · sandbox · answers DealJacketStipulate@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) · /1G1FF1R75M0137917 (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 — DealJacket.stipulateRequested@1 · DealJacket.stipulated@1.
import { dealJacket } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await dealJacket.stipulate({"vin":"1G1FF1R75M0137917"})curl -X POST https://apis.vin/deal-jackets/stipulate \
-H 'content-type: application/json' \
-d '{"vin":"1G1FF1R75M0137917"}'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": "DealJacketStipulate@1",
"value": {
"vin": "1G1FF1R75M0137917",
"noun": "dealJacket",
"asOf": "2026-08-10",
"id": "DJK-9d1c64a4",
"dealId": "DL-f789bfe2",
"documents": [
"DOC-11520f1b"
],
"complete": false,
"stipulation": {
"status": "no-stip-on-file"
}
},
"evidence": {
"vin": "1G1FF1R75M0137917",
"noun": "dealJacket",
"asOf": "2026-08-10",
"id": "DJK-9d1c64a4",
"dealId": "DL-f789bfe2",
"documents": [
"DOC-11520f1b"
],
"complete": false,
"stipulation": {
"status": "no-stip-on-file"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "deal-file-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.
DealJacket
Schema
| Property | Type |
|---|---|
id | id |
dealId | ref→Deal |
documents | ref→Document[] |
complete | bool |
Relationships
| From | To | Cardinality | As |
|---|---|---|---|
deal | dealJacket | 1:1 | jacket |
dealJacket | document | 1:0..* | holds |
Modeled
The noun drawn out — its record shape, its lifecycle, and how it is exercised end to end. 2 diagrams, rendered from the estate model.
DealJacket · Class model
DealJacket · State machine
Generated from the catalog. Every capability, answer, gate, and entity on this page is a rendered descriptor — it cannot drift from the wire.
dealerOfRecord
The dealerOfRecord noun — identity, lifecycle, events, and every capability as an anchored section: 1 capability, 0 live, 1 sandbox, 0 declared.
depreciation
The depreciation noun — identity, lifecycle, events, and every capability as an anchored section: 6 capabilities, 0 live, 6 sandbox, 0 declared.