openapi: 3.0.3 info: title: Order Desk Inventory Items Shipments API description: The Order Desk API is a JSON REST API for programmatically managing an Order Desk store - an ecommerce order management and fulfillment routing platform. It exposes Orders, Order Items, Shipments, Inventory Items, and Store settings, plus batch and utility endpoints. Every request must include two headers, ORDERDESK-STORE-ID and ORDERDESK-API-KEY, which are found in the Order Desk dashboard under Store Settings then API. List endpoints support limit (default 50, max 500) and offset pagination and return a status field with pagination metadata. The API is rate limited with a leaky-bucket limiter (~100 requests per rolling 30-second window). version: '2.0' contact: name: Order Desk url: https://www.orderdesk.com license: name: Proprietary url: https://www.orderdesk.com/terms/ servers: - url: https://app.orderdesk.me/api/v2 description: Order Desk API v2 security: - storeId: [] apiKey: [] tags: - name: Shipments description: Record and manage shipments and tracking against an order. paths: /orders/{order_id}/shipments: parameters: - $ref: '#/components/parameters/OrderId' get: operationId: listShipments tags: - Shipments summary: List shipments description: Returns all shipments recorded against an order. responses: '200': description: A list of shipments. content: application/json: schema: type: object properties: status: type: string shipments: type: array items: $ref: '#/components/schemas/Shipment' '401': $ref: '#/components/responses/Unauthorized' post: operationId: createShipment tags: - Shipments summary: Create a shipment description: Records a new shipment with carrier and tracking details. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Shipment' responses: '200': description: The created shipment. content: application/json: schema: $ref: '#/components/schemas/StatusResponse' '401': $ref: '#/components/responses/Unauthorized' /orders/{order_id}/shipments/{shipment_id}: parameters: - $ref: '#/components/parameters/OrderId' - $ref: '#/components/parameters/ShipmentId' get: operationId: getShipment tags: - Shipments summary: Get a shipment description: Retrieves a single shipment from an order. responses: '200': description: The requested shipment. content: application/json: schema: type: object properties: status: type: string shipment: $ref: '#/components/schemas/Shipment' '401': $ref: '#/components/responses/Unauthorized' put: operationId: updateShipment tags: - Shipments summary: Update a shipment description: Updates an existing shipment. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Shipment' responses: '200': description: The updated shipment. content: application/json: schema: $ref: '#/components/schemas/StatusResponse' '401': $ref: '#/components/responses/Unauthorized' delete: operationId: deleteShipment tags: - Shipments summary: Delete a shipment description: Deletes a shipment from an order. responses: '200': description: Deletion result. content: application/json: schema: $ref: '#/components/schemas/StatusResponse' '401': $ref: '#/components/responses/Unauthorized' /batch-shipments: post: operationId: batchShipments tags: - Shipments summary: Add multiple shipments description: Adds many shipments across orders in a single request. requestBody: required: true content: application/json: schema: type: object properties: shipments: type: array items: $ref: '#/components/schemas/Shipment' responses: '200': description: Batch result. content: application/json: schema: $ref: '#/components/schemas/StatusResponse' '401': $ref: '#/components/responses/Unauthorized' components: schemas: Shipment: type: object properties: id: type: string tracking_number: type: string carrier_code: type: string shipment_method: type: string cost: type: number weight: type: number ship_date: type: string StatusResponse: type: object properties: status: type: string description: success or error. message: type: string errors: type: array items: type: string parameters: OrderId: name: order_id in: path required: true schema: type: string description: The ID of the order. ShipmentId: name: shipment_id in: path required: true schema: type: string description: The ID of the shipment. responses: Unauthorized: description: Missing or invalid store ID / API key. content: application/json: schema: $ref: '#/components/schemas/StatusResponse' securitySchemes: storeId: type: apiKey in: header name: ORDERDESK-STORE-ID description: The numeric ID of your Order Desk store. apiKey: type: apiKey in: header name: ORDERDESK-API-KEY description: The API key for your Order Desk store.