openapi: 3.2.0
info:
title: Product Catalog - Public Variant Data Operations API
version: 1.0.1
description: Endpoints for variant data operations
servers:
- url: https://api.mapp.com
security:
- Keycloak: []
tags:
- name: Variant Data Operations
description: Endpoints for variant data operations
paths:
/api/product-catalog/v1/catalogs/{catalogId}/variants:
post:
tags:
- Variant Data Operations
summary: 'Add a new variant or add missing data to an existing variant. '
description: If the variant does not exist it is created; if it already exists, only fields that are not yet present are added and existing values remain unchanged.
operationId: addVariant
parameters:
- name: catalogId
in: path
description: Catalog identifier where the variant should be added.
required: true
schema:
type: integer
format: int64
requestBody:
description: Variant attributes to add. The payload must include variant_id.
content:
application/json:
schema:
$ref: '#/components/schemas/AddVariantOperationFlatSchema'
example:
variant_id: V-1001
product_id: P-500
status: 1
availability: true
color:
en-GB: Navy Blue
de-DE: Marineblau
fr-FR: Bleu marine
price:
US: 29.99
GB: 24.99
size:
US: S
EU: '36'
required: true
responses:
'400':
description: Variant add was rejected during validation.
content:
application/json:
schema:
$ref: '#/components/schemas/VariantOperationResponseDTO'
example:
variant_id: V-1001
catalog_id: 123
status: failed
message: 'Variant add failed: variant_id field must be provided'
operation: add
accepted_at: 1783502993000
accepted_attributes: {}
skipped_attributes: {}
'202':
description: Variant add accepted for processing
content:
application/json:
schema:
$ref: '#/components/schemas/VariantOperationResponseDTO'
example:
variant_id: V-1001
catalog_id: 123
status: accepted
message: Variant add accepted for processing
event_id: 550e8400-e29b-41d4-a716-446655440000
operation: add
accepted_at: 1783502993000
accepted_attributes:
variant_id: V-1001
product_id: P-500
status: 1
availability: true
'500':
description: Variant add failed unexpectedly.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
message: Unexpected error while processing request
httpStatus: 500
errorCode: 500 Internal Server Error
timestamp: '2026-07-08T12:00:00Z'
get:
tags:
- Variant Data Operations
summary: List variants with cursor pagination
description: Returns a page of variants for the given company and catalog using cursor-based pagination. Provide either 'lastId' (forward) or 'firstId' (backward) together with a page 'size'; the two cursors are mutually exclusive. Results can additionally be filtered by attribute active status, product data layer, and a modification timestamp range. If no data is found, HTTP 204 (No Content) is returned.
operationId: getPaginatedVariants
parameters:
- name: catalogId
in: path
description: Catalog identifier whose variants should be listed.
required: true
schema:
type: integer
format: int64
- name: activeStatusSearch
in: query
description: Controls whether active attributes, inactive attributes, or all attributes are included in the returned variant data. Defaults to ALL.
required: false
schema:
type: string
default: ALL
enum:
- ACTIVE_ONLY
- INACTIVE_ONLY
- ALL
- name: catalogType
in: query
description: Selects which product data layer to query. Defaults to COMBINED.
required: false
schema:
type: string
default: COMBINED
enum:
- SOURCE
- ENRICHED
- COMBINED
- name: lastId
in: query
description: Forward pagination cursor. Returns variants after this document id; the cursor value itself is excluded. Cannot be used together with firstId.
required: false
schema:
type: string
- name: firstId
in: query
description: Backward pagination cursor. Returns variants before this document id; the cursor value itself is excluded. Cannot be used together with lastId.
required: false
schema:
type: string
- name: size
in: query
description: Maximum number of variants to return in one page. Defaults to 100; values less than 1 or greater than 100 are normalized to 100.
required: false
schema:
type: integer
format: int32
default: 100
- name: fromModifiedTimestamp
in: query
description: Filters variants modified at or after this timestamp. The value is epoch milliseconds and the lower bound is inclusive. If this is provided, toModifiedTimestamp is required. For paginated scans, capture this value once before the first page and keep it unchanged for every page.
required: false
schema:
type: integer
format: int64
example: 1783503393000
- name: toModifiedTimestamp
in: query
description: Filters variants modified at or before this timestamp. The value is epoch milliseconds, the upper bound is inclusive, it must not be greater than the current server time, and it is required when fromModifiedTimestamp is provided. For paginated scans, capture this value once before the first page and keep it unchanged for every page.
required: false
schema:
type: integer
format: int64
example: 1783506993000
responses:
'200':
description: Paginated variants found
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedVariantsResponseDTO'
example:
productViewPayloads:
- variant_id: V-1001
product_id: P-500
status:
value: 1
label: active
availability:
value: true
label: available
catalog_id: 123
source_creation_time: 1783502993000
source_update_time: 1783503093000
enriched_creation_time: 1783503193000
enriched_update_time: 1783503293000
color:
en-GB: Navy Blue
de-DE: Marineblau
fashion_material: leather
fashion_season: summer
- variant_id: V-1002
product_id: P-500
status:
value: 1
label: active
availability:
value: true
label: available
catalog_id: 123
source_creation_time: 1783503393000
source_update_time: 1783503493000
enriched_creation_time: 1783503593000
enriched_update_time: 1783503693000
size:
US: M
EU: '38'
fashion_material: leather
fashion_season: summer
paginationCursor:
lastId: 687d57eb6986be26d3f7e0b4
firstId: 687d57eb6986be26d3f7e0a3
previousPageExists: false
nextPageExists: true
'400':
description: Pagination is missing or invalid, modification date filters are invalid, or catalog attributes are not configured.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
message: Cannot specify both lastId and firstId
httpStatus: 400
errorCode: 400 Bad Request
timestamp: '2026-07-08T12:00:00Z'
'404':
description: Catalog was not found.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
message: 'Product feed not found for companyId: 456 and feedId: 123'
httpStatus: 404
errorCode: 404 Not Found
timestamp: '2026-07-08T12:00:00Z'
'204':
description: No variants were found for the requested page and filters.
'500':
description: Unexpected error while fetching paginated variants.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
message: Unexpected error while processing request
httpStatus: 500
errorCode: 500 Internal Server Error
timestamp: '2026-07-08T12:00:00Z'
/api/product-catalog/v1/catalogs/{catalogId}/variants/{variantId}:
put:
tags:
- Variant Data Operations
summary: Create or fully replace a variant
description: If the variant does not exist it is created; if it already exists, all of its data is completely overwritten with the provided payload.
operationId: upsertVariant
parameters:
- name: catalogId
in: path
description: Catalog identifier where the variant should be created or replaced.
required: true
schema:
type: integer
format: int64
- name: variantId
in: path
description: Variant identifier to create or fully replace.
required: true
schema:
type: string
requestBody:
description: Complete variant payload that will replace existing variant data.
content:
application/json:
schema:
$ref: '#/components/schemas/UpsertVariantOperationFlatSchema'
example:
product_id: P-500
status: 1
availability: true
color:
en-GB: Navy Blue
de-DE: Marineblau
fr-FR: Bleu marine
price:
US: 29.99
GB: 24.99
size:
US: S
EU: '36'
required: true
responses:
'500':
description: Variant upsert failed unexpectedly.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
message: Unexpected error while processing request
httpStatus: 500
errorCode: 500 Internal Server Error
timestamp: '2026-07-08T12:00:00Z'
'400':
description: Variant upsert was rejected during validation.
content:
application/json:
schema:
$ref: '#/components/schemas/VariantOperationResponseDTO'
example:
variant_id: V-1001
catalog_id: 123
status: failed
message: 'Variant upsert failed: missingMandatoryFields=[price]'
operation: upsert
accepted_at: 1783502993000
accepted_attributes: {}
skipped_attributes: {}
'202':
description: Variant upsert accepted for processing
content:
application/json:
schema:
$ref: '#/components/schemas/VariantOperationResponseDTO'
example:
variant_id: V-1001
catalog_id: 123
status: accepted
message: Variant upsert accepted for processing
event_id: 550e8400-e29b-41d4-a716-446655440000
operation: upsert
accepted_at: 1783502993000
accepted_attributes:
variant_id: V-1001
product_id: P-500
status: active
availability: available
delete:
tags:
- Variant Data Operations
summary: Delete a variant by ID
description: Both source and enriched data is removed.
operationId: deleteVariant
parameters:
- name: catalogId
in: path
description: Catalog identifier containing the variant to delete.
required: true
schema:
type: integer
format: int64
- name: variantId
in: path
description: Variant identifier to delete.
required: true
schema:
type: string
responses:
'202':
description: Variant delete accepted for processing
content:
application/json:
schema:
$ref: '#/components/schemas/VariantOperationResponseDTO'
example:
variant_id: V-1001
catalog_id: 123
status: accepted
message: Variant delete accepted for processing
event_id: 550e8400-e29b-41d4-a716-446655440000
operation: delete
accepted_at: 1783502993000
'400':
description: Variant delete was rejected during validation.
content:
application/json:
schema:
$ref: '#/components/schemas/VariantOperationResponseDTO'
example:
variant_id: V-1001
catalog_id: 123
status: failed
message: 'Variant delete failed: price mandatory field cannot be deleted'
operation: delete
accepted_at: 1783502993000
accepted_attributes: {}
skipped_attributes: {}
'404':
description: Variant delete target was not found by downstream validation.
content:
application/json:
schema:
$ref: '#/components/schemas/VariantOperationResponseDTO'
example:
variant_id: V-1001
catalog_id: 123
status: failed
message: 'Variant delete failed: price mandatory field cannot be deleted'
operation: delete
accepted_at: 1783502993000
accepted_attributes: {}
skipped_attributes: {}
'500':
description: Variant delete failed unexpectedly.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
message: Unexpected error while processing request
httpStatus: 500
errorCode: 500 Internal Server Error
timestamp: '2026-07-08T12:00:00Z'
get:
tags:
- Variant Data Operations
summary: Get a single variant by ID
description: Retrieves a single variant identified by its variant ID from the specified catalog. The returned attributes can be filtered by active status and by the product data layer (source, enriched, or combined). Returns 204 (No Content) when no variant matches the requested identifier and filters.
operationId: getVariant
parameters:
- name: catalogId
in: path
description: Catalog identifier that contains the variant.
required: true
schema:
type: integer
format: int64
- name: variantId
in: path
description: Variant identifier to retrieve from the catalog.
required: true
schema:
type: string
- name: activeStatusSearch
in: query
description: Controls whether active attributes, inactive attributes, or all attributes are included in the returned variant data. Defaults to ALL.
required: false
schema:
type: string
default: ALL
enum:
- ACTIVE_ONLY
- INACTIVE_ONLY
- ALL
- name: catalogType
in: query
description: Selects which product data layer to query. Defaults to COMBINED.
required: false
schema:
type: string
default: COMBINED
enum:
- SOURCE
- ENRICHED
- COMBINED
responses:
'500':
description: Unexpected error while fetching variant data.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
message: Unexpected error while processing request
httpStatus: 500
errorCode: 500 Internal Server Error
timestamp: '2026-07-08T12:00:00Z'
'404':
description: Catalog was not found.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
message: 'Product feed not found for companyId: 456 and feedId: 123'
httpStatus: 404
errorCode: 404 Not Found
timestamp: '2026-07-08T12:00:00Z'
'200':
description: Variant found
content:
application/json:
schema:
$ref: '#/components/schemas/VariantFlatViewResponse'
example:
variant_id: V-1001
product_id: P-500
status:
value: 1
label: active
availability:
value: true
label: available
catalog_id: 123
source_creation_time: 1783502993000
source_update_time: 1783503093000
enriched_creation_time: 1783503193000
enriched_update_time: 1783503293000
color:
en-GB: Navy Blue
de-DE: Marineblau
fr-FR: Bleu marine
price:
US: 29.99
GB: 24.99
size:
US: S
EU: '36'
fashion_material: leather
fashion_season: summer
'204':
description: Variant was not found for the requested catalog and filters.
'400':
description: Invalid query parameters or catalog attribute configuration.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
message: Cannot specify both lastId and firstId
httpStatus: 400
errorCode: 400 Bad Request
timestamp: '2026-07-08T12:00:00Z'
patch:
tags:
- Variant Data Operations
summary: Partially update a variant
description: 'Updates selected fields of an existing variant. Only the fields present in the payload are changed; all other fields are left untouched. If the variant does not exist, no action is taken. '
operationId: partialUpdateVariant
parameters:
- name: catalogId
in: path
description: Catalog identifier containing the variant to update.
required: true
schema:
type: integer
format: int64
- name: variantId
in: path
description: Variant identifier to partially update.
required: true
schema:
type: string
requestBody:
description: Variant attributes to update. Only provided fields are changed.
content:
application/json:
schema:
$ref: '#/components/schemas/PartialUpdateVariantOperationFlatSchema'
example:
status: 2
price:
US: 39.99
GB: 34.99
required: true
responses:
'400':
description: Variant partial update was rejected during validation.
content:
application/json:
schema:
$ref: '#/components/schemas/VariantOperationResponseDTO'
example:
variant_id: V-1001
catalog_id: 123
status: failed
message: 'Variant partial update failed: status value ''archived'' is not a valid VariantStatus'
operation: partial_update
accepted_at: 1783502993000
accepted_attributes: {}
skipped_attributes: {}
'202':
description: Variant partial update accepted for processing
content:
application/json:
schema:
$ref: '#/components/schemas/VariantOperationResponseDTO'
example:
variant_id: V-1001
catalog_id: 123
status: accepted
message: Variant partial update accepted for processing
event_id: 550e8400-e29b-41d4-a716-446655440000
operation: partial_update
accepted_at: 1783502993000
accepted_attributes:
variant_id: V-1001
status: discontinued
price:
US: 39.99
GB: 34.99
'500':
description: Variant partial update failed unexpectedly.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
message: Unexpected error while processing request
httpStatus: 500
errorCode: 500 Internal Server Error
timestamp: '2026-07-08T12:00:00Z'
/api/product-catalog/v1/catalogs/{catalogId}/variants/:
delete:
tags:
- Variant Data Operations
summary: Delete all variants in a catalog
description: Deletes every variant in the specified catalog, removing both source and enriched data. This clears the entire catalog contents and cannot be undone.
operationId: deleteAllCatalogData
parameters:
- name: catalogId
in: path
description: Catalog identifier whose variants should be deleted.
required: true
schema:
type: integer
format: int64
responses:
'500':
description: Catalog variants delete failed unexpectedly.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
message: Unexpected error while processing request
httpStatus: 500
errorCode: 500 Internal Server Error
timestamp: '2026-07-08T12:00:00Z'
'202':
description: Catalog variants delete accepted for processing
content:
application/json:
schema:
$ref: '#/components/schemas/CatalogOperationResponseDTO'
example:
catalog_id: 123
status: accepted
message: Catalog variants delete accepted for processing
event_id: 550e8400-e29b-41d4-a716-446655440000
operation: delete
accepted_at: 1783502993000
'400':
description: Catalog variants delete was rejected during validation.
content:
application/json:
schema:
$ref: '#/components/schemas/CatalogOperationResponseDTO'
example:
catalog_id: 123
status: failed
message: 'Catalog variants delete failed: Product Catalog by catalogId 123 not found'
operation: delete
accepted_at: 1783502993000
/api/product-catalog/v1/catalogs/{catalogId}/variants/{variantId}/attributes:
delete:
tags:
- Variant Data Operations
summary: Delete attributes from a variant
description: Deletes the named attributes from the variant identified by its variant ID in the specified catalog. Only the attributes listed in the request body are removed; the rest of the variant is left unchanged.
operationId: deleteVariantAttributes
parameters:
- name: catalogId
in: path
description: Catalog identifier containing the variant.
required: true
schema:
type: integer
format: int64
- name: variantId
in: path
description: Variant identifier whose attributes should be deleted.
required: true
schema:
type: string
requestBody:
description: Names of attributes to delete from the variant.
content:
application/json:
schema:
type: array
example:
- custom_attributeA
- custom_attribute_B
required: true
responses:
'404':
description: Variant attributes delete target was not found by downstream validation.
content:
application/json:
schema:
$ref: '#/components/schemas/VariantOperationResponseDTO'
example:
variant_id: V-1001
catalog_id: 123
status: failed
message: 'Variant attributes delete failed: attributeNames cannot be parsed'
operation: delete_attributes
accepted_at: 1783502993000
accepted_attributes: {}
skipped_attributes: {}
'500':
description: Variant attributes delete failed unexpectedly.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
message: Unexpected error while processing request
httpStatus: 500
errorCode: 500 Internal Server Error
timestamp: '2026-07-08T12:00:00Z'
'202':
description: Variant attributes delete accepted for processing
content:
application/json:
schema:
$ref: '#/components/schemas/VariantOperationResponseDTO'
example:
variant_id: V-1001
catalog_id: 123
status: accepted
message: Variant attributes delete accepted for processing
event_id: 550e8400-e29b-41d4-a716-446655440000
operation: delete_attributes
accepted_at: 1783502993000
accepted_attributes:
variant_id: V-1001
attributeNames: custom_attributeA, custom_attribute_B
'400':
description: Variant attributes delete was rejected during validation.
content:
application/json:
schema:
$ref: '#/components/schemas/VariantOperationResponseDTO'
example:
variant_id: V-1001
catalog_id: 123
status: failed
message: 'Variant attributes delete failed: attributeNames cannot be parsed'
operation: delete_attributes
accepted_at: 1783502993000
accepted_attributes: {}
skipped_attributes: {}
components:
schemas:
PartialUpdateVariantOperationFlatSchema:
type: object
properties:
brand:
type: string
description: Product brand name.
example: AnnTaylor
price:
type: object
additionalProperties:
type: number
description: Current selling price keyed by ISO 3166-1 alpha-2 country code or '*' fallback.
description: Current selling price keyed by ISO 3166-1 alpha-2 country code or '*' fallback.
example:
US: 29.99
GB: 24.99
DE: 27.5
FR: 28.0
currency:
type: object
additionalProperties:
type: string
description: Currency keyed by the same country codes as price. Values are ISO 4217 currency codes.
example: '{"US":"USD","GB":"GBP","DE":"EUR","FR":"EUR","*":"USD"}'
description: Currency keyed by the same country codes as price. Values are ISO 4217 currency codes.
example:
US: USD
GB: GBP
DE: EUR
FR: EUR
'*': USD
size:
type: object
additionalProperties:
type: string
description: Size keyed by ISO 3166-1 alpha-2 country code or '*' fallback.
example: '{"US":"S","GB":"8","EU":"36"}'
description: Size keyed by ISO 3166-1 alpha-2 country code or '*' fallback.
example:
US: S
GB: '8'
EU: '36'
color:
type: object
additionalProperties:
type: string
description: Localized colour keyed by BCP 47 locale or '*' fallback.
example: '{"en-GB":"Navy Blue","de-DE":"Marineblau","fr-FR":"Bleu marine"}'
description: Localized colour keyed by BCP 47 locale or '*' fallback.
example:
en-GB: Navy Blue
de-DE: Marineblau
fr-FR: Bleu marine
mpn:
type: string
description: Manufacturer Part Number. Maximum length is 70 characters.
example: DRESS-BLK-M-2023
gtin:
type: string
description: Global Trade Item Number. Expected length is 8-14 digits.
example: '1234567890123'
status:
type: integer
description: 'Variant status value: 0 = pre_order, 1 = active, 2 = discontinued.'
format: int32
example: 1
enum:
- 0
- 1
- 2
availability:
type: boolean
description: Variant availability value.
example: true
material:
type: string
description: Material of the product.
example: cotton
gender:
type: string
description: Gender value for fashion catalogs.
example: female
enum:
- female
- male
- girls
- boys
- unisex
category:
type: array
description: Category hierarchy.
example:
- ladies
- dresses
- short
items:
type: string
description: Category hierarchy.
example: '["ladies","dresses","short"]'
locale:
type: array
description: Supported locales for this variant.
example:
- en-GB
- de-DE
items:
type: string
description: Supported locales for this variant.
example: '["en-GB","de-DE"]'
ean:
type: string
description: Standardised article number.
example: '8076809513456'
multipack:
type: integer
description: Multipack quantity.
format: int32
example: 3
collaboration:
type: array
description: Retailer-specific collaboration values.
example:
- designer-capsule
- summer-edit
items:
type: string
description: Retailer-specific collaboration values.
example: '["designer-capsule","summer-edit"]'
product_id:
type: string
description: Identifier used for grouping all variants belonging to the same product.
example: P-500
style_id:
type: string
description: Groups variants that share colour or style but differ by option attributes such as size.
example: S-1000
variant_title:
type: string
description: Human-readable title of the variant.
example: Basic t-shirt, size L
style_title:
type: string
description: Human-readable title of the style.
example: Black basic t-shirt
product_title:
type: object
additionalProperties:
type: string
description: Localized product title keyed by BCP 47 locale or '*' fallback.
example: '{"en-GB":"Summer dress","de-DE":"Sommerkleid","fr-FR":"Robe d''ete","*":"Summer dress"}'
description: Localized product title keyed by BCP 47 locale or '*' fallback.
example:
en-GB: Summer dress
de-DE: Sommerkleid
fr-FR: Robe d'ete
'*': Summer dress
product_description:
type: object
additionalProperties:
type: string
description: Localized product description keyed by BCP 47 locale or '*' fallback.
example: '{"en-GB":"Light dress","de-DE":"Leichtes Kleid"}'
description: Localized product description keyed by BCP 47 locale or '*' fallback.
example:
en-GB: Light dress
de-DE: Leichtes Kleid
image_url:
type: array
description: List of product image URLs.
example:
- https://cdn.com/photo1.jpg
- https://cdn.com/photo2.jpg
- https://cdn.com/photo3.jpg
items:
type: string
description: List of product image URLs.
example: '["https://cdn.com/photo1.jpg","https://cdn.com/photo2.jpg","https://cdn.com/photo3.jpg"]'
pdp_url:
type: object
additionalProperties:
type: string
description: Localized product detail page URL keyed by BCP 47 locale or '*' fallback.
example: '{"en-GB":"https://shop.example/gb/basic-tshirt-001","de-DE":"https://shop.example/de/basic-tshirt-001"}'
description: Localized product detail page URL keyed by BCP 47 locale or '*' fallback.
example:
en-GB: https://shop.example/gb/basic-tshirt-001
de-DE: https://shop.example/de/basic-tshirt-001
season_code:
type: boolean
description: Indicates whether the product belongs to a seasonal assortment.
example: true
old_price:
type: object
additionalProperties:
type: number
description: Former selling price keyed by ISO 3166-1 alpha-2 country code or '*' fallback.
description: Former selling price keyed by ISO 3166-1 alpha-2 country code or '*' fallback.
example:
US: 39.99
GB: 34.99
set_id:
type: string
description: Identifier for products sold as a set.
example: BIKINI-SET-001
extra_id:
type: object
additionalProperties:
type: string
description: Additional localized or country-specific product identifier.
example: '{"US":"EXTRA-US-1001","GB":"EXTRA-GB-1001"}'
description: Additional localized or country-specific product identifier.
example:
US: EXTRA-US-1001
GB: EXTRA-GB-1001
ancillary_product_code:
type: string
description: Additional product identifier.
example: ANC-1001
min_age:
type: integer
description: Minimal age in months for children's wear.
format: int32
example: 12
max_age:
type: integer
description: Maximum age in months for children's wear.
format: int32
example: 24
best_model_image:
type: string
description: Best model image URL.
example: https://cdn.com/best_model_image.jpg
best_product_image:
type: string
description: Best product-only image URL.
example: https://cdn.com/best_product_image.jpg
description: 'Flat request payload for partially updating a SOURCE variant, where:
- predefined SOURCE attributes are documented as fields here.
- custom SOURCE attributes are added dynamically on top-level as fields.
- ENRICHED attributes are not accepted by this endpoint; this endpoint writes SOURCE data only.
Only the provided fields will be updated. If the variant doesn''t exist, no action is taken.'
UpsertVariantOperationFlatSchema:
type: object
properties:
brand:
type: string
description: Product brand name.
example: AnnTaylor
price:
type: object
additionalProperties:
type: number
description: Current selling price keyed by ISO 3166-1 alpha-2 country code or '*' fallback.
description: Current selling price keyed by ISO 3166-1 alpha-2 country code or '*' fallback.
example:
US: 29.99
GB: 24.99
DE: 27.5
FR: 28.0
currency:
type: object
additionalProperties:
type: string
description: Currency keyed by the same country codes as price. Values are ISO 4217 currency codes.
example: '{"US":"USD","GB":"GBP","DE":"EUR","FR":"EUR","*":"USD"}'
description: Currency keyed by the same country codes as price. Values are ISO 4217 currency codes.
example:
US: USD
GB: GBP
DE: EUR
FR: EUR
'*': USD
size:
type: object
additionalProperties:
type: string
description: Size keyed by ISO 3166-1 alpha-2 country code or '*' fallback.
example: '{"US":"S","GB":"8","EU":"36"}'
description: Size keyed by ISO 3166-1 alpha-2 country code or '*' fallback.
example:
US: S
GB: '8'
EU: '36'
color:
type: object
additionalProperties:
type: string
description: Localized colour keyed by BCP 47 locale or '*' fallback.
example: '{"en-GB":"Navy Blue","de-DE":"Marineblau","fr-FR":"Bleu marine"}'
description: Localized colour keyed by BCP 47 locale or '*' fallback.
example:
en-GB: Navy Blue
de-DE: Marineblau
fr-FR: Bleu marine
mpn:
type: string
description: Manufacturer Part Number. Maximum length is 70 characters.
example: DRESS-BLK-M-2023
gtin:
type: string
description: Global Trade Item Number. Expected length is 8-14 digits.
example: '1234567890123'
status:
type: integer
description: 'Variant status value: 0 = pre_order, 1 = active, 2 = discontinued.'
format: int32
example: 1
enum:
- 0
- 1
- 2
availability:
type: boolean
description: Variant availability value.
example: true
material:
type: string
description: Material of the product.
example: cotton
gender:
type: string
description: Gender value for fashion catalogs.
example: female
enum:
- female
- male
- girls
- boys
- unisex
category:
type: array
description: Category hierarchy.
example:
- ladies
- dresses
- short
items:
type: string
description: Category hierarchy.
example: '["ladies","dresses","short"]'
locale:
type: array
description: Supported locales for this variant.
example:
- en-GB
- de-DE
items:
type: string
description: Supported locales for this variant.
example: '["en-GB","de-DE"]'
ean:
type: string
description: Standardised article number.
example: '8076809513456'
multipack:
type: integer
description: Multipack quantity.
format: int32
example: 3
collaboration:
type: array
description: Retailer-specific collaboration values.
example:
- designer-capsule
- summer-edit
items:
type: string
description: Retailer-specific collaboration values.
example: '["designer-capsule","summer-edit"]'
product_id:
type: string
description: Identifier used for grouping all variants belonging to the same product. Provide it when creating a new variant.
example: P-500
style_id:
type: string
description: Groups variants that share colour or style but differ by option attributes such as size.
example: S-1000
variant_title:
type: string
description: Human-readable title of the variant.
example: Basic t-shirt, size L
style_title:
type: string
description: Human-readable title of the style.
example: Black basic t-shirt
product_title:
type: object
additionalProperties:
type: string
description: Localized product title keyed by BCP 47 locale or '*' fallback.
example: '{"en-GB":"Summer dress","de-DE":"Sommerkleid","fr-FR":"Robe d''ete","*":"Summer dress"}'
description: Localized product title keyed by BCP 47 locale or '*' fallback.
example:
en-GB: Summer dress
de-DE: Sommerkleid
fr-FR: Robe d'ete
'*': Summer dress
product_description:
type: object
additionalProperties:
type: string
description: Localized product description keyed by BCP 47 locale or '*' fallback.
example: '{"en-GB":"Light dress","de-DE":"Leichtes Kleid"}'
description: Localized product description keyed by BCP 47 locale or '*' fallback.
example:
en-GB: Light dress
de-DE: Leichtes Kleid
image_url:
type: array
description: List of product image URLs.
example:
- https://cdn.com/photo1.jpg
- https://cdn.com/photo2.jpg
- https://cdn.com/photo3.jpg
items:
type: string
description: List of product image URLs.
example: '["https://cdn.com/photo1.jpg","https://cdn.com/photo2.jpg","https://cdn.com/photo3.jpg"]'
pdp_url:
type: object
additionalProperties:
type: string
description: Localized product detail page URL keyed by BCP 47 locale or '*' fallback.
example: '{"en-GB":"https://shop.example/gb/basic-tshirt-001","de-DE":"https://shop.example/de/basic-tshirt-001"}'
description: Localized product detail page URL keyed by BCP 47 locale or '*' fallback.
example:
en-GB: https://shop.example/gb/basic-tshirt-001
de-DE: https://shop.example/de/basic-tshirt-001
season_code:
type: boolean
description: Indicates whether the product belongs to a seasonal assortment.
example: true
old_price:
type: object
additionalProperties:
type: number
description: Former selling price keyed by ISO 3166-1 alpha-2 country code or '*' fallback.
description: Former selling price keyed by ISO 3166-1 alpha-2 country code or '*' fallback.
example:
US: 39.99
GB: 34.99
set_id:
type: string
description: Identifier for products sold as a set.
example: BIKINI-SET-001
extra_id:
type: object
additionalProperties:
type: string
description: Additional localized or country-specific product identifier.
example: '{"US":"EXTRA-US-1001","GB":"EXTRA-GB-1001"}'
description: Additional localized or country-specific product identifier.
example:
US: EXTRA-US-1001
GB: EXTRA-GB-1001
ancillary_product_code:
type: string
description: Additional product identifier.
example: ANC-1001
min_age:
type: integer
description: Minimal age in months for children's wear.
format: int32
example: 12
max_age:
type: integer
description: Maximum age in months for children's wear.
format: int32
example: 24
best_model_image:
type: string
description: Best model image URL.
example: https://cdn.com/best_model_image.jpg
best_product_image:
type: string
description: Best product-only image URL.
example: https://cdn.com/best_product_image.jpg
description: 'Flat request payload for creating or fully replacing a SOURCE variant, where:
- predefined SOURCE attributes are documented as fields here.
- custom SOURCE attributes are added dynamically on top-level as fields.
- ENRICHED attributes are not accepted by this endpoint; this endpoint writes SOURCE data only.
If the variant doesn''t exist, it will be created. If it exists, all data will be completely replaced with the provided payload.'
CatalogOperationResponseDTO:
type: object
properties:
catalog_id:
type: integer
format: int64
example: 123
status:
type: string
enum:
- accepted
- failed
message:
type: string
event_id:
type: string
description: 'Unique generated UUID assigned to the event and preserved throughout its whole lifecycle.
The event_id is used in logs and is also sent back to the client with webhook events when
webhooks are configured, so clients are advised to log/save it on their side.'
example: 550e8400-e29b-41d4-a716-446655440000
operation:
type: string
example: delete
enum:
- add
- upsert
- partial_update
- delete
- delete_attributes
- add_existing_only
- overwrite
- overwrite_existing_only
- update
- update_existing_only
- update_localized_attribute
- update_localized_attribute_existing_only
- clean
accepted_at:
type: string
format: date-time
AddVariantOperationFlatSchema:
required:
- variant_id
type: object
properties:
brand:
type: string
description: Product brand name.
example: AnnTaylor
price:
type: object
additionalProperties:
type: number
description: Current selling price keyed by ISO 3166-1 alpha-2 country code or '*' fallback.
description: Current selling price keyed by ISO 3166-1 alpha-2 country code or '*' fallback.
example:
US: 29.99
GB: 24.99
DE: 27.5
FR: 28.0
currency:
type: object
additionalProperties:
type: string
description: Currency keyed by the same country codes as price. Values are ISO 4217 currency codes.
example: '{"US":"USD","GB":"GBP","DE":"EUR","FR":"EUR","*":"USD"}'
description: Currency keyed by the same country codes as price. Values are ISO 4217 currency codes.
example:
US: USD
GB: GBP
DE: EUR
FR: EUR
'*': USD
size:
type: object
additionalProperties:
type: string
description: Size keyed by ISO 3166-1 alpha-2 country code or '*' fallback.
example: '{"US":"S","GB":"8","EU":"36"}'
description: Size keyed by ISO 3166-1 alpha-2 country code or '*' fallback.
example:
US: S
GB: '8'
EU: '36'
color:
type: object
additionalProperties:
type: string
description: Localized colour keyed by BCP 47 locale or '*' fallback.
example: '{"en-GB":"Navy Blue","de-DE":"Marineblau","fr-FR":"Bleu marine"}'
description: Localized colour keyed by BCP 47 locale or '*' fallback.
example:
en-GB: Navy Blue
de-DE: Marineblau
fr-FR: Bleu marine
mpn:
type: string
description: Manufacturer Part Number. Maximum length is 70 characters.
example: DRESS-BLK-M-2023
gtin:
type: string
description: Global Trade Item Number. Expected length is 8-14 digits.
example: '1234567890123'
status:
type: integer
description: 'Variant status value: 0 = pre_order, 1 = active, 2 = discontinued.'
format: int32
example: 1
enum:
- 0
- 1
- 2
availability:
type: boolean
description: Variant availability value.
example: true
material:
type: string
description: Material of the product.
example: cotton
gender:
type: string
description: Gender value for fashion catalogs.
example: female
enum:
- female
- male
- girls
- boys
- unisex
category:
type: array
description: Category hierarchy.
example:
- ladies
- dresses
- short
items:
type: string
description: Category hierarchy.
example: '["ladies","dresses","short"]'
locale:
type: array
description: Supported locales for this variant.
example:
- en-GB
- de-DE
items:
type: string
description: Supported locales for this variant.
example: '["en-GB","de-DE"]'
ean:
type: string
description: Standardised article number.
example: '8076809513456'
multipack:
type: integer
description: Multipack quantity.
format: int32
example: 3
collaboration:
type: array
description: Retailer-specific collaboration values.
example:
- designer-capsule
- summer-edit
items:
type: string
description: Retailer-specific collaboration values.
example: '["designer-capsule","summer-edit"]'
variant_id:
type: string
description: Client-defined unique identifier of the purchasable variant. Maximum length is 255 characters.
example: V-1001
product_id:
type: string
description: Identifier used for grouping all variants belonging to the same product. Provide it when creating a new variant.
example: P-500
style_id:
type: string
description: Groups variants that share colour or style but differ by option attributes such as size.
example: S-1000
variant_title:
type: string
description: Human-readable title of the variant.
example: Basic t-shirt, size L
style_title:
type: string
description: Human-readable title of the style.
example: Black basic t-shirt
product_title:
type: object
additionalProperties:
type: string
description: Localized product title keyed by BCP 47 locale or '*' fallback.
example: '{"en-GB":"Summer dress","de-DE":"Sommerkleid","fr-FR":"Robe d''ete","*":"Summer dress"}'
description: Localized product title keyed by BCP 47 locale or '*' fallback.
example:
en-GB: Summer dress
de-DE: Sommerkleid
fr-FR: Robe d'ete
'*': Summer dress
product_description:
type: object
additionalProperties:
type: string
description: Localized product description keyed by BCP 47 locale or '*' fallback.
example: '{"en-GB":"Light dress","de-DE":"Leichtes Kleid"}'
description: Localized product description keyed by BCP 47 locale or '*' fallback.
example:
en-GB: Light dress
de-DE: Leichtes Kleid
image_url:
type: array
description: List of product image URLs.
example:
- https://cdn.com/photo1.jpg
- https://cdn.com/photo2.jpg
- https://cdn.com/photo3.jpg
items:
type: string
description: List of product image URLs.
example: '["https://cdn.com/photo1.jpg","https://cdn.com/photo2.jpg","https://cdn.com/photo3.jpg"]'
pdp_url:
type: object
additionalProperties:
type: string
description: Localized product detail page URL keyed by BCP 47 locale or '*' fallback.
example: '{"en-GB":"https://shop.example/gb/basic-tshirt-001","de-DE":"https://shop.example/de/basic-tshirt-001"}'
description: Localized product detail page URL keyed by BCP 47 locale or '*' fallback.
example:
en-GB: https://shop.example/gb/basic-tshirt-001
de-DE: https://shop.example/de/basic-tshirt-001
season_code:
type: boolean
description: Indicates whether the product belongs to a seasonal assortment.
example: true
old_price:
type: object
additionalProperties:
type: number
description: Former selling price keyed by ISO 3166-1 alpha-2 country code or '*' fallback.
description: Former selling price keyed by ISO 3166-1 alpha-2 country code or '*' fallback.
example:
US: 39.99
GB: 34.99
set_id:
type: string
description: Identifier for products sold as a set.
example: BIKINI-SET-001
extra_id:
type: object
additionalProperties:
type: string
description: Additional localized or country-specific product identifier.
example: '{"US":"EXTRA-US-1001","GB":"EXTRA-GB-1001"}'
description: Additional localized or country-specific product identifier.
example:
US: EXTRA-US-1001
GB: EXTRA-GB-1001
ancillary_product_code:
type: string
description: Additional product identifier.
example: ANC-1001
min_age:
type: integer
description: Minimal age in months for children's wear.
format: int32
example: 12
max_age:
type: integer
description: Maximum age in months for children's wear.
format: int32
example: 24
best_model_image:
type: string
description: Best model image URL.
example: https://cdn.com/best_model_image.jpg
best_product_image:
type: string
description: Best product-only image URL.
example: https://cdn.com/best_product_image.jpg
description: 'Flat request payload for adding a SOURCE variant, where:
- predefined SOURCE attributes are documented as fields here.
- custom SOURCE attributes are added dynamically on top-level as fields.
- ENRICHED attributes are not accepted by this endpoint; this endpoint writes SOURCE data only.
The field variant_id is always required. product_id should be provided when creating a new variant.'
PaginationCursorDTO:
type: object
properties:
nextPageExists:
type: boolean
previousPageExists:
type: boolean
firstId:
type: string
example: V-1001
lastId:
type: string
example: V-1010
description: Only set when pagination is used
ErrorResponse:
type: object
properties:
message:
type: string
httpStatus:
type: integer
format: int32
errorCode:
type: string
timestamp:
type: string
format: date-time
PaginatedVariantsResponseDTO:
type: object
properties:
productViewPayloads:
type: array
example:
- variant_id: V-1001
product_id: P-500
status:
value: 1
label: active
availability:
value: true
label: available
catalog_id: 12345
source_creation_time: 1783502993000
source_update_time: 1783503093000
enriched_creation_time: 1783503193000
enriched_update_time: 1783503293000
color:
en-GB: Navy Blue
de-DE: Marineblau
fr-FR: Bleu marine
price:
US: 29.99
GB: 24.99
size:
US: S
EU: '36'
fashion_material: leather
fashion_season: summer
- variant_id: V-1002
product_id: P-500
status:
value: 1
label: active
availability:
value: true
label: available
catalog_id: 12345
source_creation_time: 1783503393000
source_update_time: 1783503493000
enriched_creation_time: 1783503593000
enriched_update_time: 1783503693000
color:
en-GB: Navy Blue
de-DE: Marineblau
fr-FR: Bleu marine
price:
US: 29.99
GB: 24.99
size:
US: M
EU: '38'
fashion_material: leather
fashion_season: summer
items:
$ref: '#/components/schemas/VariantFlatViewResponse'
paginationCursor:
$ref: '#/components/schemas/PaginationCursorDTO'
VariantOperationResponseDTO:
type: object
properties:
variant_id:
type: string
example: V-1001
catalog_id:
type: integer
format: int64
example: 123
status:
type: string
example: accepted
enum:
- accepted
- failed
message:
type: string
example: Variant add accepted for processing
event_id:
type: string
description: 'Unique generated UUID assigned to the event and preserved throughout its whole lifecycle.
The event_id is used in logs and is also sent back to the client with webhook events when
webhooks are configured, so clients are advised to log/save it on their side.'
example: 550e8400-e29b-41d4-a716-446655440000
operation:
type: string
example: add
enum:
- add
- upsert
- partial_update
- delete
- delete_attributes
- add_existing_only
- overwrite
- overwrite_existing_only
- update
- update_existing_only
- update_localized_attribute
- update_localized_attribute_existing_only
- clean
accepted_at:
type: integer
format: int64
example: 1783502993000
accepted_attributes:
type: object
additionalProperties:
type: object
example:
color:
en-GB: Navy Blue
de-DE: Marineblau
fr-FR: Bleu marine
size:
US: S
EU: '36'
example:
color:
en-GB: Navy Blue
de-DE: Marineblau
fr-FR: Bleu marine
size:
US: S
EU: '36'
skipped_attributes:
$ref: '#/components/schemas/SkippedAttributesDTO'
SkippedAttributesDTO:
type: object
properties:
non_existing_attributes:
uniqueItems: true
type: array
example:
- custom_attribute_abc
items:
type: string
example: '["custom_attribute_abc"]'
inactive_attributes:
uniqueItems: true
type: array
example:
- custom_attribute_def
items:
type: string
example: '["custom_attribute_def"]'
invalid_data_type_attributes:
type: object
additionalProperties:
type: string
example: '{"price":"price map value must be a number","gtin":"gtin field must be 8-14 digits","min_age":"min_age value must be a number"}'
example:
price: price map value must be a number
gtin: gtin field must be 8-14 digits
min_age: min_age value must be a number
VariantFlatViewResponse:
required:
- availability
- catalog_id
- product_id
- status
- variant_id
type: object
properties:
variant_id:
type: string
description: Client-defined unique identifier of the purchasable variant.
example: V-1001
product_id:
type: string
description: Identifier used for grouping all variants belonging to the same product.
example: P-500
style_id:
type: string
description: Groups variants that share colour or style but differ by option attributes such as size.
example: S-1000
status:
type: string
example: '{"value":1,"label":"active"}'
enum:
- PRE_ORDER
- ACTIVE
- DISCONTINUED
availability:
type: string
example: '{"value":true,"label":"available"}'
enum:
- AVAILABLE
- NOT_AVAILABLE
catalog_id:
type: integer
description: Catalog identifier.
format: int64
example: 123
source_creation_time:
type: integer
description: SOURCE data creation timestamp in milliseconds. Present when SOURCE data is available.
format: int64
example: 1783502993000
source_update_time:
type: integer
description: SOURCE data last update timestamp in milliseconds. Present when SOURCE data is available.
format: int64
example: 1783503093000
enriched_creation_time:
type: integer
description: ENRICHED data creation timestamp in milliseconds. Present when ENRICHED data is available.
format: int64
example: 1783503193000
enriched_update_time:
type: integer
description: ENRICHED data last update timestamp in milliseconds. Present when ENRICHED data is available.
format: int64
example: 1783503293000
brand:
type: string
description: Product brand name.
example: AnnTaylor
price:
type: object
additionalProperties:
type: number
description: Current selling price keyed by ISO 3166-1 alpha-2 country code or '*' fallback.
description: Current selling price keyed by ISO 3166-1 alpha-2 country code or '*' fallback.
example:
US: 29.99
GB: 24.99
DE: 27.5
FR: 28.0
currency:
type: object
additionalProperties:
type: string
description: Currency keyed by the same country codes as price. Values are ISO 4217 currency codes.
example: '{"US":"USD","GB":"GBP","DE":"EUR","FR":"EUR","*":"USD"}'
description: Currency keyed by the same country codes as price. Values are ISO 4217 currency codes.
example:
US: USD
GB: GBP
DE: EUR
FR: EUR
'*': USD
size:
type: object
additionalProperties:
type: string
description: Size keyed by ISO 3166-1 alpha-2 country code or '*' fallback.
example: '{"US":"S","GB":"8","EU":"36"}'
description: Size keyed by ISO 3166-1 alpha-2 country code or '*' fallback.
example:
US: S
GB: '8'
EU: '36'
color:
type: object
additionalProperties:
type: string
description: Localized colour keyed by BCP 47 locale or '*' fallback.
example: '{"en-GB":"Navy Blue","de-DE":"Marineblau","fr-FR":"Bleu marine"}'
description: Localized colour keyed by BCP 47 locale or '*' fallback.
example:
en-GB: Navy Blue
de-DE: Marineblau
fr-FR: Bleu marine
mpn:
type: string
description: Manufacturer Part Number. Maximum length is 70 characters.
example: DRESS-BLK-M-2023
gtin:
type: string
description: Global Trade Item Number. Expected length is 8-14 digits.
example: '1234567890123'
material:
type: string
description: Material of the product.
example: cotton
gender:
type: string
description: Gender value for fashion catalogs.
example: female
enum:
- female
- male
- girls
- boys
- unisex
category:
type: array
description: Category hierarchy.
example:
- ladies
- dresses
- short
items:
type: string
description: Category hierarchy.
example: '["ladies","dresses","short"]'
locale:
type: array
description: Supported locales for this variant.
example:
- en-GB
- de-DE
items:
type: string
description: Supported locales for this variant.
example: '["en-GB","de-DE"]'
ean:
type: string
description: Standardised article number.
example: '8076809513456'
multipack:
type: integer
description: Multipack quantity.
format: int32
example: 3
collaboration:
type: array
description: Retailer-specific collaboration values.
example:
- designer-capsule
- summer-edit
items:
type: string
description: Retailer-specific collaboration values.
example: '["designer-capsule","summer-edit"]'
variant_title:
type: string
description: Human-readable title of the variant.
example: Basic t-shirt, size L
style_title:
type: string
description: Human-readable title of the style.
example: Black basic t-shirt
product_title:
type: object
additionalProperties:
type: string
description: Localized product title keyed by BCP 47 locale or '*' fallback.
example: '{"en-GB":"Summer dress","de-DE":"Sommerkleid","fr-FR":"Robe d''ete","*":"Summer dress"}'
description: Localized product title keyed by BCP 47 locale or '*' fallback.
example:
en-GB: Summer dress
de-DE: Sommerkleid
fr-FR: Robe d'ete
'*': Summer dress
product_description:
type: object
additionalProperties:
type: string
description: Localized product description keyed by BCP 47 locale or '*' fallback.
example: '{"en-GB":"Light dress","de-DE":"Leichtes Kleid"}'
description: Localized product description keyed by BCP 47 locale or '*' fallback.
example:
en-GB: Light dress
de-DE: Leichtes Kleid
image_url:
type: array
description: List of product image URLs.
example:
- https://cdn.com/photo1.jpg
- https://cdn.com/photo2.jpg
- https://cdn.com/photo3.jpg
items:
type: string
description: List of product image URLs.
example: '["https://cdn.com/photo1.jpg","https://cdn.com/photo2.jpg","https://cdn.com/photo3.jpg"]'
pdp_url:
type: object
additionalProperties:
type: string
description: Localized product detail page URL keyed by BCP 47 locale or '*' fallback.
example: '{"en-GB":"https://shop.example/gb/basic-tshirt-001","de-DE":"https://shop.example/de/basic-tshirt-001"}'
description: Localized product detail page URL keyed by BCP 47 locale or '*' fallback.
example:
en-GB: https://shop.example/gb/basic-tshirt-001
de-DE: https://shop.example/de/basic-tshirt-001
season_code:
type: boolean
description: Indicates whether the product belongs to a seasonal assortment.
example: true
old_price:
type: object
additionalProperties:
type: number
description: Former selling price keyed by ISO 3166-1 alpha-2 country code or '*' fallback.
description: Former selling price keyed by ISO 3166-1 alpha-2 country code or '*' fallback.
example:
US: 39.99
GB: 34.99
set_id:
type: string
description: Identifier for products sold as a set.
example: BIKINI-SET-001
extra_id:
type: object
additionalProperties:
type: string
description: Additional localized or country-specific product identifier.
example: '{"US":"EXTRA-US-1001","GB":"EXTRA-GB-1001"}'
description: Additional localized or country-specific product identifier.
example:
US: EXTRA-US-1001
GB: EXTRA-GB-1001
ancillary_product_code:
type: string
description: Additional product identifier.
example: ANC-1001
min_age:
type: integer
description: Minimal age in months for children's wear.
format: int32
example: 12
max_age:
type: integer
description: Maximum age in months for children's wear.
format: int32
example: 24
best_model_image:
type: string
description: Best model image URL.
example: https://cdn.com/best_model_image.jpg
best_product_image:
type: string
description: Best product-only image URL.
example: https://cdn.com/best_product_image.jpg
description: 'Flat variant payload based on the unified product catalog schema, where:
- predefined SOURCE attributes are documented as fields here.
- custom SOURCE attributes are added dynamically on top-level as fields.
- ENRICHED attributes are added dynamically on top-level as fields.
- SOURCE attributes have no prefix, while ENRICHED attributes have the ''fashion_'' prefix.
'
example:
- variant_id: V-1001
product_id: P-500
style_id: S-42
status:
value: 1
label: active
availability:
value: true
label: available
catalog_id: 12345
source_creation_time: 1783502993000
source_update_time: 1783503093000
enriched_creation_time: 1783503193000
enriched_update_time: 1783503293000
color:
en-GB: Navy Blue
de-DE: Marineblau
fr-FR: Bleu marine
price:
US: 29.99
GB: 24.99
size:
US: S
EU: '36'
fashion_material: leather
fashion_season: summer
- variant_id: V-1002
product_id: P-500
style_id: S-42
status:
value: 1
label: active
availability:
value: true
label: available
catalog_id: 12345
source_creation_time: 1783503393000
source_update_time: 1783503493000
enriched_creation_time: 1783503593000
enriched_update_time: 1783503693000
color:
en-GB: Navy Blue
de-DE: Marineblau
fr-FR: Bleu marine
price:
US: 29.99
GB: 24.99
size:
US: M
EU: '38'
fashion_material: leather
fashion_season: summer
securitySchemes:
Keycloak:
type: http
scheme: bearer
bearerFormat: JWT
x-apievangelist-provenance:
method: searched
generated: '2026-08-12'
source: https://docs.mapp.com/apidocs/ (per-endpoint OpenAPI fragments, Product Catalog API)
note: Union of the OpenAPI 3.0.1 fragments Mapp publishes on each Product Catalog endpoint page. Content verbatim.