openapi: 3.2.0 info: title: Amber Public Order Items API version: 1.3.0 description: Read your brand's catalog, sourcing, orders, shipments, finance, and documents. All business endpoints are read-only and require an API key. Products are Parent Products; Product Options and SKUs are separate resources. Use filters to find records, follow their IDs to related data, and paginate to retrieve every result. See the integration tutorials for complete examples and data conventions for amounts, IDs, and timestamps. servers: - url: https://app.amber.ai/api/public/v1 tags: - name: Order Items paths: /brands/{brand}/order-items: get: tags: - Order Items summary: List Order Items operationId: listOrderItems security: - ApiKeyAuth: [] parameters: - name: brand in: path required: true description: Brand slug authorized by this API key. schema: type: string example: acme - name: cursor in: query required: false description: Opaque nextCursor from the same collection and filters. Omit on the first request. schema: type: string - name: limit in: query required: false schema: type: integer minimum: 1 maximum: 100 default: 25 - name: itemType in: query required: false description: Exact, case-sensitive match. Spaces and punctuation are literal. schema: type: string minLength: 1 maxLength: 255 description: Exact, case-sensitive match. Spaces and punctuation are literal. - name: orderId in: query required: false schema: type: string pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$ - name: skuId in: query required: false schema: type: string pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$ - name: productVersionId in: query required: false schema: type: string pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$ responses: '200': description: A page of matching records. totalItems counts all matches across pages. When nextCursor is null, you have reached the last page. content: application/json: schema: $ref: '#/components/schemas/OrderItemsList' headers: Link: description: Origin-relative URL for the next page, with rel="next". Resolve against this response URL. Preserves filters and page size; omitted when nextCursor is null. schema: type: string '400': description: Invalid parameter, unsupported include, or cursor used with different filters. content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Missing, invalid, expired, or out-of-scope API key. content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: The record was not found or is not available to your brand. content: application/json: schema: $ref: '#/components/schemas/Error' '429': description: Rate limit exceeded. Retry after the indicated delay. content: application/json: schema: $ref: '#/components/schemas/Error' headers: Retry-After: description: Seconds before retrying. schema: type: integer minimum: 0 '500': description: Unexpected server error. content: application/json: schema: $ref: '#/components/schemas/Error' /brands/{brand}/order-items/{id}: get: tags: - Order Items summary: Get Order Items operationId: getOrderItems security: - ApiKeyAuth: [] parameters: - name: brand in: path required: true description: Brand slug authorized by this API key. schema: type: string example: acme - name: id in: path required: true description: Stable resource identifier. schema: type: string pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$ responses: '200': description: The requested record. content: application/json: schema: $ref: '#/components/schemas/OrderItems' '400': description: Invalid parameter, unsupported include, or cursor used with different filters. content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Missing, invalid, expired, or out-of-scope API key. content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: The record was not found or is not available to your brand. content: application/json: schema: $ref: '#/components/schemas/Error' '429': description: Rate limit exceeded. Retry after the indicated delay. content: application/json: schema: $ref: '#/components/schemas/Error' headers: Retry-After: description: Seconds before retrying. schema: type: integer minimum: 0 '500': description: Unexpected server error. content: application/json: schema: $ref: '#/components/schemas/Error' components: schemas: Error: type: object properties: error: type: string errorCode: type: string details: description: Parameter validation issues, when available. $ref: '#/components/schemas/Error/$defs/__schema0' required: - error - errorCode additionalProperties: false $defs: __schema0: anyOf: - type: string - type: number - type: boolean - type: 'null' - type: array items: $ref: '#/components/schemas/Error/$defs/__schema0' - type: object propertyNames: type: string additionalProperties: $ref: '#/components/schemas/Error/$defs/__schema0' OrderItems: type: object properties: id: type: string pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$ orderId: type: string pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$ skuId: anyOf: - type: string pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$ - type: 'null' productVersionId: anyOf: - type: string pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$ - type: 'null' qty: type: - number - 'null' supplierConfirmedAt: type: - string - 'null' unitPrice: type: - string - 'null' unitPriceBase: type: - string - 'null' htsCode: type: - string - 'null' duty: type: - string - 'null' itemType: type: string itemDescription: type: - string - 'null' memo: type: - string - 'null' step: type: - string - 'null' category: type: - string - 'null' createdAt: type: - string - 'null' updatedAt: type: - string - 'null' required: - id - orderId - skuId - productVersionId - qty - supplierConfirmedAt - unitPrice - unitPriceBase - htsCode - duty - itemType - itemDescription - memo - step - category - createdAt - updatedAt additionalProperties: false OrderItemsList: type: object properties: items: type: array items: type: object properties: id: type: string pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$ orderId: type: string pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$ skuId: anyOf: - type: string pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$ - type: 'null' productVersionId: anyOf: - type: string pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$ - type: 'null' qty: type: - number - 'null' supplierConfirmedAt: type: - string - 'null' unitPrice: type: - string - 'null' unitPriceBase: type: - string - 'null' htsCode: type: - string - 'null' duty: type: - string - 'null' itemType: type: string itemDescription: type: - string - 'null' memo: type: - string - 'null' step: type: - string - 'null' category: type: - string - 'null' createdAt: type: - string - 'null' updatedAt: type: - string - 'null' required: - id - orderId - skuId - productVersionId - qty - supplierConfirmedAt - unitPrice - unitPriceBase - htsCode - duty - itemType - itemDescription - memo - step - category - createdAt - updatedAt additionalProperties: false nextCursor: type: - string - 'null' totalItems: type: integer description: Total number of matching records across all pages. required: - items - nextCursor - totalItems additionalProperties: false securitySchemes: ApiKeyAuth: type: http scheme: bearer description: A brand-scoped or global amb_sk_... API key.