Ciklek

Parts API

Manage parts (blades, scissors, saws, etc.) registered to your account.

Required scope: parts:read for GET, parts:write for POST/PATCH

List Parts

GET /v1/parts

Query Parameters

| Param | Type | Description | |-------|------|-------------| | status | string | Filter by status: with_customer, in_service, etc. | | part_type | string | Filter by type: blade, scissor, saw, etc. | | limit | integer | Results per page (default 25, max 100) | | after | string | Cursor for next page |

Response

{
  "data": [
    {
      "id": "part_abc123",
      "part_type": "blade",
      "status": "with_customer",
      "wear_level": 8,
      "sharpening_count": 12,
      "internal_label": "Line 3 Slicer",
      "serial_number": "SN-20240101",
      "created_at": "2025-01-15T10:00:00Z",
      "last_serviced_at": "2026-02-01T14:30:00Z"
    }
  ],
  "meta": { "total": 42, "next_cursor": "cursor_xyz" }
}

Get a Part

GET /v1/parts/:id

Returns the full part record including service history.

Create a Part

POST /v1/parts

Body

{
  "part_type": "blade",
  "internal_label": "Line 4 Knife B",
  "serial_number": "SN-20250301",
  "manufacturer": "Victorinox",
  "model": "40512"
}

Response 201 Created — the new part object.

Update a Part

PATCH /v1/parts/:id

Updatable fields: internal_label, serial_number, manufacturer, model.

Part Service History

GET /v1/parts/:id/history

Returns all service events for this part:

{
  "data": [
    {
      "id": "history_001",
      "service_type": "sharpening",
      "wear_before": 5,
      "wear_after": 9,
      "technician_notes": "Light edge chipping, corrected.",
      "completed_at": "2026-01-20T11:00:00Z"
    }
  ]
}

Part Statuses (Reference)

with_customer → pickup_scheduled → in_transit_to_center
→ at_service_center → in_transit_back → delivered → with_customer

A part can also move to retired from any status.