advisor
The advisor noun — identity, lifecycle, events, and every capability as an anchored section: 10 capabilities, 0 live, 10 sandbox, 0 declared.
advisor is one of the estate's 317 automotive nouns — a job a car needs done. It carries 10 capabilities: 0 live, 10 sandbox, 0 declared · doors aggregator.vin.
Identity
| Noun | advisor |
| Pillar | Services (facets: 3 data · 5 services · 2 commerce) |
| Capabilities | 10 — 0 live · 10 sandbox · 0 declared |
| Entities | Party |
| Doors | aggregator.vin |
| SDK | Vin.advisor.* from apis.vin |
| Address | /catalog/advisor#{action} — the anchor IS the wire name minus advisor. |
Events
The vocabulary this noun can append to the record — 15 past-tense, versioned event types, each linked to the capability that emits it:
Advisor.assignRequested@1— emitted byassignAdvisor.assigned@1— emitted byassignAdvisor.commissionRequested@1— emitted bycommissionAdvisor.commissioned@1— emitted bycommissionAdvisor.followUpRequested@1— emitted byfollowUpAdvisor.followedUp@1— emitted byfollowUpAdvisor.greetRequested@1— emitted bygreetAdvisor.greeted@1— emitted bygreetAdvisor.paid@1— emitted bypayAdvisor.payFailed@1— emitted bypayAdvisor.payRequested@1— emitted bypayAdvisor.upsellRequested@1— emitted byupsellAdvisor.upsold@1— emitted byupsellAdvisor.writeUpRequested@1— emitted bywriteUpAdvisor.writtenUp@1— emitted bywriteUp
Discover & read
availability
advisor.availability · GET /advisors/availability · gate none · sandbox · answers AdvisorAvailability@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1FM5K8GC4MGA16032 (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 { advisor } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await advisor.availability({"vin":"1FM5K8GC4MGA16032"})curl 'https://apis.vin/advisors/availability?vin=1FM5K8GC4MGA16032'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": "AdvisorAvailability@1",
"value": {
"vin": "1FM5K8GC4MGA16032",
"noun": "advisor",
"asOf": "2026-08-10",
"partyId": "ID-24c9945b",
"type": "person",
"name": "The Estate Service Advisor",
"identifiers": [
{
"kind": "desk",
"value": "service-drive"
}
],
"roles": [
{
"role": "advisor"
}
],
"status": "active",
"availability": {
"nextSlot": "2026-08-11",
"slotsPerDay": 8,
"openJobs": 5,
"openSlots": 3
}
},
"evidence": {
"vin": "1FM5K8GC4MGA16032",
"noun": "advisor",
"asOf": "2026-08-10",
"partyId": "ID-24c9945b",
"type": "person",
"name": "The Estate Service Advisor",
"identifiers": [
{
"kind": "desk",
"value": "service-drive"
}
],
"roles": [
{
"role": "advisor"
}
],
"status": "active",
"availability": {
"nextSlot": "2026-08-11",
"slotsPerDay": 8,
"openJobs": 5,
"openSlots": 3
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "desk-people-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Apply & book
assign
advisor.assign · POST /advisors/assign · gate offer · sandbox · answers AdvisorAssign@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) · /1FM5K8GC4MGA16032 (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 — Advisor.assignRequested@1 · Advisor.assigned@1.
import { advisor } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await advisor.assign({"vin":"1FM5K8GC4MGA16032"})curl -X POST https://apis.vin/advisors/assign \
-H 'content-type: application/json' \
-d '{"vin":"1FM5K8GC4MGA16032"}'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": "AdvisorAssign@1",
"value": {
"vin": "1FM5K8GC4MGA16032",
"noun": "advisor",
"asOf": "2026-08-10",
"partyId": "ID-24c9945b",
"type": "person",
"name": "The Estate Service Advisor",
"identifiers": [
{
"kind": "desk",
"value": "service-drive"
}
],
"roles": [
{
"role": "advisor"
}
],
"status": "active",
"assignment": {
"status": "assigned",
"advisor": {
"partyId": "ID-24c9945b",
"name": "The Estate Service Advisor"
},
"roId": "RO-487b18f2",
"technicianId": "TECH-eeb8ceaa"
}
},
"evidence": {
"vin": "1FM5K8GC4MGA16032",
"noun": "advisor",
"asOf": "2026-08-10",
"partyId": "ID-24c9945b",
"type": "person",
"name": "The Estate Service Advisor",
"identifiers": [
{
"kind": "desk",
"value": "service-drive"
}
],
"roles": [
{
"role": "advisor"
}
],
"status": "active",
"assignment": {
"status": "assigned",
"advisor": {
"partyId": "ID-24c9945b",
"name": "The Estate Service Advisor"
},
"roId": "RO-487b18f2",
"technicianId": "TECH-eeb8ceaa"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "desk-people-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}commission
advisor.commission · POST /advisors/commission · gate offer · sandbox · answers AdvisorCommission@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) · /1FM5K8GC4MGA16032 (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 — Advisor.commissionRequested@1 · Advisor.commissioned@1.
import { advisor } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await advisor.commission({"vin":"1FM5K8GC4MGA16032"})curl -X POST https://apis.vin/advisors/commission \
-H 'content-type: application/json' \
-d '{"vin":"1FM5K8GC4MGA16032"}'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": "AdvisorCommission@1",
"value": {
"vin": "1FM5K8GC4MGA16032",
"noun": "advisor",
"asOf": "2026-08-10",
"partyId": "ID-24c9945b",
"type": "person",
"name": "The Estate Service Advisor",
"identifiers": [
{
"kind": "desk",
"value": "service-drive"
}
],
"roles": [
{
"role": "advisor"
}
],
"status": "active",
"commission": {
"rateBp": 500,
"baseCents": 59000,
"amountCents": 2950,
"currency": "USD",
"roId": "RO-487b18f2"
}
},
"evidence": {
"vin": "1FM5K8GC4MGA16032",
"noun": "advisor",
"asOf": "2026-08-10",
"partyId": "ID-24c9945b",
"type": "person",
"name": "The Estate Service Advisor",
"identifiers": [
{
"kind": "desk",
"value": "service-drive"
}
],
"roles": [
{
"role": "advisor"
}
],
"status": "active",
"commission": {
"rateBp": 500,
"baseCents": 59000,
"amountCents": 2950,
"currency": "USD",
"roId": "RO-487b18f2"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "desk-people-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Pay & settle
pay
advisor.pay · POST /advisors/pay · gate offer · sandbox · answers AdvisorPay@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) · /1FM5K8GC4MGA16032 (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 — Advisor.paid@1 · Advisor.payFailed@1 · Advisor.payRequested@1.
import { advisor } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await advisor.pay({"vin":"1FM5K8GC4MGA16032"})curl -X POST https://apis.vin/advisors/pay \
-H 'content-type: application/json' \
-d '{"vin":"1FM5K8GC4MGA16032"}'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": "AdvisorPay@1",
"value": {
"vin": "1FM5K8GC4MGA16032",
"noun": "advisor",
"asOf": "2026-08-10",
"partyId": "ID-24c9945b",
"type": "person",
"name": "The Estate Service Advisor",
"identifiers": [
{
"kind": "desk",
"value": "service-drive"
}
],
"roles": [
{
"role": "advisor"
}
],
"status": "active",
"payment": {
"id": "APY-bad76a24",
"amountCents": 2950,
"currency": "USD",
"status": "settled"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "1FM5K8GC4MGA16032",
"noun": "advisor",
"asOf": "2026-08-10",
"partyId": "ID-24c9945b",
"type": "person",
"name": "The Estate Service Advisor",
"identifiers": [
{
"kind": "desk",
"value": "service-drive"
}
],
"roles": [
{
"role": "advisor"
}
],
"status": "active",
"payment": {
"id": "APY-bad76a24",
"amountCents": 2950,
"currency": "USD",
"status": "settled"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "desk-people-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}upsell
advisor.upsell · POST /advisors/upsell · gate offer · sandbox · answers AdvisorUpsell@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) · /1FM5K8GC4MGA16032 (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 — Advisor.upsellRequested@1 · Advisor.upsold@1.
import { advisor } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await advisor.upsell({"vin":"1FM5K8GC4MGA16032"})curl -X POST https://apis.vin/advisors/upsell \
-H 'content-type: application/json' \
-d '{"vin":"1FM5K8GC4MGA16032"}'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": "AdvisorUpsell@1",
"value": {
"vin": "1FM5K8GC4MGA16032",
"noun": "advisor",
"asOf": "2026-08-10",
"partyId": "ID-24c9945b",
"type": "person",
"name": "The Estate Service Advisor",
"identifiers": [
{
"kind": "desk",
"value": "service-drive"
}
],
"roles": [
{
"role": "advisor"
}
],
"status": "active",
"recommendation": {
"status": "recommended",
"lines": [
{
"system": "fuelSystem",
"verdict": "attention"
},
{
"system": "exhaust",
"verdict": "attention"
}
],
"roId": "RO-487b18f2"
}
},
"evidence": {
"vin": "1FM5K8GC4MGA16032",
"noun": "advisor",
"asOf": "2026-08-10",
"partyId": "ID-24c9945b",
"type": "person",
"name": "The Estate Service Advisor",
"identifiers": [
{
"kind": "desk",
"value": "service-drive"
}
],
"roles": [
{
"role": "advisor"
}
],
"status": "active",
"recommendation": {
"status": "recommended",
"lines": [
{
"system": "fuelSystem",
"verdict": "attention"
},
{
"system": "exhaust",
"verdict": "attention"
}
],
"roId": "RO-487b18f2"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "desk-people-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}More actions
followUp
advisor.followUp · POST /advisors/follow-up · gate offer · sandbox · answers AdvisorFollowUp@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) · /1FM5K8GC4MGA16032 (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 — Advisor.followUpRequested@1 · Advisor.followedUp@1.
import { advisor } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await advisor.followUp({"vin":"1FM5K8GC4MGA16032"})curl -X POST https://apis.vin/advisors/follow-up \
-H 'content-type: application/json' \
-d '{"vin":"1FM5K8GC4MGA16032"}'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": "AdvisorFollowUp@1",
"value": {
"vin": "1FM5K8GC4MGA16032",
"noun": "advisor",
"asOf": "2026-08-10",
"partyId": "ID-24c9945b",
"type": "person",
"name": "The Estate Service Advisor",
"identifiers": [
{
"kind": "desk",
"value": "service-drive"
}
],
"roles": [
{
"role": "advisor"
}
],
"status": "active",
"followUp": {
"status": "sent",
"threadId": "TH-31e306be",
"message": {
"id": "MR-1bcfc3de",
"kind": "maintenance-reminder"
},
"customer": {
"identityId": "ID-11f17424",
"name": "Ava Good"
}
}
},
"evidence": {
"vin": "1FM5K8GC4MGA16032",
"noun": "advisor",
"asOf": "2026-08-10",
"partyId": "ID-24c9945b",
"type": "person",
"name": "The Estate Service Advisor",
"identifiers": [
{
"kind": "desk",
"value": "service-drive"
}
],
"roles": [
{
"role": "advisor"
}
],
"status": "active",
"followUp": {
"status": "sent",
"threadId": "TH-31e306be",
"message": {
"id": "MR-1bcfc3de",
"kind": "maintenance-reminder"
},
"customer": {
"identityId": "ID-11f17424",
"name": "Ava Good"
}
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "desk-people-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}greet
advisor.greet · POST /advisors/greet · gate offer · sandbox · answers AdvisorGreet@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) · /1FM5K8GC4MGA16032 (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 — Advisor.greetRequested@1 · Advisor.greeted@1.
import { advisor } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await advisor.greet({"vin":"1FM5K8GC4MGA16032"})curl -X POST https://apis.vin/advisors/greet \
-H 'content-type: application/json' \
-d '{"vin":"1FM5K8GC4MGA16032"}'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": "AdvisorGreet@1",
"value": {
"vin": "1FM5K8GC4MGA16032",
"noun": "advisor",
"asOf": "2026-08-10",
"partyId": "ID-24c9945b",
"type": "person",
"name": "The Estate Service Advisor",
"identifiers": [
{
"kind": "desk",
"value": "service-drive"
}
],
"roles": [
{
"role": "advisor"
}
],
"status": "active",
"greeting": {
"status": "walk-in-greeted",
"customer": {
"identityId": "ID-11f17424",
"name": "Ava Good"
},
"nextSlot": "2026-08-11"
}
},
"evidence": {
"vin": "1FM5K8GC4MGA16032",
"noun": "advisor",
"asOf": "2026-08-10",
"partyId": "ID-24c9945b",
"type": "person",
"name": "The Estate Service Advisor",
"identifiers": [
{
"kind": "desk",
"value": "service-drive"
}
],
"roles": [
{
"role": "advisor"
}
],
"status": "active",
"greeting": {
"status": "walk-in-greeted",
"customer": {
"identityId": "ID-11f17424",
"name": "Ava Good"
},
"nextSlot": "2026-08-11"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "desk-people-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}performance
advisor.performance · GET /advisors/performance · gate none · sandbox · answers AdvisorPerformance@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1FM5K8GC4MGA16032 (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 { advisor } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await advisor.performance({"vin":"1FM5K8GC4MGA16032"})curl 'https://apis.vin/advisors/performance?vin=1FM5K8GC4MGA16032'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": "AdvisorPerformance@1",
"value": {
"vin": "1FM5K8GC4MGA16032",
"noun": "advisor",
"asOf": "2026-08-10",
"partyId": "ID-24c9945b",
"type": "person",
"name": "The Estate Service Advisor",
"identifiers": [
{
"kind": "desk",
"value": "service-drive"
}
],
"roles": [
{
"role": "advisor"
}
],
"status": "active",
"performance": {
"jobsOpen": 5,
"jobsClosed": 4,
"byPosition": {
"Opened": 1,
"Estimated": 1,
"Approved": 1,
"Assigned": 1,
"Dispatched": 1
}
}
},
"evidence": {
"vin": "1FM5K8GC4MGA16032",
"noun": "advisor",
"asOf": "2026-08-10",
"partyId": "ID-24c9945b",
"type": "person",
"name": "The Estate Service Advisor",
"identifiers": [
{
"kind": "desk",
"value": "service-drive"
}
],
"roles": [
{
"role": "advisor"
}
],
"status": "active",
"performance": {
"jobsOpen": 5,
"jobsClosed": 4,
"byPosition": {
"Opened": 1,
"Estimated": 1,
"Approved": 1,
"Assigned": 1,
"Dispatched": 1
}
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "desk-people-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}workload
advisor.workload · GET /advisors/workload · gate none · sandbox · answers AdvisorWorkload@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1FM5K8GC4MGA16032 (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 { advisor } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await advisor.workload({"vin":"1FM5K8GC4MGA16032"})curl 'https://apis.vin/advisors/workload?vin=1FM5K8GC4MGA16032'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": "AdvisorWorkload@1",
"value": {
"vin": "1FM5K8GC4MGA16032",
"noun": "advisor",
"asOf": "2026-08-10",
"partyId": "ID-24c9945b",
"type": "person",
"name": "The Estate Service Advisor",
"identifiers": [
{
"kind": "desk",
"value": "service-drive"
}
],
"roles": [
{
"role": "advisor"
}
],
"status": "active",
"workload": {
"openJobs": 5,
"byPosition": {
"Opened": 1,
"Estimated": 1,
"Approved": 1,
"Assigned": 1,
"Dispatched": 1
}
}
},
"evidence": {
"vin": "1FM5K8GC4MGA16032",
"noun": "advisor",
"asOf": "2026-08-10",
"partyId": "ID-24c9945b",
"type": "person",
"name": "The Estate Service Advisor",
"identifiers": [
{
"kind": "desk",
"value": "service-drive"
}
],
"roles": [
{
"role": "advisor"
}
],
"status": "active",
"workload": {
"openJobs": 5,
"byPosition": {
"Opened": 1,
"Estimated": 1,
"Approved": 1,
"Assigned": 1,
"Dispatched": 1
}
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "desk-people-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}writeUp
advisor.writeUp · POST /advisors/write-up · gate offer · sandbox · answers AdvisorWriteUp@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) · /1FM5K8GC4MGA16032 (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 — Advisor.writeUpRequested@1 · Advisor.writtenUp@1.
import { advisor } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await advisor.writeUp({"vin":"1FM5K8GC4MGA16032"})curl -X POST https://apis.vin/advisors/write-up \
-H 'content-type: application/json' \
-d '{"vin":"1FM5K8GC4MGA16032"}'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": "AdvisorWriteUp@1",
"value": {
"vin": "1FM5K8GC4MGA16032",
"noun": "advisor",
"asOf": "2026-08-10",
"partyId": "ID-24c9945b",
"type": "person",
"name": "The Estate Service Advisor",
"identifiers": [
{
"kind": "desk",
"value": "service-drive"
}
],
"roles": [
{
"role": "advisor"
}
],
"status": "active",
"writeUp": {
"roId": "RO-487b18f2",
"position": "InProgress",
"concerns": [
{
"system": "fuelSystem",
"verdict": "attention"
},
{
"system": "exhaust",
"verdict": "attention"
}
],
"totalCents": 59000,
"currency": "USD",
"customer": {
"identityId": "ID-11f17424",
"name": "Ava Good"
}
}
},
"evidence": {
"vin": "1FM5K8GC4MGA16032",
"noun": "advisor",
"asOf": "2026-08-10",
"partyId": "ID-24c9945b",
"type": "person",
"name": "The Estate Service Advisor",
"identifiers": [
{
"kind": "desk",
"value": "service-drive"
}
],
"roles": [
{
"role": "advisor"
}
],
"status": "active",
"writeUp": {
"roId": "RO-487b18f2",
"position": "InProgress",
"concerns": [
{
"system": "fuelSystem",
"verdict": "attention"
},
{
"system": "exhaust",
"verdict": "attention"
}
],
"totalCents": 59000,
"currency": "USD",
"customer": {
"identityId": "ID-11f17424",
"name": "Ava Good"
}
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "desk-people-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.
Party
Modeled
The noun drawn out — its record shape, its lifecycle, and how it is exercised end to end. One diagram, rendered from the estate model.
Advisor · Class model
Generated from the catalog. Every capability, answer, gate, and entity on this page is a rendered descriptor — it cannot drift from the wire.
adverseAction
The adverseAction noun — identity, lifecycle, events, and every capability as an anchored section: 6 capabilities, 0 live, 6 sandbox, 0 declared.
appointment
The appointment noun — identity, lifecycle, events, and every capability as an anchored section: 21 capabilities, 0 live, 21 sandbox, 0 declared.