openapi: 3.2.0 info: title: Amber Public SKUs 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: Skus paths: /brands/{brand}/skus: get: tags: - Skus summary: List SKUs operationId: listSkus 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: code in: query required: false description: Exact, case-sensitive code match. schema: type: string minLength: 1 maxLength: 255 description: Exact, case-sensitive code match. - name: upc in: query required: false description: Exact, case-sensitive upc match. schema: type: string minLength: 1 maxLength: 255 description: Exact, case-sensitive upc match. - name: status in: query required: false description: Exact, case-sensitive status match. schema: type: string minLength: 1 maxLength: 255 description: Exact, case-sensitive status match. - name: productId in: query required: false description: Parent Product ID from /products. schema: type: string pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$ description: Parent Product ID from /products. - name: productOptionId in: query required: false description: Product Option ID from /product-options. schema: type: string pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$ description: Product Option ID from /product-options. - name: colorId 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/SkusList' 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}/skus/{id}: get: tags: - Skus summary: Get SKUs operationId: getSkus 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/Skus' '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: Skus: 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}$ productId: type: string pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$ description: Parent Product ID from /products. code: type: string status: type: string upc: type: - string - 'null' retailPrice: type: - string - 'null' wholesalePrice: type: - string - 'null' colorId: 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' htsCodeOverride: type: - string - 'null' productOptionId: 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' description: Product Option ID from /product-options. targetFobOverride: type: - string - 'null' launchWindowOverride: type: - string - 'null' collectionIdsOverride: anyOf: - $ref: '#/components/schemas/Skus/$defs/__schema0' - type: 'null' weightValue: type: - string - 'null' weightUomId: 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' createdAt: type: string updatedAt: type: string required: - id - productId - code - status - upc - retailPrice - wholesalePrice - colorId - htsCodeOverride - productOptionId - targetFobOverride - launchWindowOverride - collectionIdsOverride - weightValue - weightUomId - createdAt - updatedAt additionalProperties: false $defs: __schema0: anyOf: - type: string - type: number - type: boolean - type: 'null' - type: array items: $ref: '#/components/schemas/Skus/$defs/__schema0' - type: object propertyNames: type: string additionalProperties: $ref: '#/components/schemas/Skus/$defs/__schema0' 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' SkusList: 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}$ productId: type: string pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$ description: Parent Product ID from /products. code: type: string status: type: string upc: type: - string - 'null' retailPrice: type: - string - 'null' wholesalePrice: type: - string - 'null' colorId: 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' htsCodeOverride: type: - string - 'null' productOptionId: 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' description: Product Option ID from /product-options. targetFobOverride: type: - string - 'null' launchWindowOverride: type: - string - 'null' collectionIdsOverride: anyOf: - $ref: '#/components/schemas/SkusList/$defs/__schema0' - type: 'null' weightValue: type: - string - 'null' weightUomId: 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' createdAt: type: string updatedAt: type: string required: - id - productId - code - status - upc - retailPrice - wholesalePrice - colorId - htsCodeOverride - productOptionId - targetFobOverride - launchWindowOverride - collectionIdsOverride - weightValue - weightUomId - 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 $defs: __schema0: anyOf: - type: string - type: number - type: boolean - type: 'null' - type: array items: $ref: '#/components/schemas/SkusList/$defs/__schema0' - type: object propertyNames: type: string additionalProperties: $ref: '#/components/schemas/SkusList/$defs/__schema0' securitySchemes: ApiKeyAuth: type: http scheme: bearer description: A brand-scoped or global amb_sk_... API key.