gift
The gift noun — identity, lifecycle, events, and every capability as an anchored section: 6 capabilities, 0 live, 6 sandbox, 0 declared.
gift 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 | gift |
| Pillar | Data (facets: 3 data · 2 services · 1 commerce) |
| Capabilities | 6 — 0 live · 6 sandbox · 0 declared |
| Entities | Title |
| Doors | aggregator.vin |
| SDK | Vin.gift.* from apis.vin |
| Address | /catalog/gift#{action} — the anchor IS the wire name minus gift. |
Events
The vocabulary this noun can append to the record — 6 past-tense, versioned event types, each linked to the capability that emits it:
Gift.affidavitGenerated@1— emitted byaffidavitGenerateGift.charitableDonated@1— emitted bycharitableDonateGift.donationValued@1— emitted bydonationValuationGift.familyRelationVerified@1— emitted byfamilyRelationVerifyGift.taxExemptionApplied@1— emitted bytaxExemptionApplyGift.transferred@1— emitted bytransfer
Discover & read
familyRelationVerify
gift.familyRelationVerify · GET /gifts/family-relation-verify · gate none · sandbox · answers GiftFamilyRelationVerify@1
No input — this capability takes no request body.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /5TFJA5DB0TX438264 (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 — Gift.familyRelationVerified@1.
import { gift } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await gift.familyRelationVerify()curl 'https://apis.vin/gifts/family-relation-verify'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": "GiftFamilyRelationVerify@1",
"value": {
"vin": "1HGCM82633A004352",
"verificationRef": "GFR-001O",
"relation": "parent-child",
"relationVerified": true,
"taxExemptRelation": true,
"exemptRelations": [
"spouse",
"parent-child",
"sibling",
"grandparent-grandchild"
],
"asOf": "2026-08-10"
},
"evidence": {
"vin": "1HGCM82633A004352",
"verificationRef": "GFR-001O",
"relation": "parent-child",
"relationVerified": true,
"taxExemptRelation": true,
"exemptRelations": [
"spouse",
"parent-child",
"sibling",
"grandparent-grandchild"
],
"asOf": "2026-08-10"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "legal-authority-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Apply & book
taxExemptionApply
gift.taxExemptionApply · POST /gifts/tax-exemption-apply · gate key · sandbox · answers GiftTaxExemptionApply@1
No input — this capability takes no request body.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /5TFJA5DB0TX438264 (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 — Gift.taxExemptionApplied@1.
import { gift } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await gift.taxExemptionApply()curl -X POST https://apis.vin/gifts/tax-exemption-apply \
-H 'content-type: application/json' \
-d '{}'Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.
{
"type": "OK",
"answers": "GiftTaxExemptionApply@1",
"value": {
"vin": "1HGCM82633A004352",
"exemptionRef": "GTE-001O",
"relation": "parent-child",
"taxExemptRelation": true,
"exemptionApplied": true,
"taxWaived": {
"amount": "1991.00",
"currency": "USD"
},
"instrument": "gift-tax-exemption-affidavit",
"asOf": "2026-08-10"
},
"evidence": {
"vin": "1HGCM82633A004352",
"exemptionRef": "GTE-001O",
"relation": "parent-child",
"taxExemptRelation": true,
"exemptionApplied": true,
"taxWaived": {
"amount": "1991.00",
"currency": "USD"
},
"instrument": "gift-tax-exemption-affidavit",
"asOf": "2026-08-10"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "legal-authority-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Fulfill & operate
affidavitGenerate
gift.affidavitGenerate · POST /gifts/affidavit-generate · gate key · sandbox · answers GiftAffidavitGenerate@1
No input — this capability takes no request body.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /5TFJA5DB0TX438264 (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 — Gift.affidavitGenerated@1.
import { gift } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await gift.affidavitGenerate()curl -X POST https://apis.vin/gifts/affidavit-generate \
-H 'content-type: application/json' \
-d '{}'Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.
{
"type": "OK",
"answers": "GiftAffidavitGenerate@1",
"value": {
"vin": "1HGCM82633A004352",
"affidavitRef": "GAG-001O",
"donor": "SANDBOX, JORDAN",
"recipient": "SANDBOX, PAT",
"considerationAmount": {
"amount": "0.00",
"currency": "USD"
},
"instrument": "gift-affidavit",
"affidavitGenerated": true,
"notarizationRequired": true,
"asOf": "2026-08-10"
},
"evidence": {
"vin": "1HGCM82633A004352",
"affidavitRef": "GAG-001O",
"donor": "SANDBOX, JORDAN",
"recipient": "SANDBOX, PAT",
"considerationAmount": {
"amount": "0.00",
"currency": "USD"
},
"instrument": "gift-affidavit",
"affidavitGenerated": true,
"notarizationRequired": true,
"asOf": "2026-08-10"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "legal-authority-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Lifecycle & state
transfer
gift.transfer · POST /gifts/transfer · gate key · sandbox · answers GiftTransfer@1
No input — this capability takes no request body.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /5TFJA5DB0TX438264 (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 — Gift.transferred@1.
import { gift } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await gift.transfer()curl -X POST https://apis.vin/gifts/transfer \
-H 'content-type: application/json' \
-d '{}'Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.
{
"type": "OK",
"answers": "GiftTransfer@1",
"value": {
"vin": "1HGCM82633A004352",
"giftRef": "GFT-001O",
"donor": "SANDBOX, JORDAN",
"recipient": "SANDBOX, PAT",
"considerationAmount": {
"amount": "0.00",
"currency": "USD"
},
"giftAffidavitRequired": true,
"salesTaxExemptEligible": true,
"transferEligible": true,
"asOf": "2026-08-10"
},
"evidence": {
"vin": "1HGCM82633A004352",
"giftRef": "GFT-001O",
"donor": "SANDBOX, JORDAN",
"recipient": "SANDBOX, PAT",
"considerationAmount": {
"amount": "0.00",
"currency": "USD"
},
"giftAffidavitRequired": true,
"salesTaxExemptEligible": true,
"transferEligible": true,
"asOf": "2026-08-10"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "legal-authority-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}More actions
charitableDonate
gift.charitableDonate · POST /gifts/charitable-donate · gate key · sandbox · answers GiftCharitableDonate@1
No input — this capability takes no request body.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /5TFJA5DB0TX438264 (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 — Gift.charitableDonated@1.
import { gift } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await gift.charitableDonate()curl -X POST https://apis.vin/gifts/charitable-donate \
-H 'content-type: application/json' \
-d '{}'Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.
{
"type": "OK",
"answers": "GiftCharitableDonate@1",
"value": {
"titleId": "TTL-6eade2d4",
"vin": "1HGCM82633A004352",
"state": "AZ",
"brands": [],
"noun": "gift",
"asOf": "2026-08-10",
"donation": {
"status": "no-title-on-file"
}
},
"evidence": {
"titleId": "TTL-6eade2d4",
"vin": "1HGCM82633A004352",
"state": "AZ",
"brands": [],
"noun": "gift",
"asOf": "2026-08-10",
"donation": {
"status": "no-title-on-file"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "title-annex-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}donationValuation
gift.donationValuation · GET /gifts/donation-valuation · gate none · sandbox · answers GiftDonationValuation@1
No input — this capability takes no request body.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /5TFJA5DB0TX438264 (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 — Gift.donationValued@1.
import { gift } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await gift.donationValuation()curl 'https://apis.vin/gifts/donation-valuation'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": "GiftDonationValuation@1",
"value": {
"titleId": "TTL-6eade2d4",
"vin": "1HGCM82633A004352",
"state": "AZ",
"brands": [],
"noun": "gift",
"asOf": "2026-08-10",
"valuation": {
"amountCents": 499500,
"currency": "USD",
"basis": "the-one-asking-value"
}
},
"evidence": {
"titleId": "TTL-6eade2d4",
"vin": "1HGCM82633A004352",
"state": "AZ",
"brands": [],
"noun": "gift",
"asOf": "2026-08-10",
"valuation": {
"amountCents": 499500,
"currency": "USD",
"basis": "the-one-asking-value"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "title-annex-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.
Title
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.
Gift · Class model
Gift · 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.