Skip to main content

Developers — the Tenant API

If your business runs a marketplace, restaurant platform, shop or enterprise system, you connect to IDM as a tenant. Your system owns the order. IDM owns the movement: it tells you whether an item can be moved from here to there, at what verified price, by whom, and where it is right now.

Everything goes through one versioned HTTP API under /v1. Intellisol's own apps use the same API, so there is no side door with features you cannot reach.

The shape of an integration​

your system IDM
─────────── ───
1. resolve the pickup and drop-off ───────▶ suburb, zone, gateway
2. ask for a quote ───────▶ QT-… with fee, expiry, pricing version
3. confirm the quote ───────▶ DX-… delivery job (exactly one)
4. listen for webhooks ◀─────── delivery.assigned, delivery.picked_up, …
5. read the job when you need truth ───────▶ authoritative state
  1. Get started: credentials, environments and your first delivery.
  2. Authentication: how to sign every request, with code in Node.js, Python, Go and shell.
  3. Idempotency: how to retry safely so nothing happens twice.
  4. Quotes and jobs: pricing, confirmation and what you can rely on.
  5. Tracking and events: reading state and history.
  6. Webhooks: receiving events, verifying signatures, replay.
  7. Cancel, reassign and complete: changing a delivery after it is booked.
  8. Bulk deliveries: one pickup, two to five recipients.
  9. Errors: the error body and what to do with each kind of error.
  10. Limits and pagination: rate limits, page cursors and sizes.

The API reference lists every operation with its scope, idempotency rule, request and response fields. It is generated from the same OpenAPI contract the server is tested against, so it cannot drift from the system.

Rules the API keeps for you​

  • The server decides every price. You never send a fee, distance, status, rider, zone, classification, tenant or partner. A body that contains any of these fields, at any depth, is refused with SERVER_CONTROLLED_FIELD.
  • Public references only. Every object has an opaque reference such as DX-7K3M9QPT (delivery), QT-… (quote), BK-… (Bulk), WHK-… (webhook). Database IDs never appear.
  • Exactly once. A confirmed quote becomes one job, whatever you retry. See Idempotency.
  • Webhooks notify; the API is the truth. When an event arrives, read the job before you act on anything important.
  • Your data stays yours. A reference that belongs to another tenant answers exactly like one that does not exist.
  • Additive changes only. Inside /v1 fields and endpoints are only ever added. Nothing is removed, renamed or changes type. Ignore fields you do not know.