Skip to content

Dealer desk & back office

Beyond the Tenant API (/v1/*), Caravan exposes two operator realms. Machine clients reach them with a realm key; people reach the same routes through the browser console with a passkey session and the right role (see Authentication → The console). This page is an orientation map, not a field-level reference — the full, always-current shapes are in the API explorer.

Dealer desk — /broker/v1/*

The brokerage's back office: review the order queue, execute or reject orders, approve funding, and read the blotter, exposure, accounts, and end-of-day summary. Machine auth is X-Console-Key; a human dealer uses a dealer-persona session. Write actions are grant-gated (orders:execute, funding:approve) and money actions require a step-up-fresh session.

EndpointPurposeGrant
GET /broker/v1/queueorders awaiting executionqueue:read
POST /broker/v1/queue/{id}/executeexecute a queued orderorders:execute
POST /broker/v1/queue/{id}/rejectreject a queued orderorders:execute
GET /broker/v1/fundingfunding requests awaiting approvalfunding:read
POST /broker/v1/funding/{id}/approveapprove a funding requestfunding:approve
POST /broker/v1/funding/{id}/rejectreject a funding requestfunding:approve
GET /broker/v1/blotterexecution blotterblotter:read
GET /broker/v1/exposureaggregate broker exposureexposure:read
GET /broker/v1/accountsaccounts opened at this brokerexposure:read
GET /broker/v1/eodend-of-day reconciliation summaryeod:read
GET /broker/v1/reference/*dealer-view instruments / bondsreference:read
GET /broker/v1/markets/{m}/instruments/{s}/bookL2 order-book depthorderbook:read

Back office — /admin/*

Platform operations: tenant and broker provisioning, reconciliation, surveillance alerts, complaints, audit verification, key rotation, market-data oversight, and IAM. Machine auth is X-Admin-Key; a human operator uses an ops-persona session.

Two-person (maker–checker) actions

Money- and access-affecting changes follow a two-person rule, enforced in the database (maker ≠ checker):

EndpointPurpose
POST /admin/actionspropose a privileged change (grant <base>:propose)
POST /admin/actions/{id}/approveapprove & execute as a different admin (grant <base>:approve, step-up)
GET /admin/actionslist proposed / approved actions

The bases under the strict split include ledger:adjust, broker:create, fee-schedule:update, binding:update, keys:rotate-kek / rotate-dek, console-users:manage / :disable, console-roles:assign, passkey:unlock, break-glass, idp-config:update, corp-action:process, and marketdata:replay. The security role is the designated maker; approver signs off; no single non-superuser role holds both sides.

IAM & access governance (SOC2 track)

EndpointPurpose
GET /admin/access-reviewcurrent access snapshot (who holds what)
POST /admin/access-reviewsopen a periodic access-review campaign (access-review:open)
POST /admin/access-reviews/{id}/decisionsrecord certify/revoke decisions (access-review:decide)
GET /admin/sessionslist console sessions
POST /admin/sessions/revokerevoke console sessions (sessions:revoke)
GET /admin/audit / GET /admin/audit/verifyread and cryptographically verify the hash-chained audit log

Least privilege by role. Authority comes from a fine-grained role → grant catalog scoped to global / a tenant / a broker — never from which key a caller holds. Cross-tenant and cross-broker access is impossible by construction. See Authentication.

Sandbox controls — /admin/sandbox/*

In the sandbox only, POST /admin/sandbox/* endpoints drive the simulation — advance the clock, set a quote or NAV, halt a symbol, toggle auto-fill, inject a reconciliation break, or declare a dividend. These are sandbox machine-key (X-Admin-Key) operations, available because the sandbox has no real users or money. See Environments.

Embedded investing infrastructure for the Egyptian Exchange. Sandbox runs on simulated money.