Ciklek

Orders API

Create and track service orders (pickup + sharpening + delivery).

Required scope: orders:read for GET, orders:write for POST

List Orders

GET /v1/orders

Query Parameters

| Param | Type | Description | |-------|------|-------------| | status | string | Filter: pending, scheduled, in_service, completed, etc. | | from | ISO date | Created at or after this date | | to | ISO date | Created at or before this date | | limit | integer | Default 25, max 100 | | after | string | Cursor for next page |

Response

{
  "data": [
    {
      "id": "ord_abc123",
      "order_number": "BS-2026-0042",
      "status": "in_service",
      "part_count": 8,
      "total_cents": 19200,
      "pickup_date": "2026-03-10T09:00:00Z",
      "expected_return_date": "2026-03-12T17:00:00Z",
      "created_at": "2026-03-08T14:00:00Z"
    }
  ],
  "meta": { "total": 12, "next_cursor": null }
}

Get an Order

GET /v1/orders/:id

Returns the full order including part list and status timeline.

Create an Order

POST /v1/orders

Body

{
  "part_ids": ["part_abc123", "part_def456"],
  "pickup_window_start": "2026-03-15T08:00:00Z",
  "pickup_window_end": "2026-03-15T12:00:00Z",
  "instructions": "Leave with reception if no one available"
}

Response 201 Created

{
  "data": {
    "id": "ord_xyz789",
    "order_number": "BS-2026-0043",
    "status": "pending",
    ...
  }
}

Order Status Timeline

GET /v1/orders/:id/timeline
{
  "data": [
    { "status": "pending",   "occurred_at": "2026-03-08T14:00:00Z", "actor": "api" },
    { "status": "scheduled", "occurred_at": "2026-03-09T09:00:00Z", "actor": "ops" },
    { "status": "picked_up", "occurred_at": "2026-03-10T09:15:00Z", "actor": "driver" }
  ]
}