openapi: 3.2.0 info: title: Amber Public Custom Field Definitions 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: Custom Field Definitions paths: /brands/{brand}/custom-field-definitions: get: tags: - Custom Field Definitions summary: List Custom Field Definitions operationId: listCustomFieldDefinitions 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: fieldKey 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: entityField 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: fieldType 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: label 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: isActive in: query required: false description: Exact Boolean match. Use true or false. schema: type: string enum: - 'true' - 'false' description: Exact Boolean match. Use true or false. - name: entityType in: query required: false schema: type: string minLength: 1 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/CustomFieldDefinitionsList' 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}/custom-field-definitions/{id}: get: tags: - Custom Field Definitions summary: Get Custom Field Definitions operationId: getCustomFieldDefinitions 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/CustomFieldDefinitions' '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: CustomFieldDefinitions: 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}$ entityType: type: string entityField: type: string fieldKey: type: string fieldType: type: string label: type: string description: type: - string - 'null' required: type: boolean defaultValue: anyOf: - $ref: '#/components/schemas/CustomFieldDefinitions/$defs/__schema0' - type: 'null' selectValues: type: array items: $ref: '#/components/schemas/CustomFieldDefinitions/$defs/__schema1' isActive: type: boolean sequence: type: number createdAt: type: - string - 'null' updatedAt: type: - string - 'null' required: - id - entityType - entityField - fieldKey - fieldType - label - description - required - defaultValue - selectValues - isActive - sequence - createdAt - updatedAt additionalProperties: false $defs: __schema0: anyOf: - type: string - type: number - type: boolean - type: 'null' - type: array items: $ref: '#/components/schemas/CustomFieldDefinitions/$defs/__schema0' - type: object propertyNames: type: string additionalProperties: $ref: '#/components/schemas/CustomFieldDefinitions/$defs/__schema0' __schema1: anyOf: - type: string - type: number - type: boolean - type: 'null' - type: array items: $ref: '#/components/schemas/CustomFieldDefinitions/$defs/__schema1' - type: object propertyNames: type: string additionalProperties: $ref: '#/components/schemas/CustomFieldDefinitions/$defs/__schema1' CustomFieldDefinitionsList: 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}$ entityType: type: string entityField: type: string fieldKey: type: string fieldType: type: string label: type: string description: type: - string - 'null' required: type: boolean defaultValue: anyOf: - $ref: '#/components/schemas/CustomFieldDefinitionsList/$defs/__schema0' - type: 'null' selectValues: type: array items: $ref: '#/components/schemas/CustomFieldDefinitionsList/$defs/__schema1' isActive: type: boolean sequence: type: number createdAt: type: - string - 'null' updatedAt: type: - string - 'null' required: - id - entityType - entityField - fieldKey - fieldType - label - description - required - defaultValue - selectValues - isActive - sequence - 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/CustomFieldDefinitionsList/$defs/__schema0' - type: object propertyNames: type: string additionalProperties: $ref: '#/components/schemas/CustomFieldDefinitionsList/$defs/__schema0' __schema1: anyOf: - type: string - type: number - type: boolean - type: 'null' - type: array items: $ref: '#/components/schemas/CustomFieldDefinitionsList/$defs/__schema1' - type: object propertyNames: type: string additionalProperties: $ref: '#/components/schemas/CustomFieldDefinitionsList/$defs/__schema1' 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' securitySchemes: ApiKeyAuth: type: http scheme: bearer description: A brand-scoped or global amb_sk_... API key.