docs.vin

party

The party noun — identity, lifecycle, events, and every capability as an anchored section: 19 capabilities, 0 live, 19 sandbox, 0 declared.

party is one of the estate's 317 automotive nouns — a job a car needs done. It carries 19 capabilities: 0 live, 19 sandbox, 0 declared · doors aggregator.vin.

Identity

Nounparty
PillarData (facets: 8 data · 8 services · 3 commerce)
Capabilities19 — 0 live · 19 sandbox · 0 declared
EntitiesParty
Doorsaggregator.vin
SDKVin.party.* from apis.vin
Address/catalog/party#{action} — the anchor IS the wire name minus party.

Events

The vocabulary this noun can append to the record — 12 past-tense, versioned event types, each linked to the capability that emits it:

Discover & read

lookup

party.lookup · GET /parties/lookup · gate none · sandbox · answers PartyLookup@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /1FT8W3BT9NEE77031 (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.

the SDK — party.lookup
import { party } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await party.lookup({"vin":"1FT8W3BT9NEE77031"})
GET /parties/lookup
curl 'https://apis.vin/parties/lookup?vin=1FT8W3BT9NEE77031'

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.

receipt · executed 2026-08-17T12:42:15.056Z · HTTP 200
{
  "type": "OK",
  "answers": "PartyLookup@1",
  "value": {
    "noun": "party",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "party": {
      "identityId": "ID-11f17424",
      "name": "Ava Good",
      "castRow": "super-prime",
      "tier": "super-prime",
      "score": 843,
      "kind": "person"
    }
  },
  "evidence": {
    "noun": "party",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "party": {
      "identityId": "ID-11f17424",
      "name": "Ava Good",
      "castRow": "super-prime",
      "tier": "super-prime",
      "score": 843,
      "kind": "person"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "identity-comms-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

read

party.read · GET /parties/read · gate none · sandbox · answers PartyRead@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /1FT8W3BT9NEE77031 (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.

the SDK — party.read
import { party } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await party.read({"vin":"1FT8W3BT9NEE77031"})
GET /parties/read
curl 'https://apis.vin/parties/read?vin=1FT8W3BT9NEE77031'

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.

receipt · executed 2026-08-17T12:42:15.056Z · HTTP 200
{
  "type": "OK",
  "answers": "PartyRead@1",
  "value": {
    "noun": "party",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "party": {
      "identityId": "ID-11f17424",
      "name": "Ava Good",
      "castRow": "super-prime",
      "tier": "super-prime",
      "score": 843,
      "kind": "person"
    }
  },
  "evidence": {
    "noun": "party",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "party": {
      "identityId": "ID-11f17424",
      "name": "Ava Good",
      "castRow": "super-prime",
      "tier": "super-prime",
      "score": 843,
      "kind": "person"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "identity-comms-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

history

party.history · GET /parties/history · gate none · sandbox · answers PartyHistory@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /1FT8W3BT9NEE77031 (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.

the SDK — party.history
import { party } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await party.history({"vin":"1FT8W3BT9NEE77031"})
GET /parties/history
curl 'https://apis.vin/parties/history?vin=1FT8W3BT9NEE77031'

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.

receipt · executed 2026-08-17T12:42:15.056Z · HTTP 200
{
  "type": "OK",
  "answers": "PartyHistory@1",
  "value": {
    "noun": "party",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "events": [
      {
        "date": "2025-07-06",
        "kind": "onboarded"
      },
      {
        "date": "2026-04-12",
        "kind": "kyc-verified"
      }
    ]
  },
  "evidence": {
    "noun": "party",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "events": [
      {
        "date": "2025-07-06",
        "kind": "onboarded"
      },
      {
        "date": "2026-04-12",
        "kind": "kyc-verified"
      }
    ]
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "identity-comms-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

verify

party.verify · GET /parties/verify · gate key · sandbox · answers PartyVerify@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /1FT8W3BT9NEE77031 (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.

the SDK — party.verify
import { party } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await party.verify({"vin":"1FT8W3BT9NEE77031"})
GET /parties/verify
curl 'https://apis.vin/parties/verify?vin=1FT8W3BT9NEE77031'

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.

receipt · executed 2026-08-17T12:42:15.071Z · HTTP 200
{
  "type": "OK",
  "answers": "PartyVerify@1",
  "value": {
    "noun": "party",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "verification": {
      "status": "verified",
      "kyc": "clear",
      "ofac": "clear"
    }
  },
  "evidence": {
    "noun": "party",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "verification": {
      "status": "verified",
      "kyc": "clear",
      "ofac": "clear"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "identity-comms-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

match

party.match · GET /parties/match · gate key · sandbox · answers PartyMatch@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /1FT8W3BT9NEE77031 (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.

the SDK — party.match
import { party } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await party.match({"vin":"1FT8W3BT9NEE77031"})
GET /parties/match
curl 'https://apis.vin/parties/match?vin=1FT8W3BT9NEE77031'

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.

receipt · executed 2026-08-17T12:42:15.056Z · HTTP 200
{
  "type": "OK",
  "answers": "PartyMatch@1",
  "value": {
    "noun": "party",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "match": {
      "matched": true,
      "identityId": "ID-11f17424",
      "confidence": "exact"
    }
  },
  "evidence": {
    "noun": "party",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "match": {
      "matched": true,
      "identityId": "ID-11f17424",
      "confidence": "exact"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "identity-comms-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Apply & book

register

party.register · POST /parties/register · gate key · sandbox · answers Party@1

FieldTypeRequiredNotes
typestringyesone of consumer, dealer, lender, insurer, facilitator, affiliate, partner, contact, location
namestringno
identifiersobjectnotyped registry ids; PII minimized to what the register needs

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /1FT8W3BT9NEE77031 (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.

EmitsParty.merged@1 · Party.registered@1.

the SDK — party.register
import { party } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await party.register({"type":"consumer"})
POST /parties/register
curl -X POST https://apis.vin/parties/register \
  -H 'content-type: application/json' \
  -d '{"type":"consumer"}'

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.

receipt · executed 2026-08-16T14:50:09.961Z · HTTP 200
{
  "type": "OK",
  "answers": "Party@1",
  "value": {
    "noun": "party",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "registration": {
      "status": "existing-identity",
      "identityId": "ID-11f17424"
    }
  },
  "evidence": {
    "noun": "party",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "registration": {
      "status": "existing-identity",
      "identityId": "ID-11f17424"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "identity-comms-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": true
  }
}

onboard

party.onboard · POST /parties/onboard · gate offer · sandbox · answers PartyOnboard@1

FieldTypeRequiredNotes
vinstringno

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.

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /1FT8W3BT9NEE77031 (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.

EmitsParty.onboarded@1.

the SDK — party.onboard
import { party } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await party.onboard({"vin":"1FT8W3BT9NEE77031"})
POST /parties/onboard
curl -X POST https://apis.vin/parties/onboard \
  -H 'content-type: application/json' \
  -d '{"vin":"1FT8W3BT9NEE77031"}'

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.

receipt · executed 2026-08-17T12:42:15.056Z · HTTP 200
{
  "type": "OK",
  "answers": "PartyOnboard@1",
  "value": {
    "noun": "party",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "onboarding": {
      "status": "onboarded",
      "identityId": "ID-11f17424"
    }
  },
  "evidence": {
    "noun": "party",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "onboarding": {
      "status": "onboarded",
      "identityId": "ID-11f17424"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "identity-comms-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

provision

party.provision · POST /parties/provision · gate offer · sandbox · answers PartyProvision@1

FieldTypeRequiredNotes
vinstringno

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.

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /1FT8W3BT9NEE77031 (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.

EmitsParty.provisioned@1.

the SDK — party.provision
import { party } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await party.provision({"vin":"1FT8W3BT9NEE77031"})
POST /parties/provision
curl -X POST https://apis.vin/parties/provision \
  -H 'content-type: application/json' \
  -d '{"vin":"1FT8W3BT9NEE77031"}'

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.

receipt · executed 2026-08-17T12:42:15.056Z · HTTP 200
{
  "type": "OK",
  "answers": "PartyProvision@1",
  "value": {
    "noun": "party",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "provisioning": {
      "status": "provisioned",
      "identityId": "ID-11f17424",
      "capabilities": [
        "orders",
        "payments",
        "messaging"
      ]
    }
  },
  "evidence": {
    "noun": "party",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "provisioning": {
      "status": "provisioned",
      "identityId": "ID-11f17424",
      "capabilities": [
        "orders",
        "payments",
        "messaging"
      ]
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "identity-comms-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Pay & settle

bill

party.bill · POST /parties/bill · gate offer · sandbox · answers PartyBill@1

FieldTypeRequiredNotes
vinstringno

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.

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /1FT8W3BT9NEE77031 (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.

EmitsParty.billed@1 · Party.failed@1.

the SDK — party.bill
import { party } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await party.bill({"vin":"1FT8W3BT9NEE77031"})
POST /parties/bill
curl -X POST https://apis.vin/parties/bill \
  -H 'content-type: application/json' \
  -d '{"vin":"1FT8W3BT9NEE77031"}'

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.

receipt · executed 2026-08-17T12:42:15.018Z · HTTP 200
{
  "type": "OK",
  "answers": "PartyBill@1",
  "value": {
    "noun": "party",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "bill": {
      "id": "PB-b9774bf1",
      "amountCents": 35000,
      "currency": "USD",
      "status": "issued"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "noun": "party",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "bill": {
      "id": "PB-b9774bf1",
      "amountCents": 35000,
      "currency": "USD",
      "status": "issued"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "identity-comms-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

invoice

party.invoice · POST /parties/invoice · gate offer · sandbox · answers PartyInvoice@1

FieldTypeRequiredNotes
vinstringno

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.

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /1FT8W3BT9NEE77031 (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.

EmitsParty.failed@1 · Party.invoiced@1.

the SDK — party.invoice
import { party } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await party.invoice({"vin":"1FT8W3BT9NEE77031"})
POST /parties/invoice
curl -X POST https://apis.vin/parties/invoice \
  -H 'content-type: application/json' \
  -d '{"vin":"1FT8W3BT9NEE77031"}'

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.

receipt · executed 2026-08-17T12:42:15.056Z · HTTP 200
{
  "type": "OK",
  "answers": "PartyInvoice@1",
  "value": {
    "noun": "party",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "invoice": {
      "id": "PI-b0d7b87f",
      "amountCents": 35000,
      "currency": "USD",
      "status": "issued"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "noun": "party",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "invoice": {
      "id": "PI-b0d7b87f",
      "amountCents": 35000,
      "currency": "USD",
      "status": "issued"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "identity-comms-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

settle

party.settle · POST /parties/settle · gate offer · sandbox · answers PartySettle@1

FieldTypeRequiredNotes
vinstringno

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.

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /1FT8W3BT9NEE77031 (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.

EmitsParty.failed@1 · Party.settled@1.

the SDK — party.settle
import { party } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await party.settle({"vin":"1FT8W3BT9NEE77031"})
POST /parties/settle
curl -X POST https://apis.vin/parties/settle \
  -H 'content-type: application/json' \
  -d '{"vin":"1FT8W3BT9NEE77031"}'

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.

receipt · executed 2026-08-17T12:42:15.067Z · HTTP 200
{
  "type": "OK",
  "answers": "PartySettle@1",
  "value": {
    "noun": "party",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "settlement": {
      "id": "PS-b732f97b",
      "amountCents": 35000,
      "currency": "USD",
      "status": "settled"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "noun": "party",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "settlement": {
      "id": "PS-b732f97b",
      "amountCents": 35000,
      "currency": "USD",
      "status": "settled"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "identity-comms-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Lifecycle & state

suspend

party.suspend · POST /parties/suspend · gate offer · sandbox · answers PartySuspend@1

FieldTypeRequiredNotes
vinstringno

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.

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /1FT8W3BT9NEE77031 (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.

EmitsParty.suspended@1.

the SDK — party.suspend
import { party } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await party.suspend({"vin":"1FT8W3BT9NEE77031"})
POST /parties/suspend
curl -X POST https://apis.vin/parties/suspend \
  -H 'content-type: application/json' \
  -d '{"vin":"1FT8W3BT9NEE77031"}'

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.

receipt · executed 2026-08-17T12:42:15.071Z · HTTP 200
{
  "type": "OK",
  "answers": "PartySuspend@1",
  "value": {
    "noun": "party",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "suspension": {
      "status": "suspended",
      "identityId": "ID-11f17424"
    }
  },
  "evidence": {
    "noun": "party",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "suspension": {
      "status": "suspended",
      "identityId": "ID-11f17424"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "identity-comms-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

More actions

delegate

party.delegate · POST /parties/delegate · gate offer · sandbox · answers PartyDelegate@1

FieldTypeRequiredNotes
vinstringno

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.

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /1FT8W3BT9NEE77031 (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.

EmitsParty.delegated@1.

the SDK — party.delegate
import { party } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await party.delegate({"vin":"1FT8W3BT9NEE77031"})
POST /parties/delegate
curl -X POST https://apis.vin/parties/delegate \
  -H 'content-type: application/json' \
  -d '{"vin":"1FT8W3BT9NEE77031"}'

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.

receipt · executed 2026-08-17T12:42:15.055Z · HTTP 200
{
  "type": "OK",
  "answers": "PartyDelegate@1",
  "value": {
    "noun": "party",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "delegation": {
      "status": "delegated",
      "from": "ID-11f17424",
      "to": "DLR-b9066ade",
      "scope": "transact"
    }
  },
  "evidence": {
    "noun": "party",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "delegation": {
      "status": "delegated",
      "from": "ID-11f17424",
      "to": "DLR-b9066ade",
      "scope": "transact"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "identity-comms-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

graph

party.graph · GET /parties/graph · gate key · sandbox · answers PartyGraph@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /1FT8W3BT9NEE77031 (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.

the SDK — party.graph
import { party } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await party.graph({"vin":"1FT8W3BT9NEE77031"})
GET /parties/graph
curl 'https://apis.vin/parties/graph?vin=1FT8W3BT9NEE77031'

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.

receipt · executed 2026-08-17T12:42:15.056Z · HTTP 200
{
  "type": "OK",
  "answers": "PartyGraph@1",
  "value": {
    "noun": "party",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "graph": {
      "nodes": [
        {
          "id": "ID-11f17424",
          "kind": "person",
          "name": "Ava Good"
        },
        {
          "id": "DLR-b9066ade",
          "kind": "business",
          "name": "The Estate Store"
        }
      ],
      "edges": [
        {
          "from": "ID-11f17424",
          "to": "DLR-b9066ade",
          "relation": "customer-of"
        }
      ]
    }
  },
  "evidence": {
    "noun": "party",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "graph": {
      "nodes": [
        {
          "id": "ID-11f17424",
          "kind": "person",
          "name": "Ava Good"
        },
        {
          "id": "DLR-b9066ade",
          "kind": "business",
          "name": "The Estate Store"
        }
      ],
      "edges": [
        {
          "from": "ID-11f17424",
          "to": "DLR-b9066ade",
          "relation": "customer-of"
        }
      ]
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "identity-comms-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

kyb

party.kyb · POST /parties/kyb · gate key · sandbox · answers PartyKyb@1

No input — this capability takes no request body.

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /1FT8W3BT9NEE77031 (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.

EmitsParty.kybCompleted@1.

the SDK — party.kyb
import { party } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await party.kyb()
POST /parties/kyb
curl -X POST https://apis.vin/parties/kyb \
  -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.

receipt · executed 2026-08-16T14:50:09.960Z · HTTP 200
{
  "type": "OK",
  "answers": "PartyKyb@1",
  "value": {
    "noun": "party",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "kyb": {
      "business": {
        "id": "DLR-b9066ade",
        "name": "The Estate Store"
      },
      "status": "verified"
    }
  },
  "evidence": {
    "noun": "party",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "kyb": {
      "business": {
        "id": "DLR-b9066ade",
        "name": "The Estate Store"
      },
      "status": "verified"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "identity-comms-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

merge

party.merge · POST /parties/merge · gate offer · sandbox · answers PartyMerge@1

FieldTypeRequiredNotes
vinstringno

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.

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /1FT8W3BT9NEE77031 (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.

EmitsParty.merged@1.

the SDK — party.merge
import { party } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await party.merge({"vin":"1FT8W3BT9NEE77031"})
POST /parties/merge
curl -X POST https://apis.vin/parties/merge \
  -H 'content-type: application/json' \
  -d '{"vin":"1FT8W3BT9NEE77031"}'

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.

receipt · executed 2026-08-17T12:42:15.056Z · HTTP 200
{
  "type": "OK",
  "answers": "PartyMerge@1",
  "value": {
    "noun": "party",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "merge": {
      "survivingId": "ID-11f17424",
      "mergedDuplicates": 1,
      "status": "merged"
    }
  },
  "evidence": {
    "noun": "party",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "merge": {
      "survivingId": "ID-11f17424",
      "mergedDuplicates": 1,
      "status": "merged"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "identity-comms-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

offboard

party.offboard · POST /parties/offboard · gate offer · sandbox · answers PartyOffboard@1

FieldTypeRequiredNotes
vinstringno

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.

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /1FT8W3BT9NEE77031 (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.

EmitsParty.offboarded@1.

the SDK — party.offboard
import { party } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await party.offboard({"vin":"1FT8W3BT9NEE77031"})
POST /parties/offboard
curl -X POST https://apis.vin/parties/offboard \
  -H 'content-type: application/json' \
  -d '{"vin":"1FT8W3BT9NEE77031"}'

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.

receipt · executed 2026-08-17T12:42:15.056Z · HTTP 200
{
  "type": "OK",
  "answers": "PartyOffboard@1",
  "value": {
    "noun": "party",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "offboarding": {
      "status": "offboarded",
      "identityId": "ID-11f17424"
    }
  },
  "evidence": {
    "noun": "party",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "offboarding": {
      "status": "offboarded",
      "identityId": "ID-11f17424"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "identity-comms-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

resolve

party.resolve · GET /parties/resolve · gate key · sandbox · answers PartyResolve@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /1FT8W3BT9NEE77031 (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.

the SDK — party.resolve
import { party } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await party.resolve({"vin":"1FT8W3BT9NEE77031"})
GET /parties/resolve
curl 'https://apis.vin/parties/resolve?vin=1FT8W3BT9NEE77031'

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.

receipt · executed 2026-08-17T12:42:15.064Z · HTTP 200
{
  "type": "OK",
  "answers": "PartyResolve@1",
  "value": {
    "noun": "party",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "party": {
      "identityId": "ID-11f17424",
      "name": "Ava Good",
      "castRow": "super-prime",
      "tier": "super-prime",
      "score": 843,
      "kind": "person"
    }
  },
  "evidence": {
    "noun": "party",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "party": {
      "identityId": "ID-11f17424",
      "name": "Ava Good",
      "castRow": "super-prime",
      "tier": "super-prime",
      "score": 843,
      "kind": "person"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "identity-comms-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

uboResolve

party.uboResolve · GET /parties/ubo-resolve · gate none · sandbox · answers PartyUboResolve@1

No input — this capability takes no request body.

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /1FT8W3BT9NEE77031 (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.

the SDK — party.uboResolve
import { party } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await party.uboResolve()
GET /parties/ubo-resolve
curl 'https://apis.vin/parties/ubo-resolve'

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.

receipt · executed 2026-08-16T14:50:09.961Z · HTTP 200
{
  "type": "OK",
  "answers": "PartyUboResolve@1",
  "value": {
    "noun": "party",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "ubo": {
      "businessId": "DLR-b9066ade",
      "owner": {
        "name": "Estate Holdings",
        "ownershipPct": 100
      },
      "status": "resolved"
    }
  },
  "evidence": {
    "noun": "party",
    "asOf": "2026-08-10",
    "identityId": "ID-11f17424",
    "ubo": {
      "businessId": "DLR-b9066ade",
      "owner": {
        "name": "Estate Holdings",
        "ownershipPct": 100
      },
      "status": "resolved"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "identity-comms-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

Schema

PropertyTypeNotes
partyIdidpty_
typePartyType
namestring
identifiersIdentifier[]
rolesRole[]
statusenum

Relationships

FromToCardinalityAs
dealparty*:* w/ rolebuyer/seller/dealerOfRecord
partymandate1:0..*grants (principal)
partymandate1:0..*holds (grantee)
partyconnection1:0..*owns
partymoneyInstrument1:0..*vaults
ledgerparty*:1who (attested)
partyconsumerISAis-a
partydealerISAis-a
partylenderISAis-a
partyinsurerISAis-a
partycarrierISAis-a
partyproviderISAis-a

Modeled

The noun drawn out — its record shape, its lifecycle, and how it is exercised end to end. 4 diagrams, rendered from the estate model.

Party · Class model

Party · State machine

Party · Class model

Party · Sequence


Generated from the catalog. Every capability, answer, gate, and entity on this page is a rendered descriptor — it cannot drift from the wire.