Skip to Content
Welcome to Zendera Knowledge Hub
For DevelopersOrder Drafts

Order Drafts API

v1

List, read, complete, and delete order drafts — incomplete imported orders waiting for the data they're missing.

An order draft is an order that arrived incomplete. When an import can’t be turned into a real order — missing customer, order type, vehicle type, or valid stops — Zendera stores it as a draft instead of rejecting it outright. Drafts sit in a worklist until someone (or something) completes them.

There is no POST. Drafts are created as a side effect of order import; this API manages the queue they land in.

Where this fits in your operation

  • Work the exception queue programmatically: your integration polls the draft list, enriches drafts with the data your ERP has (customer ID, order type), and PUTs them back — completed drafts turn into real orders automatically.
  • Clean up dead drafts: imports that will never complete (cancelled in your system) get DELETEd instead of lingering.
  • Pre-book before finalising: drafts can be booked on schedule intervals while still incomplete.

Interactive API Explorer

Loading API Documentation...

Authentication

Authorization: apikey YOUR_API_KEY_HERE

Base URLs

  • Production: https://app.zenderatms.com/api/
  • Staging: https://staging.zenderatms.com/api/

Endpoints

List drafts

GET /v1/draft/orders

Returns all drafts in your organization — there is no pagination or filtering. 204 No Content when there are none. Each draft carries the order fields it has so far (internal_order_number, customer_id/customer_name, order_type_id/order_type_name, vehicle_type_id/vehicle_type_name, …), its order_location_drafts and order_product_drafts, an optional route_schedule_booking, and a checksum.

Get one draft

GET /v1/draft/orders/{orderDraftID}204 when not found.

Update a draft — and promote it

PUT /v1/draft/orders/{orderDraftID}

Send the draft back with the missing pieces filled in. When the draft becomes complete, it is automatically promoted to a real order: the order is created and priced, attached documents move over, and the draft is deleted. Complete means: customer, order type, and vehicle type resolvable (by ID or name), and a valid pickup + delivery pair with time windows.

If it’s still incomplete after your update, it stays a draft with the new data — nothing is lost.

Concurrent-edit protection via checksum. Echo back the checksum you read; if someone changed the draft in the meantime you get 409 Conflict. Set "checksum_override": true to overwrite regardless.

Delete a draft

DELETE /v1/draft/orders/{orderDraftID} — hard delete; 204 when not found.

Common gotchas

  • Promotion is implicit. There is no separate “finalize” call — a successful PUT of a complete draft is the promotion, and the draft ID stops existing afterwards.
  • The list is unpaginated. If your organization accumulates many drafts, work the queue down rather than letting it grow.
  • snake_case JSON (v1 endpoint).
  • Names can stand in for IDs. A draft resolves customer/order type/vehicle type by ID or by exact name match at promotion time.
Last updated on