port
The port noun — identity, lifecycle, events, and every capability as an anchored section: 20 capabilities, 0 live, 20 sandbox, 0 declared.
port is one of the estate's 317 automotive nouns — a job a car needs done. It carries 20 capabilities: 0 live, 20 sandbox, 0 declared · doors aggregator.vin.
Identity
| Noun | port |
| Pillar | Services (facets: 7 data · 8 services · 5 commerce) |
| Capabilities | 20 — 0 live · 20 sandbox · 0 declared |
| Entities | Transport |
| Doors | aggregator.vin |
| SDK | Vin.port.* from apis.vin |
| Address | /catalog/port#{action} — the anchor IS the wire name minus port. |
Events
The vocabulary this noun can append to the record — 31 past-tense, versioned event types, each linked to the capability that emits it:
Port.completed@1— emitted bybookPort.customsClearRequested@1— emitted bycustomsClearPort.customsCleared@1— emitted bycustomsClearPort.demurrageBillRequested@1— emitted bydemurrageBillPort.demurrageBilled@1— emitted bydemurrageBillPort.dischargeRequested@1— emitted bydischargePort.discharged@1— emitted bydischargePort.dispatched@1— emitted bybookPort.gateInRequested@1— emitted bygateInPort.gateOutRequested@1— emitted bygateOutPort.gatedIn@1— emitted bygateInPort.gatedOut@1— emitted bygateOutPort.loadVesselRequested@1— emitted byloadVesselPort.ordered@1— emitted bybookPort.paid@1— emitted bypayPort.payFailed@1— emitted bypayPort.payRequested@1— emitted bypayPort.receiveRequested@1— emitted byreceivePort.received@1— emitted byreceivePort.releaseFailed@1— emitted byreleasePort.releaseRequested@1— emitted byreleasePort.released@1— emitted byreleasePort.settleFailed@1— emitted bysettlePort.settleRequested@1— emitted bysettlePort.settled@1— emitted bysettlePort.stageRequested@1— emitted bystagePort.staged@1— emitted bystagePort.vesselLoaded@1— emitted byloadVesselPort.wharfageBillRequested@1— emitted bywharfageBillPort.wharfageBilled@1— emitted bywharfageBillServiceOrder.settled@1— emitted bybook
Discover & read
locate
port.locate · GET /ports/locate · gate none · sandbox · answers PortLocate@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /4S4BTANCXS3232904 (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 { port } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await port.locate({"vin":"4S4BTANCXS3232904"})curl 'https://apis.vin/ports/locate?vin=4S4BTANCXS3232904'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": "PortLocate@1",
"value": {
"vin": "4S4BTANCXS3232904",
"noun": "port",
"asOf": "2026-08-10",
"standing": "vessel-underway",
"location": {
"status": "on-vessel"
}
},
"evidence": {
"vin": "4S4BTANCXS3232904",
"noun": "port",
"asOf": "2026-08-10",
"standing": "vessel-underway",
"location": {
"status": "on-vessel"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "freight-fleet-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}berthStatus
port.berthStatus · GET /ports/berth-status · gate none · sandbox · answers PortBerthStatus@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /4S4BTANCXS3232904 (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 { port } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await port.berthStatus({"vin":"4S4BTANCXS3232904"})curl 'https://apis.vin/ports/berth-status?vin=4S4BTANCXS3232904'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": "PortBerthStatus@1",
"value": {
"vin": "4S4BTANCXS3232904",
"noun": "port",
"asOf": "2026-08-10",
"standing": "vessel-underway",
"berth": {
"status": "vessel-departed",
"berthsOpen": 0
}
},
"evidence": {
"vin": "4S4BTANCXS3232904",
"noun": "port",
"asOf": "2026-08-10",
"standing": "vessel-underway",
"berth": {
"status": "vessel-departed",
"berthsOpen": 0
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "freight-fleet-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}customsStatus
port.customsStatus · GET /ports/customs-status · gate none · sandbox · answers PortCustomsStatus@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /4S4BTANCXS3232904 (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 { port } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await port.customsStatus({"vin":"4S4BTANCXS3232904"})curl 'https://apis.vin/ports/customs-status?vin=4S4BTANCXS3232904'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": "PortCustomsStatus@1",
"value": {
"vin": "4S4BTANCXS3232904",
"noun": "port",
"asOf": "2026-08-10",
"standing": "vessel-underway",
"customs": {
"status": "cleared"
}
},
"evidence": {
"vin": "4S4BTANCXS3232904",
"noun": "port",
"asOf": "2026-08-10",
"standing": "vessel-underway",
"customs": {
"status": "cleared"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "freight-fleet-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}gateStatus
port.gateStatus · GET /ports/gate-status · gate none · sandbox · answers PortGateStatus@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /4S4BTANCXS3232904 (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 { port } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await port.gateStatus({"vin":"4S4BTANCXS3232904"})curl 'https://apis.vin/ports/gate-status?vin=4S4BTANCXS3232904'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": "PortGateStatus@1",
"value": {
"vin": "4S4BTANCXS3232904",
"noun": "port",
"asOf": "2026-08-10",
"standing": "vessel-underway",
"gate": {
"standing": "vessel-underway",
"held": false
}
},
"evidence": {
"vin": "4S4BTANCXS3232904",
"noun": "port",
"asOf": "2026-08-10",
"standing": "vessel-underway",
"gate": {
"standing": "vessel-underway",
"held": false
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "freight-fleet-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}containerTrack
port.containerTrack · GET /ports/container-track · gate none · sandbox · answers PortContainerTrack@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /4S4BTANCXS3232904 (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 { port } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await port.containerTrack({"vin":"4S4BTANCXS3232904"})curl 'https://apis.vin/ports/container-track?vin=4S4BTANCXS3232904'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": "PortContainerTrack@1",
"value": {
"vin": "4S4BTANCXS3232904",
"noun": "port",
"asOf": "2026-08-10",
"standing": "vessel-underway",
"container": {
"id": "CTR-5cc36bbe",
"standing": "vessel-underway",
"milesRemaining": 41
}
},
"evidence": {
"vin": "4S4BTANCXS3232904",
"noun": "port",
"asOf": "2026-08-10",
"standing": "vessel-underway",
"container": {
"id": "CTR-5cc36bbe",
"standing": "vessel-underway",
"milesRemaining": 41
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "freight-fleet-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Apply & book
book
port.book · POST /ports/book · gate offer · sandbox · answers PortBook@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) · /4S4BTANCXS3232904 (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 — Port.completed@1 · Port.dispatched@1 · Port.ordered@1 · ServiceOrder.settled@1.
import { port } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await port.book({"vin":"4S4BTANCXS3232904"})curl -X POST https://apis.vin/ports/book \
-H 'content-type: application/json' \
-d '{"vin":"4S4BTANCXS3232904"}'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": "PortBook@1",
"value": {
"vin": "4S4BTANCXS3232904",
"noun": "port",
"asOf": "2026-08-10",
"standing": "vessel-underway",
"booking": {
"id": "PB-b489282e",
"status": "booked",
"amountCents": 35000,
"currency": "USD"
}
},
"evidence": {
"vin": "4S4BTANCXS3232904",
"noun": "port",
"asOf": "2026-08-10",
"standing": "vessel-underway",
"booking": {
"id": "PB-b489282e",
"status": "booked",
"amountCents": 35000,
"currency": "USD"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "freight-fleet-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}stage
port.stage · POST /ports/stage · gate offer · sandbox · answers PortStage@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) · /4S4BTANCXS3232904 (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 — Port.stageRequested@1 · Port.staged@1.
import { port } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await port.stage({"vin":"4S4BTANCXS3232904"})curl -X POST https://apis.vin/ports/stage \
-H 'content-type: application/json' \
-d '{"vin":"4S4BTANCXS3232904"}'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": "PortStage@1",
"value": {
"vin": "4S4BTANCXS3232904",
"noun": "port",
"asOf": "2026-08-10",
"standing": "vessel-underway",
"staging": {
"status": "staged",
"area": "Y-4"
}
},
"evidence": {
"vin": "4S4BTANCXS3232904",
"noun": "port",
"asOf": "2026-08-10",
"standing": "vessel-underway",
"staging": {
"status": "staged",
"area": "Y-4"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "freight-fleet-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}vesselSchedule
port.vesselSchedule · GET /ports/vessel-schedule · gate none · sandbox · answers PortVesselSchedule@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /4S4BTANCXS3232904 (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 { port } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await port.vesselSchedule({"vin":"4S4BTANCXS3232904"})curl 'https://apis.vin/ports/vessel-schedule?vin=4S4BTANCXS3232904'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": "PortVesselSchedule@1",
"value": {
"vin": "4S4BTANCXS3232904",
"noun": "port",
"asOf": "2026-08-10",
"standing": "vessel-underway",
"schedule": {
"vessel": "VSL-7e254db5",
"nextSailingDate": "2026-08-17"
}
},
"evidence": {
"vin": "4S4BTANCXS3232904",
"noun": "port",
"asOf": "2026-08-10",
"standing": "vessel-underway",
"schedule": {
"vessel": "VSL-7e254db5",
"nextSailingDate": "2026-08-17"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "freight-fleet-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Pay & settle
pay
port.pay · POST /ports/pay · gate offer · sandbox · answers PortPay@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) · /4S4BTANCXS3232904 (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 — Port.paid@1 · Port.payFailed@1 · Port.payRequested@1.
import { port } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await port.pay({"vin":"4S4BTANCXS3232904"})curl -X POST https://apis.vin/ports/pay \
-H 'content-type: application/json' \
-d '{"vin":"4S4BTANCXS3232904"}'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": "PortPay@1",
"value": {
"vin": "4S4BTANCXS3232904",
"noun": "port",
"asOf": "2026-08-10",
"standing": "vessel-underway",
"payment": {
"id": "PAY-d5a85c63",
"status": "settled",
"amountCents": 35000,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "4S4BTANCXS3232904",
"noun": "port",
"asOf": "2026-08-10",
"standing": "vessel-underway",
"payment": {
"id": "PAY-d5a85c63",
"status": "settled",
"amountCents": 35000,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "freight-fleet-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}settle
port.settle · POST /ports/settle · gate offer · sandbox · answers PortSettle@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) · /4S4BTANCXS3232904 (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 — Port.settleFailed@1 · Port.settleRequested@1 · Port.settled@1.
import { port } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await port.settle({"vin":"4S4BTANCXS3232904"})curl -X POST https://apis.vin/ports/settle \
-H 'content-type: application/json' \
-d '{"vin":"4S4BTANCXS3232904"}'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": "PortSettle@1",
"value": {
"vin": "4S4BTANCXS3232904",
"noun": "port",
"asOf": "2026-08-10",
"standing": "vessel-underway",
"payment": {
"id": "PAY-bdf28624",
"status": "settled",
"amountCents": 35000,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "4S4BTANCXS3232904",
"noun": "port",
"asOf": "2026-08-10",
"standing": "vessel-underway",
"payment": {
"id": "PAY-bdf28624",
"status": "settled",
"amountCents": 35000,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "freight-fleet-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}discharge
port.discharge · POST /ports/discharge · gate offer · sandbox · answers PortDischarge@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) · /4S4BTANCXS3232904 (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 — Port.dischargeRequested@1 · Port.discharged@1.
import { port } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await port.discharge({"vin":"4S4BTANCXS3232904"})curl -X POST https://apis.vin/ports/discharge \
-H 'content-type: application/json' \
-d '{"vin":"4S4BTANCXS3232904"}'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": "PortDischarge@1",
"value": {
"vin": "4S4BTANCXS3232904",
"noun": "port",
"asOf": "2026-08-10",
"standing": "vessel-underway",
"discharge": {
"status": "not-arrived"
}
},
"evidence": {
"vin": "4S4BTANCXS3232904",
"noun": "port",
"asOf": "2026-08-10",
"standing": "vessel-underway",
"discharge": {
"status": "not-arrived"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "freight-fleet-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}demurrageBill
port.demurrageBill · POST /ports/demurrage-bill · gate offer · sandbox · answers PortDemurrageBill@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) · /4S4BTANCXS3232904 (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 — Port.demurrageBillRequested@1 · Port.demurrageBilled@1.
import { port } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await port.demurrageBill({"vin":"4S4BTANCXS3232904"})curl -X POST https://apis.vin/ports/demurrage-bill \
-H 'content-type: application/json' \
-d '{"vin":"4S4BTANCXS3232904"}'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": "PortDemurrageBill@1",
"value": {
"vin": "4S4BTANCXS3232904",
"noun": "port",
"asOf": "2026-08-10",
"standing": "vessel-underway",
"bill": {
"status": "no-demurrage",
"amountCents": 0,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "4S4BTANCXS3232904",
"noun": "port",
"asOf": "2026-08-10",
"standing": "vessel-underway",
"bill": {
"status": "no-demurrage",
"amountCents": 0,
"currency": "USD"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "freight-fleet-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}wharfageBill
port.wharfageBill · POST /ports/wharfage-bill · gate offer · sandbox · answers PortWharfageBill@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) · /4S4BTANCXS3232904 (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 — Port.wharfageBillRequested@1 · Port.wharfageBilled@1.
import { port } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await port.wharfageBill({"vin":"4S4BTANCXS3232904"})curl -X POST https://apis.vin/ports/wharfage-bill \
-H 'content-type: application/json' \
-d '{"vin":"4S4BTANCXS3232904"}'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": "PortWharfageBill@1",
"value": {
"vin": "4S4BTANCXS3232904",
"noun": "port",
"asOf": "2026-08-10",
"standing": "vessel-underway",
"bill": {
"id": "WH-0449c0ca",
"kind": "wharfage",
"amountCents": 12000,
"currency": "USD",
"status": "issued"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"evidence": {
"vin": "4S4BTANCXS3232904",
"noun": "port",
"asOf": "2026-08-10",
"standing": "vessel-underway",
"bill": {
"id": "WH-0449c0ca",
"kind": "wharfage",
"amountCents": 12000,
"currency": "USD",
"status": "issued"
},
"payer": {
"name": "Ava Good",
"castRow": "super-prime",
"creditTier": "super-prime"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "freight-fleet-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Authorize & resolve
customsClear
port.customsClear · POST /ports/customs-clear · gate offer · sandbox · answers PortCustomsClear@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) · /4S4BTANCXS3232904 (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 — Port.customsClearRequested@1 · Port.customsCleared@1.
import { port } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await port.customsClear({"vin":"4S4BTANCXS3232904"})curl -X POST https://apis.vin/ports/customs-clear \
-H 'content-type: application/json' \
-d '{"vin":"4S4BTANCXS3232904"}'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": "PortCustomsClear@1",
"value": {
"vin": "4S4BTANCXS3232904",
"noun": "port",
"asOf": "2026-08-10",
"standing": "vessel-underway",
"customs": {
"status": "cleared",
"entry": "EN-ed2463c9"
}
},
"evidence": {
"vin": "4S4BTANCXS3232904",
"noun": "port",
"asOf": "2026-08-10",
"standing": "vessel-underway",
"customs": {
"status": "cleared",
"entry": "EN-ed2463c9"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "freight-fleet-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Lifecycle & state
release
port.release · POST /ports/release · gate offer · sandbox · answers PortRelease@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) · /4S4BTANCXS3232904 (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 — Port.releaseFailed@1 · Port.releaseRequested@1 · Port.released@1.
import { port } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await port.release({"vin":"4S4BTANCXS3232904"})curl -X POST https://apis.vin/ports/release \
-H 'content-type: application/json' \
-d '{"vin":"4S4BTANCXS3232904"}'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": "PortRelease@1",
"value": {
"vin": "4S4BTANCXS3232904",
"noun": "port",
"asOf": "2026-08-10",
"standing": "vessel-underway",
"release": {
"status": "not-ready"
}
},
"evidence": {
"vin": "4S4BTANCXS3232904",
"noun": "port",
"asOf": "2026-08-10",
"standing": "vessel-underway",
"release": {
"status": "not-ready"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "freight-fleet-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}More actions
dwell
port.dwell · GET /ports/dwell · gate none · sandbox · answers PortDwell@1
| Field | Type | Required | Notes |
|---|---|---|---|
vin | string | no | — |
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /4S4BTANCXS3232904 (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 { port } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await port.dwell({"vin":"4S4BTANCXS3232904"})curl 'https://apis.vin/ports/dwell?vin=4S4BTANCXS3232904'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": "PortDwell@1",
"value": {
"vin": "4S4BTANCXS3232904",
"noun": "port",
"asOf": "2026-08-10",
"standing": "vessel-underway",
"dwell": {
"days": 0,
"freeDays": 2,
"accruing": false
}
},
"evidence": {
"vin": "4S4BTANCXS3232904",
"noun": "port",
"asOf": "2026-08-10",
"standing": "vessel-underway",
"dwell": {
"days": 0,
"freeDays": 2,
"accruing": false
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "freight-fleet-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}gateIn
port.gateIn · POST /ports/gate-in · gate offer · sandbox · answers PortGateIn@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) · /4S4BTANCXS3232904 (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 — Port.gateInRequested@1 · Port.gatedIn@1.
import { port } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await port.gateIn({"vin":"4S4BTANCXS3232904"})curl -X POST https://apis.vin/ports/gate-in \
-H 'content-type: application/json' \
-d '{"vin":"4S4BTANCXS3232904"}'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": "PortGateIn@1",
"value": {
"vin": "4S4BTANCXS3232904",
"noun": "port",
"asOf": "2026-08-10",
"standing": "vessel-underway",
"gate": {
"status": "already-processed"
}
},
"evidence": {
"vin": "4S4BTANCXS3232904",
"noun": "port",
"asOf": "2026-08-10",
"standing": "vessel-underway",
"gate": {
"status": "already-processed"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "freight-fleet-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}gateOut
port.gateOut · POST /ports/gate-out · gate offer · sandbox · answers PortGateOut@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) · /4S4BTANCXS3232904 (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 — Port.gateOutRequested@1 · Port.gatedOut@1.
import { port } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await port.gateOut({"vin":"4S4BTANCXS3232904"})curl -X POST https://apis.vin/ports/gate-out \
-H 'content-type: application/json' \
-d '{"vin":"4S4BTANCXS3232904"}'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": "PortGateOut@1",
"value": {
"vin": "4S4BTANCXS3232904",
"noun": "port",
"asOf": "2026-08-10",
"standing": "vessel-underway",
"gate": {
"status": "not-ready"
}
},
"evidence": {
"vin": "4S4BTANCXS3232904",
"noun": "port",
"asOf": "2026-08-10",
"standing": "vessel-underway",
"gate": {
"status": "not-ready"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "freight-fleet-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}loadVessel
port.loadVessel · POST /ports/load-vessel · gate offer · sandbox · answers PortLoadVessel@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) · /4S4BTANCXS3232904 (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 — Port.loadVesselRequested@1 · Port.vesselLoaded@1.
import { port } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await port.loadVessel({"vin":"4S4BTANCXS3232904"})curl -X POST https://apis.vin/ports/load-vessel \
-H 'content-type: application/json' \
-d '{"vin":"4S4BTANCXS3232904"}'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": "PortLoadVessel@1",
"value": {
"vin": "4S4BTANCXS3232904",
"noun": "port",
"asOf": "2026-08-10",
"standing": "vessel-underway",
"stow": {
"status": "already-sailed"
}
},
"evidence": {
"vin": "4S4BTANCXS3232904",
"noun": "port",
"asOf": "2026-08-10",
"standing": "vessel-underway",
"stow": {
"status": "already-sailed"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "freight-fleet-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}receive
port.receive · POST /ports/receive · gate offer · sandbox · answers PortReceive@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) · /4S4BTANCXS3232904 (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 — Port.receiveRequested@1 · Port.received@1.
import { port } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await port.receive({"vin":"4S4BTANCXS3232904"})curl -X POST https://apis.vin/ports/receive \
-H 'content-type: application/json' \
-d '{"vin":"4S4BTANCXS3232904"}'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": "PortReceive@1",
"value": {
"vin": "4S4BTANCXS3232904",
"noun": "port",
"asOf": "2026-08-10",
"standing": "vessel-underway",
"receipt": {
"status": "already-received"
}
},
"evidence": {
"vin": "4S4BTANCXS3232904",
"noun": "port",
"asOf": "2026-08-10",
"standing": "vessel-underway",
"receipt": {
"status": "already-received"
}
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "freight-fleet-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.
Transport
Generated from the catalog. Every capability, answer, gate, and entity on this page is a rendered descriptor — it cannot drift from the wire.