# Fulfillment Orders **Category:** Admin **Base URL:** `/admin/fulfillment` **Authentication:** Required **Routes:** 26 routes documented ## Overview This section documents 26 API routes for fulfillment orders. > ⚠️ **These endpoints operate on your live store.** `POST`/`PUT`/`DELETE` operations here — including sync, push, resync, and cache operations — modify or delete production data, and some trigger downstream effects such as warehouse orders or customer emails. `DELETE` operations are generally irreversible. Verify IDs and parameters carefully before calling them from scripts. ## Quick Reference | Method | Endpoint | Description | |--------|----------|-------------| | GET | `/admin/fulfillment` | No description | | GET | `/admin/fulfillment/:id` | No description | | GET | `/admin/fulfillment/alerts/assignments` | Current owner of every assigned check, plus the list of user... | | POST | `/admin/fulfillment/alerts/assignments` | Assign one check to a user, or clear it. Body: `{ check_id, ... | | GET | `/admin/fulfillment/alerts/rows` | The rows behind one alert: `GET ?check_id=`. Answers "wh... | | GET | `/admin/fulfillment/alerts/thresholds` | List every pipeline-health check with its effective threshol... | | POST | `/admin/fulfillment/alerts/thresholds` | Set or clear the override for one check. Body: `{ check_id, ... | | GET | `/admin/fulfillment/export` | No description | | GET | `/admin/fulfillment/export-csv` | No description | | GET | `/admin/fulfillment/health` | No description | | PUT | `/admin/fulfillment/hold` | No description | | POST | `/admin/fulfillment/import` | No description | | POST | `/admin/fulfillment/quickbox/push` | No description | | POST | `/admin/fulfillment/quickbox/sync` | No description | | GET | `/admin/fulfillment/quickbox/sync-status` | No description | | GET | `/admin/fulfillment/sku-aliases` | GET /admin/fulfillment/sku-aliases List all SKU aliases with... | | POST | `/admin/fulfillment/sku-aliases` | POST /admin/fulfillment/sku-aliases Create a new SKU alias B... | | GET | `/admin/fulfillment/sku-aliases/:id` | GET /admin/fulfillment/sku-aliases/:id Get a single SKU alia... | | PUT | `/admin/fulfillment/sku-aliases/:id` | PUT /admin/fulfillment/sku-aliases/:id Update an existing SK... | | DELETE | `/admin/fulfillment/sku-aliases/:id` | DELETE /admin/fulfillment/sku-aliases/:id Delete an SKU alia... | | POST | `/admin/fulfillment/sku-aliases/batch` | POST /admin/fulfillment/sku-aliases/batch Save a whole SKU m... | | GET | `/admin/fulfillment/stats` | No description | | GET | `/admin/orders/:id/activities` | GET /admin/orders/:id/activities Fetches all activities for ... | | GET | `/admin/orders/:id/notes` | GET /admin/orders/:id/notes Returns all notes for an order | | POST | `/admin/orders/:id/notes` | POST /admin/orders/:id/notes Add a new note to an order | | DELETE | `/admin/orders/:id/notes/:noteId` | DELETE /admin/orders/:id/notes/:noteId Delete a specific not... | | PUT | `/admin/orders/:id/notes/:noteId` | PUT /admin/orders/:id/notes/:noteId Update a specific note (... | | GET | `/admin/orders/:id/quickbox-events` | GET /admin/orders/:id/quickbox-events Fetch Quickbox shipmen... | | POST | `/admin/orders/:id/quickbox-pull` | POST /admin/orders/:id/quickbox-pull Safely PULL/REFRESH a s... | | POST | `/admin/orders/:id/quickbox-push` | POST /admin/orders/:id/quickbox-push Manually push a single ... | | POST | `/admin/orders/:id/resend-email` | POST /admin/orders/:id/resend-email Resend email notificatio... | | GET | `/admin/orders/:id/subscription-summary` | No description | | POST | `/admin/orders/export` | No description | --- ## GET Admin Fulfillment **Endpoint:** `GET /admin/fulfillment` **Authentication:** Admin (Required) ### Response **Error (500):** ```typescript { message, request_id, stage, error, } ``` ### Example Request ```bash curl -X GET 'https://your-store.omnicart.cc/admin/fulfillment' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## GET Admin Fulfillment :id **Endpoint:** `GET /admin/fulfillment/:id` **Authentication:** Admin (Required) ### URL Parameters | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `id` | string | Yes | Id identifier | ### Response **Success:** ```typescript { order, } ``` **Error (500):** ```typescript { message, error, } ``` ### Example Request ```bash curl -X GET 'https://your-store.omnicart.cc/admin/fulfillment/:id' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## GET Admin Fulfillment Alerts Assignments **Endpoint:** `GET /admin/fulfillment/alerts/assignments` **Authentication:** Admin (Required) ### Description Current owner of every assigned check, plus the list of users who can be assigned one. `assignments` is keyed by `check_id` and omits unassigned checks entirely — absence is the representation of "nobody owns this". Never 500s: if the settings table cannot be read it serves an empty map with `degraded: true`, because the Alerts page renders its findings from this same screen and must not go blank over a picker. ### Response **Success:** ```typescript { assignments, users, } ``` **Also returns:** ```typescript { assignments, users, degraded, } ``` ### Example Request ```bash curl -X GET 'https://your-store.omnicart.cc/admin/fulfillment/alerts/assignments' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## POST Admin Fulfillment Alerts Assignments **Endpoint:** `POST /admin/fulfillment/alerts/assignments` **Authentication:** Admin (Required) ### Description Assign one check to a user, or clear it. Body: `{ check_id, user_id }`. A `user_id` of `null` (or omitted) clears the assignment. The id is validated against the live user list before it is stored, so a stale picker cannot pin a check on an account that no longer exists. Returns the full updated assignment map. An unknown check or user is a 400, never a silently ignored write. ### Request Body This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body. ### Response **Success:** ```typescript { assignments, } ``` **Also returns:** ```typescript { message, } ``` **Error (400):** ```typescript { message, } ``` **Error (400):** ```typescript { message, } ``` ### Example Request ```bash curl -X POST 'https://your-store.omnicart.cc/admin/fulfillment/alerts/assignments' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## GET Admin Fulfillment Alerts Rows **Endpoint:** `GET /admin/fulfillment/alerts/rows` **Authentication:** Admin (Required) ### Description The rows behind one alert: `GET ?check_id=`. Answers "which orders?" for a check that otherwise reports only a count. Returns 400 without a `check_id`, 404 for an id not in the registry, and 200 with `error` set for anything that fails while reading — never a 500, because the Alerts page renders this inline and a thrown response would blank the panel. Rows are capped; `total` carries the true count so a capped sample can never be mistaken for the whole set. ### Response **Success:** ```typescript { check_id, columns, rows, total, truncated, note, error, } ``` **Error (400):** ```typescript { message, } ``` **Error (404):** ```typescript { message, } ``` ### Example Request ```bash curl -X GET 'https://your-store.omnicart.cc/admin/fulfillment/alerts/rows' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## GET Admin Fulfillment Alerts Thresholds **Endpoint:** `GET /admin/fulfillment/alerts/thresholds` **Authentication:** Admin (Required) ### Description List every pipeline-health check with its effective threshold and on/off state. Returns the registry merged with any stored overrides, so a check that has never been customised still appears with its default. Each row carries the label, description, unit and observed normal range the admin UI renders from — the bundle holds no copy of its own. Never 500s: if the settings table is unreadable it serves registry defaults with `degraded: true`, because the Alerts page must still render its findings. ### Response **Success:** ```typescript { checks, } ``` **Also returns:** ```typescript { checks, degraded, } ``` ### Example Request ```bash curl -X GET 'https://your-store.omnicart.cc/admin/fulfillment/alerts/thresholds' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## POST Admin Fulfillment Alerts Thresholds **Endpoint:** `POST /admin/fulfillment/alerts/thresholds` **Authentication:** Admin (Required) ### Description Set or clear the override for one check. Body: `{ check_id, value?, enabled?, reset? }`. `value` retunes the number, `enabled` mutes or unmutes the check, and `reset: true` deletes the row so the check returns to its registry default. Omitting `value` leaves the stored number alone, which is the only legal shape for a presence check. Takes effect within ~30s with no deploy. Returns the full updated list. Invalid input is a 400, never a silently ignored write. ### Request Body This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body. ### Response **Success:** ```typescript { checks, } ``` **Also returns:** ```typescript { message, } ``` **Error (400):** ```typescript { message, } ``` ### Example Request ```bash curl -X POST 'https://your-store.omnicart.cc/admin/fulfillment/alerts/thresholds' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## GET Admin Fulfillment Export **Endpoint:** `GET /admin/fulfillment/export` **Authentication:** Admin (Required) ### Response **Success:** ```typescript { success, message, count, } ``` **Error (500):** ```typescript { success, error, } ``` ### Example Request ```bash curl -X GET 'https://your-store.omnicart.cc/admin/fulfillment/export' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## GET Admin Fulfillment Export-csv **Endpoint:** `GET /admin/fulfillment/export-csv` **Authentication:** Admin (Required) ### Response **Error (500):** ```typescript { success, error, } ``` ### Example Request ```bash curl -X GET 'https://your-store.omnicart.cc/admin/fulfillment/export-csv' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## GET Admin Fulfillment Health **Endpoint:** `GET /admin/fulfillment/health` **Authentication:** Admin (Required) ### Response **Success:** ```typescript { ...payload findings, alert_label, } ``` ### Example Request ```bash curl -X GET 'https://your-store.omnicart.cc/admin/fulfillment/health' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## PUT Admin Fulfillment Hold **Endpoint:** `PUT /admin/fulfillment/hold` **Authentication:** Admin (Required) ### Request Body This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body. ### Response **Success:** ```typescript { success, message, results, } ``` **Error (400):** ```typescript { error, } ``` ### Example Request ```bash curl -X PUT 'https://your-store.omnicart.cc/admin/fulfillment/hold' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## POST Admin Fulfillment Import **Endpoint:** `POST /admin/fulfillment/import` **Authentication:** Admin (Required) ### Request Body This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body. ### Response **Success:** ```typescript { success, message, results, summary, } ``` **Also returns:** ```typescript { success, dry_run, message, results, summary, } ``` **Error (400):** ```typescript { success, error, } ``` **Error (400):** ```typescript { success, error, } ``` ### Example Request ```bash curl -X POST 'https://your-store.omnicart.cc/admin/fulfillment/import' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## POST Admin Fulfillment Quickbox Push **Endpoint:** `POST /admin/fulfillment/quickbox/push` **Authentication:** Admin (Required) ### Request Body This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body. ### Response **Success:** ```typescript { success, dry_run, message, results, summary, } ``` **Also returns:** ```typescript { success, dry_run, message, results, summary, } ``` **Error (400):** ```typescript { success, error, } ``` **Error (500):** ```typescript { success, error, } ``` ### Example Request ```bash curl -X POST 'https://your-store.omnicart.cc/admin/fulfillment/quickbox/push' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## POST Admin Fulfillment Quickbox Sync **Endpoint:** `POST /admin/fulfillment/quickbox/sync` **Authentication:** Admin (Required) ### Request Body This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body. ### Response **Success:** ```typescript { success, dry_run, message, results, summary, } ``` **Also returns:** ```typescript { success, dry_run, message, results, summary, } ``` **Error (400):** ```typescript { success, error, } ``` **Error (500):** ```typescript { success, error, } ``` ### Example Request ```bash curl -X POST 'https://your-store.omnicart.cc/admin/fulfillment/quickbox/sync' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## GET Admin Fulfillment Quickbox Sync-status **Endpoint:** `GET /admin/fulfillment/quickbox/sync-status` **Authentication:** Admin (Required) ### Response **Success:** ```typescript { pull, push, metrics, metricsPending, schedules, } ``` ### Example Request ```bash curl -X GET 'https://your-store.omnicart.cc/admin/fulfillment/quickbox/sync-status' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## GET Admin Fulfillment Sku-aliases **Endpoint:** `GET /admin/fulfillment/sku-aliases` **Authentication:** Admin (Required) ### Description GET /admin/fulfillment/sku-aliases List all SKU aliases with optional filters Query params: - stock_location_id: Filter by warehouse/location - warehouse_sku: Filter by warehouse SKU (partial match) - omni_sku: Filter by OmniCart SKU (partial match) - needs_review: Filter to only show aliases needing review - is_verified: Filter to only show verified aliases - group_bundles: Group by (omni_sku, stock_location_id) so a bundle shows as one row with all its warehouse SKUs. Grouping includes the location: the same catalog SKU mapped at two warehouses stays two rows, otherwise saving the merged row rewrites every member onto the first member's location. - limit: Pagination limit (default 50) - offset: Pagination offset (default 0) When needs_review, is_verified or warehouse_sku narrows the result *within* a group, the grouped view still returns the whole group — each component carries `matches_filter` — so the review modal can show the verified mapping a correction would collide with. ### Response **Success:** ```typescript { aliases, count, total_mappings, limit, offset, grouped, bundle_summary, } ``` **Also returns:** ```typescript { aliases, count, limit, offset, grouped, bundle_summary, } ``` ### Example Request ```bash curl -X GET 'https://your-store.omnicart.cc/admin/fulfillment/sku-aliases' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## POST Admin Fulfillment Sku-aliases **Endpoint:** `POST /admin/fulfillment/sku-aliases` **Authentication:** Admin (Required) ### Description POST /admin/fulfillment/sku-aliases Create a new SKU alias Body: - warehouse_sku: The warehouse/3PL SKU (required) - omni_sku: The OmniCart variant SKU (required) - stock_location_id: The stock location ID (required) - variant_id: Optional variant ID for caching - notes: Optional notes - needs_review: Optional flag for review workflow - is_verified: Optional flag for verified aliases - recommendation: Optional system recommendation - match_confidence: Optional confidence score (0-100) - order_count: Optional order count for reference ### Request Body This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body. ### Response **Success (201):** ```typescript { alias, } ``` ### Example Request ```bash curl -X POST 'https://your-store.omnicart.cc/admin/fulfillment/sku-aliases' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## GET Admin Fulfillment Sku-aliases :id **Endpoint:** `GET /admin/fulfillment/sku-aliases/:id` **Authentication:** Admin (Required) ### Description GET /admin/fulfillment/sku-aliases/:id Get a single SKU alias by ID ### URL Parameters | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `id` | string | Yes | Id identifier | ### Response **Success:** ```typescript { alias, } ``` ### Example Request ```bash curl -X GET 'https://your-store.omnicart.cc/admin/fulfillment/sku-aliases/:id' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## PUT Admin Fulfillment Sku-aliases :id **Endpoint:** `PUT /admin/fulfillment/sku-aliases/:id` **Authentication:** Admin (Required) ### Description PUT /admin/fulfillment/sku-aliases/:id Update an existing SKU alias Body: - warehouse_sku: Optional updated warehouse SKU - omni_sku: Optional updated OmniCart SKU - stock_location_id: Optional updated location ID - variant_id: Optional variant ID - notes: Optional notes - needs_review: Optional review flag - is_verified: Optional verified flag - recommendation: Optional system recommendation - match_confidence: Optional confidence score - order_count: Optional order count ### URL Parameters | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `id` | string | Yes | Id identifier | ### Request Body This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body. ### Response **Success:** ```typescript { alias, } ``` ### Example Request ```bash curl -X PUT 'https://your-store.omnicart.cc/admin/fulfillment/sku-aliases/:id' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## DELETE Admin Fulfillment Sku-aliases :id **Endpoint:** `DELETE /admin/fulfillment/sku-aliases/:id` **Authentication:** Admin (Required) ### Description DELETE /admin/fulfillment/sku-aliases/:id Delete an SKU alias ### URL Parameters | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `id` | string | Yes | Id identifier | ### Response **Success (200):** ```typescript { success, id, } ``` ### Example Request ```bash curl -X DELETE 'https://your-store.omnicart.cc/admin/fulfillment/sku-aliases/:id' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## POST Admin Fulfillment Sku-aliases Batch **Endpoint:** `POST /admin/fulfillment/sku-aliases/batch` **Authentication:** Admin (Required) ### Description POST /admin/fulfillment/sku-aliases/batch Save a whole SKU mapping group in one transaction. The admin modal edits one catalog SKU at one stock location together with all of its warehouse SKUs. Sending that as a series of DELETE/PUT/POST calls from the browser meant a failure halfway through left rows already deleted. This endpoint applies every create, update and delete atomically. Body: - omni_sku: catalog SKU for the group (required) - stock_location_id: stock location for the group (required) - warehouse_skus: [{ id?, warehouse_sku, notes? }] (required, min 1) - existing_ids: ids the group had when the modal opened; dropped ones are deleted - variant_id: optional variant id - mark_verified: clear needs_review and stamp is_verified (reviewing a flagged group) - resolve_conflicts: delete the redundant row instead of returning 409 Returns 409 with `code: "duplicate_mapping"` and a `conflicts` array when a submitted mapping already exists on another row. Resubmitting with `resolve_conflicts: true` drops the redundant row instead. ### Request Body This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body. ### Response The handler does not return an object literal, so the response shape is not derivable from the source. ### Example Request ```bash curl -X POST 'https://your-store.omnicart.cc/admin/fulfillment/sku-aliases/batch' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## GET Admin Fulfillment Stats **Endpoint:** `GET /admin/fulfillment/stats` **Authentication:** Admin (Required) ### Response **Success:** ```typescript { stats, pending, } ``` ### Example Request ```bash curl -X GET 'https://your-store.omnicart.cc/admin/fulfillment/stats' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## GET Admin Orders :id Activities **Endpoint:** `GET /admin/orders/:id/activities` **Authentication:** Admin (Required) ### Description GET /admin/orders/:id/activities Fetches all activities for a specific order, ordered by most recent first. Used by the Order Activity Timeline widget. ### URL Parameters | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `id` | string | Yes | Id identifier | ### Response **Success:** ```typescript { activities, count, offset, limit, } ``` **Error (500):** ```typescript { error, message, } ``` ### Example Request ```bash curl -X GET 'https://your-store.omnicart.cc/admin/orders/:id/activities' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## GET Admin Orders :id Notes **Endpoint:** `GET /admin/orders/:id/notes` **Authentication:** Admin (Required) ### Description GET /admin/orders/:id/notes Returns all notes for an order ### URL Parameters | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `id` | string | Yes | Id identifier | ### Response **Success:** ```typescript { notes, } ``` **Error (404):** ```typescript { error, message, } ``` **Error (500):** ```typescript { error, message, } ``` ### Example Request ```bash curl -X GET 'https://your-store.omnicart.cc/admin/orders/:id/notes' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## POST Admin Orders :id Notes **Endpoint:** `POST /admin/orders/:id/notes` **Authentication:** Admin (Required) ### Description POST /admin/orders/:id/notes Add a new note to an order ### URL Parameters | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `id` | string | Yes | Id identifier | ### Request Body This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body. ### Response **Success:** ```typescript { note, notes, } ``` **Error (400):** ```typescript { error, message, } ``` **Error (404):** ```typescript { error, message, } ``` **Error (500):** ```typescript { error, message, } ``` ### Example Request ```bash curl -X POST 'https://your-store.omnicart.cc/admin/orders/:id/notes' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## DELETE Admin Orders :id Notes :noteId **Endpoint:** `DELETE /admin/orders/:id/notes/:noteId` **Authentication:** Admin (Required) ### Description DELETE /admin/orders/:id/notes/:noteId Delete a specific note from an order ### URL Parameters | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `id` | string | Yes | Id identifier | | `noteId` | string | Yes | NoteId identifier | ### Response **Success:** ```typescript { success, notes, } ``` **Error (404):** ```typescript { error, message, } ``` **Error (404):** ```typescript { error, message, } ``` **Error (500):** ```typescript { error, message, } ``` ### Example Request ```bash curl -X DELETE 'https://your-store.omnicart.cc/admin/orders/:id/notes/:noteId' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## PUT Admin Orders :id Notes :noteId **Endpoint:** `PUT /admin/orders/:id/notes/:noteId` **Authentication:** Admin (Required) ### Description PUT /admin/orders/:id/notes/:noteId Update a specific note (content only) ### URL Parameters | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `id` | string | Yes | Id identifier | | `noteId` | string | Yes | NoteId identifier | ### Request Body This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body. ### Response **Success:** ```typescript { note, notes, } ``` **Error (400):** ```typescript { error, message, } ``` **Error (404):** ```typescript { error, message, } ``` **Error (404):** ```typescript { error, message, } ``` **Error (500):** ```typescript { error, message, } ``` ### Example Request ```bash curl -X PUT 'https://your-store.omnicart.cc/admin/orders/:id/notes/:noteId' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## GET Admin Orders :id Quickbox-events **Endpoint:** `GET /admin/orders/:id/quickbox-events` **Authentication:** Admin (Required) ### Description GET /admin/orders/:id/quickbox-events Fetch Quickbox shipment events/history for an order. Returns shipments and their delivery status from Quickbox. Supports both Order Manager and Warehouse Manager APIs. ### URL Parameters | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `id` | string | Yes | Id identifier | ### Response **Success:** ```typescript { success, synced, quickbox_order_id, events, message, searched_refs, } ``` **Also returns:** ```typescript { success, synced, quickbox_order_id, events, message, } ``` **Also returns:** ```typescript { success, synced, quickbox_order_id, quickbox_reference, quickbox_order_number, quickbox_synced_at, events, } ``` **Also returns:** ```typescript { success, error, events, } ``` **Error (400):** ```typescript { success, error, } ``` **Error (404):** ```typescript { success, error, } ``` ### Example Request ```bash curl -X GET 'https://your-store.omnicart.cc/admin/orders/:id/quickbox-events' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## POST Admin Orders :id Quickbox-pull **Endpoint:** `POST /admin/orders/:id/quickbox-pull` **Authentication:** Admin (Required) ### Description POST /admin/orders/:id/quickbox-pull Safely PULL/REFRESH a single order from QuickBox (WMS API only). - Looks the order up in QuickBox using all known reference formats - Refreshes the QuickBox lifecycle status/metadata - NATIVE orders: pulls tracking + creates the OmniCart fulfillment if it shipped - KONNEKTIVE orders: lifecycle/metadata refresh ONLY — never creates a fulfillment (Konnektive's own sync owns fulfillment; creating one here risks a double-ship/double-email). ⚠️ This NEVER creates the order in QuickBox. For create-if-absent behavior, use POST /admin/orders/:id/quickbox-push instead. ts, which already performs the pull/stamp/fulfill flow WITHOUT creating. ⚠️ Prices are DECIMALS (19.99 = $19.99). Do NOT divide by 100. ### URL Parameters | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `id` | string | Yes | Id identifier | ### Request Body This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body. ### Response **Success:** ```typescript { success, status, quickbox_order_id, quickbox_reference, tracking_number, message, } ``` **Error (400):** ```typescript { success, error, } ``` **Error (404):** ```typescript { success, error, } ``` **Error (400):** ```typescript { success, error, } ``` **Error (500):** ```typescript { success, error, } ``` ### Example Request ```bash curl -X POST 'https://your-store.omnicart.cc/admin/orders/:id/quickbox-pull' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## POST Admin Orders :id Quickbox-push **Endpoint:** `POST /admin/orders/:id/quickbox-push` **Authentication:** Admin (Required) ### Description POST /admin/orders/:id/quickbox-push Manually push a single order to QuickBox (WMS API only). - If order exists in QuickBox with tracking → create fulfillment in OmniCart - If order does not exist → create it in QuickBox ⚠️ Prices are DECIMALS (19.99 = $19.99). Do NOT divide by 100. ### URL Parameters | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `id` | string | Yes | Id identifier | ### Request Body This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body. ### Response **Success:** ```typescript { success, api_type, action, quickbox_order_id, quickbox_reference, status, tracking, } ``` **Also returns:** ```typescript { success, api_type, action, quickbox_order_id, quickbox_reference, status, tracking, fulfillment, } ``` **Error (400):** ```typescript { success, error, } ``` **Error (404):** ```typescript { success, error, } ``` **Error (400):** ```typescript { success, error, } ``` **Error (400):** ```typescript { success, error, } ``` **Error (400):** ```typescript { success, error, error_code, missing_sku, searched_refs, } ``` **Error (500):** ```typescript { success, error, } ``` ### Example Request ```bash curl -X POST 'https://your-store.omnicart.cc/admin/orders/:id/quickbox-push' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## POST Admin Orders :id Resend-email **Endpoint:** `POST /admin/orders/:id/resend-email` **Authentication:** Admin (Required) ### Description POST /admin/orders/:id/resend-email Resend email notifications for an order Supports: order-placed, order-shipped, order-delivered, refund-processed Note: order-confirmed workflow exists but is not exposed in the widget UI ### URL Parameters | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `id` | string | Yes | Id identifier | ### Request Body This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body. ### Response **Success:** ```typescript { success, emailType, result, } ``` **Error (500):** ```typescript { success, error, } ``` ### Example Request ```bash curl -X POST 'https://your-store.omnicart.cc/admin/orders/:id/resend-email' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## GET Admin Orders :id Subscription-summary **Endpoint:** `GET /admin/orders/:id/subscription-summary` **Authentication:** Admin (Required) ### URL Parameters | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `id` | string | Yes | Id identifier | ### Response The handler does not return an object literal, so the response shape is not derivable from the source. ### Example Request ```bash curl -X GET 'https://your-store.omnicart.cc/admin/orders/:id/subscription-summary' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## POST Admin Orders Export **Endpoint:** `POST /admin/orders/export` **Authentication:** Admin (Required) ### Request Body This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body. ### Response **Success (202):** ```typescript { transaction_id, } ``` **Error (400):** ```typescript { message, } ``` ### Example Request ```bash curl -X POST 'https://your-store.omnicart.cc/admin/orders/export' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` ---