docs.vin

sourcing

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

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

Identity

Nounsourcing
PillarData (facets: 5 data · 5 services · 3 commerce)
Capabilities13 — 0 live · 13 sandbox · 0 declared
EntitiesInventoryItem
Doorsaggregator.vin
SDKVin.sourcing.* from apis.vin
Address/catalog/sourcing#{action} — the anchor IS the wire name minus sourcing.

Events

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

Discover & read

read

sourcing.read · GET /sourcings/read · gate none · sandbox · answers SourcingRead@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /5GAEVARS2SJ220241 (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 — sourcing.read
import { sourcing } from 'apis.vin'

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

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:17.627Z · HTTP 200
{
  "type": "OK",
  "answers": "SourcingRead@1",
  "value": {
    "vin": "5GAEVARS2SJ220241",
    "noun": "sourcing",
    "asOf": "2026-08-10",
    "stage": "identified",
    "target": {
      "id": "SRC-033bb116",
      "stage": "identified",
      "channel": "private-party",
      "appraisal": "Requested"
    }
  },
  "evidence": {
    "vin": "5GAEVARS2SJ220241",
    "noun": "sourcing",
    "asOf": "2026-08-10",
    "stage": "identified",
    "target": {
      "id": "SRC-033bb116",
      "stage": "identified",
      "channel": "private-party",
      "appraisal": "Requested"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "stock-and-book-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

scan

sourcing.scan · POST /sourcings/scan · gate offer · sandbox · answers SourcingScan@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) · /5GAEVARS2SJ220241 (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.

EmitsSourcing.scanned@1.

the SDK — sourcing.scan
import { sourcing } from 'apis.vin'

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

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:17.627Z · HTTP 200
{
  "type": "OK",
  "answers": "SourcingScan@1",
  "value": {
    "vin": "5GAEVARS2SJ220241",
    "noun": "sourcing",
    "asOf": "2026-08-10",
    "stage": "identified",
    "scan": {
      "id": "SCN-5d226fb2",
      "candidates": [
        {
          "vin": "1FL0TS0URCE000000",
          "stage": "identified",
          "channel": "lease-return"
        },
        {
          "vin": "1FL0TB1D000000000",
          "stage": "bidding",
          "channel": "private-party"
        }
      ]
    }
  },
  "evidence": {
    "vin": "5GAEVARS2SJ220241",
    "noun": "sourcing",
    "asOf": "2026-08-10",
    "stage": "identified",
    "scan": {
      "id": "SCN-5d226fb2",
      "candidates": [
        {
          "vin": "1FL0TS0URCE000000",
          "stage": "identified",
          "channel": "lease-return"
        },
        {
          "vin": "1FL0TB1D000000000",
          "stage": "bidding",
          "channel": "private-party"
        }
      ]
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "stock-and-book-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Quote & price

quote

sourcing.quote · POST /sourcings/quote · gate offer · sandbox · answers SourcingQuote@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) · /5GAEVARS2SJ220241 (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.

EmitsSourcing.failed@1 · Sourcing.quoted@1.

the SDK — sourcing.quote
import { sourcing } from 'apis.vin'

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

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:17.627Z · HTTP 200
{
  "type": "OK",
  "answers": "SourcingQuote@1",
  "value": {
    "vin": "5GAEVARS2SJ220241",
    "noun": "sourcing",
    "asOf": "2026-08-10",
    "stage": "identified",
    "quote": {
      "targetId": "SRC-033bb116",
      "amountCents": 1850000,
      "currency": "USD",
      "status": "quoted"
    }
  },
  "evidence": {
    "vin": "5GAEVARS2SJ220241",
    "noun": "sourcing",
    "asOf": "2026-08-10",
    "stage": "identified",
    "quote": {
      "targetId": "SRC-033bb116",
      "amountCents": 1850000,
      "currency": "USD",
      "status": "quoted"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "stock-and-book-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

appraise

sourcing.appraise · POST /sourcings/appraise · gate offer · sandbox · answers SourcingAppraise@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) · /5GAEVARS2SJ220241 (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.

EmitsSourcing.appraised@1 · Sourcing.requested@1.

the SDK — sourcing.appraise
import { sourcing } from 'apis.vin'

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

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:17.588Z · HTTP 200
{
  "type": "OK",
  "answers": "SourcingAppraise@1",
  "value": {
    "vin": "5GAEVARS2SJ220241",
    "noun": "sourcing",
    "asOf": "2026-08-10",
    "stage": "identified",
    "appraisal": {
      "id": "APR-8123af86",
      "standing": "Requested",
      "amountCents": 1850000,
      "currency": "USD"
    }
  },
  "evidence": {
    "vin": "5GAEVARS2SJ220241",
    "noun": "sourcing",
    "asOf": "2026-08-10",
    "stage": "identified",
    "appraisal": {
      "id": "APR-8123af86",
      "standing": "Requested",
      "amountCents": 1850000,
      "currency": "USD"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "stock-and-book-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

offer

sourcing.offer · POST /sourcings/offer · gate offer · sandbox · answers SourcingOffer@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) · /5GAEVARS2SJ220241 (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.

EmitsSourcing.offered@1.

the SDK — sourcing.offer
import { sourcing } from 'apis.vin'

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

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:17.589Z · HTTP 200
{
  "type": "OK",
  "answers": "SourcingOffer@1",
  "value": {
    "vin": "5GAEVARS2SJ220241",
    "noun": "sourcing",
    "asOf": "2026-08-10",
    "stage": "identified",
    "offer": {
      "id": "OFR-7c875c87",
      "amountCents": 1850000,
      "currency": "USD",
      "status": "draft"
    }
  },
  "evidence": {
    "vin": "5GAEVARS2SJ220241",
    "noun": "sourcing",
    "asOf": "2026-08-10",
    "stage": "identified",
    "offer": {
      "id": "OFR-7c875c87",
      "amountCents": 1850000,
      "currency": "USD",
      "status": "draft"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "stock-and-book-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Pay & settle

pay

sourcing.pay · POST /sourcings/pay · gate offer · sandbox · answers SourcingPay@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) · /5GAEVARS2SJ220241 (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.

EmitsSourcing.failed@1 · Sourcing.paid@1.

the SDK — sourcing.pay
import { sourcing } from 'apis.vin'

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

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:17.627Z · HTTP 200
{
  "type": "OK",
  "answers": "SourcingPay@1",
  "value": {
    "vin": "5GAEVARS2SJ220241",
    "noun": "sourcing",
    "asOf": "2026-08-10",
    "stage": "identified",
    "payment": {
      "id": "PAY-a20957e3",
      "amountCents": 1850000,
      "currency": "USD",
      "status": "settled"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "5GAEVARS2SJ220241",
    "noun": "sourcing",
    "asOf": "2026-08-10",
    "stage": "identified",
    "payment": {
      "id": "PAY-a20957e3",
      "amountCents": 1850000,
      "currency": "USD",
      "status": "settled"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "stock-and-book-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

buy

sourcing.buy · POST /sourcings/buy · gate offer · sandbox · answers SourcingBuy@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) · /5GAEVARS2SJ220241 (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.

EmitsSourcing.bought@1 · Sourcing.failed@1.

the SDK — sourcing.buy
import { sourcing } from 'apis.vin'

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

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:17.588Z · HTTP 200
{
  "type": "OK",
  "answers": "SourcingBuy@1",
  "value": {
    "vin": "5GAEVARS2SJ220241",
    "noun": "sourcing",
    "asOf": "2026-08-10",
    "stage": "identified",
    "acquisition": {
      "id": "ACQ-9a3a3521",
      "status": "acquired",
      "costCents": 1850000,
      "currency": "USD",
      "stockNumber": "STK-36de033b"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "5GAEVARS2SJ220241",
    "noun": "sourcing",
    "asOf": "2026-08-10",
    "stage": "identified",
    "acquisition": {
      "id": "ACQ-9a3a3521",
      "status": "acquired",
      "costCents": 1850000,
      "currency": "USD",
      "stockNumber": "STK-36de033b"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "stock-and-book-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

More actions

acquire

sourcing.acquire · POST /sourcings/acquire · gate offer · sandbox · answers SourcingAcquire@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) · /5GAEVARS2SJ220241 (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.

EmitsSourcing.acquired@1.

the SDK — sourcing.acquire
import { sourcing } from 'apis.vin'

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

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:17.588Z · HTTP 200
{
  "type": "OK",
  "answers": "SourcingAcquire@1",
  "value": {
    "vin": "5GAEVARS2SJ220241",
    "noun": "sourcing",
    "asOf": "2026-08-10",
    "stage": "identified",
    "acquisition": {
      "id": "ACQ-1177eb1d",
      "status": "acquired",
      "costCents": 1850000,
      "currency": "USD",
      "stockNumber": "STK-36de033b"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "evidence": {
    "vin": "5GAEVARS2SJ220241",
    "noun": "sourcing",
    "asOf": "2026-08-10",
    "stage": "identified",
    "acquisition": {
      "id": "ACQ-1177eb1d",
      "status": "acquired",
      "costCents": 1850000,
      "currency": "USD",
      "stockNumber": "STK-36de033b"
    },
    "payer": {
      "name": "Ava Good",
      "castRow": "super-prime",
      "creditTier": "super-prime"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "stock-and-book-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

channels

sourcing.channels · GET /sourcings/channels · gate none · sandbox · answers SourcingChannels@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /5GAEVARS2SJ220241 (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 — sourcing.channels
import { sourcing } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await sourcing.channels({"vin":"5GAEVARS2SJ220241"})
GET /sourcings/channels
curl 'https://apis.vin/sourcings/channels?vin=5GAEVARS2SJ220241'

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:17.588Z · HTTP 200
{
  "type": "OK",
  "answers": "SourcingChannels@1",
  "value": {
    "vin": "5GAEVARS2SJ220241",
    "noun": "sourcing",
    "asOf": "2026-08-10",
    "stage": "identified",
    "channels": [
      {
        "channel": "lease-return",
        "recommended": false
      },
      {
        "channel": "trade-in",
        "recommended": false
      },
      {
        "channel": "auction",
        "recommended": false
      },
      {
        "channel": "private-party",
        "recommended": true
      },
      {
        "channel": "factory-allocation",
        "recommended": false
      }
    ]
  },
  "evidence": {
    "vin": "5GAEVARS2SJ220241",
    "noun": "sourcing",
    "asOf": "2026-08-10",
    "stage": "identified",
    "channels": [
      {
        "channel": "lease-return",
        "recommended": false
      },
      {
        "channel": "trade-in",
        "recommended": false
      },
      {
        "channel": "auction",
        "recommended": false
      },
      {
        "channel": "private-party",
        "recommended": true
      },
      {
        "channel": "factory-allocation",
        "recommended": false
      }
    ]
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "stock-and-book-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

demandSignal

sourcing.demandSignal · GET /sourcings/demand-signal · gate key · sandbox · answers SourcingDemandSignal@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /5GAEVARS2SJ220241 (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 — sourcing.demandSignal
import { sourcing } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await sourcing.demandSignal({"vin":"5GAEVARS2SJ220241"})
GET /sourcings/demand-signal
curl 'https://apis.vin/sourcings/demand-signal?vin=5GAEVARS2SJ220241'

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:17.588Z · HTTP 200
{
  "type": "OK",
  "answers": "SourcingDemandSignal@1",
  "value": {
    "vin": "5GAEVARS2SJ220241",
    "noun": "sourcing",
    "asOf": "2026-08-10",
    "stage": "identified",
    "demand": {
      "signal": "high",
      "turnDays": 29,
      "targetDays": 45
    }
  },
  "evidence": {
    "vin": "5GAEVARS2SJ220241",
    "noun": "sourcing",
    "asOf": "2026-08-10",
    "stage": "identified",
    "demand": {
      "signal": "high",
      "turnDays": 29,
      "targetDays": 45
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "stock-and-book-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

marketSupply

sourcing.marketSupply · GET /sourcings/market-supply · gate key · sandbox · answers SourcingMarketSupply@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /5GAEVARS2SJ220241 (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 — sourcing.marketSupply
import { sourcing } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await sourcing.marketSupply({"vin":"5GAEVARS2SJ220241"})
GET /sourcings/market-supply
curl 'https://apis.vin/sourcings/market-supply?vin=5GAEVARS2SJ220241'

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:17.589Z · HTTP 200
{
  "type": "OK",
  "answers": "SourcingMarketSupply@1",
  "value": {
    "vin": "5GAEVARS2SJ220241",
    "noun": "sourcing",
    "asOf": "2026-08-10",
    "stage": "identified",
    "supply": {
      "daysSupply": 42,
      "demand": "high",
      "channel": "private-party"
    }
  },
  "evidence": {
    "vin": "5GAEVARS2SJ220241",
    "noun": "sourcing",
    "asOf": "2026-08-10",
    "stage": "identified",
    "supply": {
      "daysSupply": 42,
      "demand": "high",
      "channel": "private-party"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "stock-and-book-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

opportunityScore

sourcing.opportunityScore · GET /sourcings/opportunity-score · gate key · sandbox · answers SourcingOpportunityScore@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /5GAEVARS2SJ220241 (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 — sourcing.opportunityScore
import { sourcing } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await sourcing.opportunityScore({"vin":"5GAEVARS2SJ220241"})
GET /sourcings/opportunity-score
curl 'https://apis.vin/sourcings/opportunity-score?vin=5GAEVARS2SJ220241'

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:17.589Z · HTTP 200
{
  "type": "OK",
  "answers": "SourcingOpportunityScore@1",
  "value": {
    "vin": "5GAEVARS2SJ220241",
    "noun": "sourcing",
    "asOf": "2026-08-10",
    "stage": "identified",
    "opportunity": {
      "score": 65,
      "marginCents": 450000,
      "askingCents": 2300000,
      "costCents": 1850000,
      "currency": "USD"
    }
  },
  "evidence": {
    "vin": "5GAEVARS2SJ220241",
    "noun": "sourcing",
    "asOf": "2026-08-10",
    "stage": "identified",
    "opportunity": {
      "score": 65,
      "marginCents": 450000,
      "askingCents": 2300000,
      "costCents": 1850000,
      "currency": "USD"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "stock-and-book-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

source

sourcing.source · POST /sourcings/source · gate offer · sandbox · answers SourcingSource@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) · /5GAEVARS2SJ220241 (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.

EmitsSourcing.sourced@1.

the SDK — sourcing.source
import { sourcing } from 'apis.vin'

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

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:17.627Z · HTTP 200
{
  "type": "OK",
  "answers": "SourcingSource@1",
  "value": {
    "vin": "5GAEVARS2SJ220241",
    "noun": "sourcing",
    "asOf": "2026-08-10",
    "stage": "identified",
    "sourcing": {
      "id": "SRC-033bb116",
      "status": "already-in-funnel",
      "stage": "identified",
      "channel": "private-party"
    }
  },
  "evidence": {
    "vin": "5GAEVARS2SJ220241",
    "noun": "sourcing",
    "asOf": "2026-08-10",
    "stage": "identified",
    "sourcing": {
      "id": "SRC-033bb116",
      "status": "already-in-funnel",
      "stage": "identified",
      "channel": "private-party"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "stock-and-book-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.

InventoryItem

Modeled

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

Sourcing · Class model

Sourcing · State machine

Sourcing · 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.