Mirakl Taxonomy API
The Taxonomy API from Mirakl — 2 operation(s) for taxonomy.
The Taxonomy API from Mirakl — 2 operation(s) for taxonomy.
openapi: 3.1.0
info:
description: '{% partial file="/partial-content/product/connect-channel-platform/rest/connect/openapi-description.md" /%}'
title: Mirakl Connect Channel Platform APIs Carriers Taxonomy API
version: ''
servers:
- description: Connect Channel Platform API
url: https://miraklconnect.com/api/channel-platform
tags:
- name: Taxonomy
paths:
/v1/taxonomy/channels/{channel_id}/rules:
put:
description: '<div class="api-description-extension">
<div class="extension-title">Call Frequency</div>
<div class="recommended-call-frequency">Recommended usage: 5 per second</div>
<div class="max-call-frequency">Maximum usage: 10 per second</div>
</div>'
operationId: createTaxonomyRule
parameters:
- $ref: '#/components/parameters/channel_id_path'
requestBody:
content:
application/json; charset=UTF-8:
examples:
application/json; charset=UTF-8-0:
summary: Example of a taxonomy rule
value: "{\n \"rules\": [\n {\n \"id\": \"rule-smartphones\",\n \"when\": {\n \"all\": [\n {\n \"equals\": {\n \"attribute\": \"model\",\n \"value\": \"samsung-galaxy-s21\"\n }\n },\n {\n \"not\": {\n \"isSet\": {\n \"attribute\": \"color\"\n }\n }\n }\n ]\n },\n \"then\": {\n \"all\": [\n {\n \"redefine\": {\n \"attribute\": \"samsung-special-color\",\n \"requirementLevel\": \"REQUIRED\"\n }\n }\n ]\n }\n }\n ]\n}\n"
application/json; charset=UTF-8-auto:
summary: Complete example with value types (application/json; charset=utf-8)
value:
rules:
- id: rule-1234
when: object
then:
all:
- redefine:
attribute: COLOR
requirementLevel: OPTIONAL
schema:
$ref: '#/components/schemas/TaxonomyRuleRequest'
required: true
responses:
'202':
description: Accepted
security:
- Bearer:
- connect-channel-platform:taxonomy-rule:create
summary: createTaxonomyRule - Create a Taxonomy Rule
tags:
- Taxonomy
/v1/taxonomy/channels/{channel_id}/product-types:
put:
description: '<div class="extension-title">Description</div>
Creates or fully replaces a Product Type for the specified channel.
**Behavior:**
- **Full replacement (PUT semantics):** the entire product type definition (including all embedded attributes, their value lists, and rule references) is replaced with the content of this request. Any attribute, value list entry, or rule reference not present in the request body will be removed.
- **Always provide the complete product type definition in every request**, even when only a subset of attributes or rules needs to change.
- This is an asynchronous operation - the request is accepted and processed in the background.
<div class="api-description-extension">
<div class="extension-title">Call Frequency</div>
<div class="recommended-call-frequency">Recommended usage: 5 per second</div>
<div class="max-call-frequency">Maximum usage: 10 per second</div>
</div>'
operationId: upsertProductType
parameters:
- $ref: '#/components/parameters/channel_id_path'
- description: The unique identifier of the product type, which may contain special characters like slashes.
explode: true
in: query
name: product_type_id
required: true
schema:
$ref: '#/components/schemas/ProductTypeId'
style: form
- description: 'Store identifier scoping this product type to a specific store.
When provided, the product type is pushed at store-level granularity instead of channel-level.
**This granularity is not enabled by default: contact Mirakl technical teams beforehand.**
'
explode: true
in: query
name: store_id
required: false
schema:
$ref: '#/components/schemas/StoreId'
style: form
requestBody:
content:
application/json; charset=UTF-8:
examples:
application/json; charset=UTF-8-0:
summary: Product Type 'Smartphones' on a fake channel (dummy example)
value: "{\n \"labels\": [\n {\n \"locale\": \"en\",\n \"value\": \"Smartphones\"\n },\n {\n \"locale\": \"fr\",\n \"value\": \"Smartphones\"\n }\n ],\n \"context\": {\n \"labels\": [\n {\n \"locale\": \"en\",\n \"value\": \"Electronics / Mobile Devices / Smartphones\"\n },\n {\n \"locale\": \"fr\",\n \"value\": \"Électronique / Appareils Mobiles / Smartphones\"\n }\n ]\n },\n \"embedded_attributes\": [\n {\n \"id\": \"recommended_browse_nodes\",\n \"requirement_level\": \"REQUIRED\",\n \"type\": \"List\",\n \"labels\": [\n {\n \"locale\": \"en\",\n \"value\": \"Browse Nodes\"\n },\n {\n \"locale\": \"fr\",\n \"value\": \"Catégories\"\n }\n ],\n \"context\": {\n \"labels\": [\n {\n \"locale\": \"en\",\n \"value\": \"Classification / Browse Nodes\"\n },\n {\n \"locale\": \"fr\",\n \"value\": \"Classification / Catégories\"\n }\n ],\n \"path\": \"$.recommended_browse_nodes\"\n },\n \"available_values\": [\n {\n \"id\": \"340320031\",\n \"labels\": [\n {\n \"locale\": \"en\",\n \"value\": \"Mobile Phones\"\n },\n {\n \"locale\": \"fr\",\n \"value\": \"Téléphones Mobiles\"\n }\n ]\n },\n {\n \"id\": \"541546121\",\n \"labels\": [\n {\n \"locale\": \"en\",\n \"value\": \"Phones\"\n },\n {\n \"locale\": \"fr\",\n \"value\": \"Téléphones\"\n }\n ]\n }\n ]\n },\n {\n \"id\": \"Brand\",\n \"requirement_level\": \"REQUIRED\",\n \"type\": \"List\",\n \"labels\": [\n {\n \"locale\": \"en\",\n \"value\": \"Brand\"\n },\n {\n \"locale\": \"fr\",\n \"value\": \"Marque\"\n }\n ],\n \"context\": {\n \"labels\": [\n {\n \"locale\": \"en\",\n \"value\": \"Product Information / Brand\"\n },\n {\n \"locale\": \"fr\",\n \"value\": \"Information Produit / Marque\"\n }\n ],\n \"path\": \"$.brand\"\n },\n \"connect_standard_attributes\": [\n \"BRAND\"\n ],\n \"available_values\": [\n {\n \"id\": \"APPLE\",\n \"labels\": [\n {\n \"locale\": \"en\",\n \"value\": \"Apple\"\n },\n {\n \"locale\": \"fr\",\n \"value\": \"Apple\"\n }\n ]\n },\n {\n \"id\": \"SAMSUNG\",\n \"labels\": [\n {\n \"locale\": \"en\",\n \"value\": \"Samsung\"\n },\n {\n \"locale\": \"fr\",\n \"value\": \"Samsung\"\n }\n ]\n },\n {\n \"id\": \"XIAOMI\",\n \"labels\": [\n {\n \"locale\": \"en\",\n \"value\": \"Xiaomi\"\n },\n {\n \"locale\": \"fr\",\n \"value\": \"Xiaomi\"\n }\n ]\n }\n ]\n },\n {\n \"id\": \"COLOR\",\n \"requirement_level\": \"RECOMMENDED\",\n \"type\": \"List\",\n \"labels\": [\n {\n \"locale\": \"en\",\n \"value\": \"Color\"\n },\n {\n \"locale\": \"fr\",\n \"value\": \"Couleur\"\n }\n ],\n \"context\": {\n \"labels\": [\n {\n \"locale\": \"en\",\n \"value\": \"Physical Characteristics / Color\"\n },\n {\n \"locale\": \"fr\",\n \"value\": \"Caractéristiques Physiques / Couleur\"\n }\n ],\n \"path\": \"$.color\"\n },\n \"available_values\": [\n {\n \"id\": \"BLACK\",\n \"labels\": [\n {\n \"locale\": \"en\",\n \"value\": \"Black\"\n },\n {\n \"locale\": \"fr\",\n \"value\": \"Noir\"\n }\n ]\n },\n {\n \"id\": \"WHITE\",\n \"labels\": [\n {\n \"locale\": \"en\",\n \"value\": \"White\"\n },\n {\n \"locale\": \"fr\",\n \"value\": \"Blanc\"\n }\n ]\n },\n {\n \"id\": \"GOLD\",\n \"labels\": [\n {\n \"locale\": \"en\",\n \"value\": \"Gold\"\n },\n {\n \"locale\": \"fr\",\n \"value\": \"Or\"\n }\n ]\n }\n ]\n },\n {\n \"id\": \"Mobile_OS\",\n \"requirement_level\": \"RECOMMENDED\",\n \"type\": \"List\",\n \"labels\": [\n {\n \"locale\": \"en\",\n \"value\": \"Mobile OS\"\n },\n {\n \"locale\": \"fr\",\n \"value\": \"Système d'exploitation\"\n }\n ],\n \"context\": {\n \"labels\": [\n {\n \"locale\": \"en\",\n \"value\": \"Technical Specifications / Operating System\"\n },\n {\n \"locale\": \"fr\",\n \"value\": \"Spécifications Techniques / Système d'exploitation\"\n }\n ],\n \"path\": \"$.mobile_os\"\n },\n \"available_values\": [\n {\n \"id\": \"ANDROID\",\n \"labels\": [\n {\n \"locale\": \"en\",\n \"value\": \"Android\"\n },\n {\n \"locale\": \"fr\",\n \"value\": \"Android\"\n }\n ]\n },\n {\n \"id\": \"IOS\",\n \"labels\": [\n {\n \"locale\": \"en\",\n \"value\": \"iOS\"\n },\n {\n \"locale\": \"fr\",\n \"value\": \"iOS\"\n }\n ]\n }\n ]\n },\n {\n \"id\": \"Mobile_OS_version\",\n \"requirement_level\": \"RECOMMENDED\",\n \"type\": \"Text\",\n \"labels\": [\n {\n \"locale\": \"en\",\n \"value\": \"OS Version\"\n },\n {\n \"locale\": \"fr\",\n \"value\": \"Version OS\"\n }\n ],\n \"context\": {\n \"labels\": [\n {\n \"locale\": \"en\",\n \"value\": \"Technical Specifications / OS Version\"\n },\n {\n \"locale\": \"fr\",\n \"value\": \"Spécifications Techniques / Version OS\"\n }\n ],\n \"path\": \"$.mobile_os_version\"\n }\n },\n {\n \"id\": \"main_image\",\n \"requirement_level\": \"REQUIRED\",\n \"type\": \"Media\",\n \"media_type\": \"IMAGE\",\n \"labels\": [\n {\n \"locale\": \"en\",\n \"value\": \"Main image\"\n },\n {\n \"locale\": \"fr\",\n \"value\": \"Image principale\"\n }\n ],\n \"context\": {\n \"labels\": [\n {\n \"locale\": \"en\",\n \"value\": \"Media / Product Images / Main Image\"\n },\n {\n \"locale\": \"fr\",\n \"value\": \"Média / Images Produit / Image Principale\"\n }\n ],\n \"path\": \"$.main_image\"\n },\n \"descriptions\": [],\n \"connect_standard_attributes\": [\n \"IMAGE\"\n ]\n }\n ],\n \"rules\": [\n {\n \"ref\": \"rule-smartphones\"\n }\n ]\n}\n"
application/json; charset=UTF-8-1:
summary: Product Type 'Smartphones' on another fake channel (dummy example)
value: "{\n \"labels\": [\n {\n \"locale\": \"en\",\n \"value\": \"Smartphones\"\n },\n {\n \"locale\": \"fr\",\n \"value\": \"Smartphones\"\n }\n ],\n \"context\": {\n \"labels\": [\n {\n \"locale\": \"en\",\n \"value\": \"Electronics / Mobile Devices / Smartphones\"\n },\n {\n \"locale\": \"fr\",\n \"value\": \"Électronique / Appareils Mobiles / Smartphones\"\n }\n ]\n },\n \"embedded_attributes\": [\n {\n \"id\": \"Brand\",\n \"requirement_level\": \"REQUIRED\",\n \"type\": \"List\",\n \"labels\": [\n {\n \"locale\": \"en\",\n \"value\": \"Brand\"\n },\n {\n \"locale\": \"fr\",\n \"value\": \"Marque\"\n }\n ],\n \"context\": {\n \"labels\": [\n {\n \"locale\": \"en\",\n \"value\": \"Product Information / Brand\"\n },\n {\n \"locale\": \"fr\",\n \"value\": \"Information Produit / Marque\"\n }\n ],\n \"path\": \"$.brand\"\n },\n \"connect_standard_attributes\": [\n \"BRAND\"\n ],\n \"available_values\": [\n {\n \"id\": \"APPLE\",\n \"labels\": [\n {\n \"locale\": \"en\",\n \"value\": \"Apple\"\n },\n {\n \"locale\": \"fr\",\n \"value\": \"Apple\"\n }\n ]\n },\n {\n \"id\": \"SAMSUNG\",\n \"labels\": [\n {\n \"locale\": \"en\",\n \"value\": \"Samsung\"\n },\n {\n \"locale\": \"fr\",\n \"value\": \"Samsung\"\n }\n ]\n },\n {\n \"id\": \"XIAOMI\",\n \"labels\": [\n {\n \"locale\": \"en\",\n \"value\": \"Xiaomi\"\n },\n {\n \"locale\": \"fr\",\n \"value\": \"Xiaomi\"\n }\n ]\n }\n ]\n },\n {\n \"id\": \"Mobile_OS\",\n \"requirement_level\": \"REQUIRED\",\n \"type\": \"List\",\n \"labels\": [\n {\n \"locale\": \"en\",\n \"value\": \"Mobile OS\"\n },\n {\n \"locale\": \"fr\",\n \"value\": \"Système d'exploitation\"\n }\n ],\n \"context\": {\n \"labels\": [\n {\n \"locale\": \"en\",\n \"value\": \"Technical Specifications / Operating System\"\n },\n {\n \"locale\": \"fr\",\n \"value\": \"Spécifications Techniques / Système d'exploitation\"\n }\n ],\n \"path\": \"$.mobile_os\"\n },\n \"available_values\": [\n {\n \"id\": \"ANDROID\",\n \"labels\": [\n {\n \"locale\": \"en\",\n \"value\": \"Android\"\n },\n {\n \"locale\": \"fr\",\n \"value\": \"Android\"\n }\n ]\n },\n {\n \"id\": \"IOS\",\n \"labels\": [\n {\n \"locale\": \"en\",\n \"value\": \"iOS\"\n },\n {\n \"locale\": \"fr\",\n \"value\": \"iOS\"\n }\n ]\n }\n ]\n },\n {\n \"id\": \"main_video\",\n \"requirement_level\": \"REQUIRED\",\n \"type\": \"Media\",\n \"media_type\": \"OTHER\",\n \"labels\": [\n {\n \"locale\": \"en\",\n \"value\": \"Main video\"\n },\n {\n \"locale\": \"fr\",\n \"value\": \"Vidéo principale\"\n }\n ],\n \"context\": {\n \"labels\": [\n {\n \"locale\": \"en\",\n \"value\": \"Media / Product Videos / Main Video\"\n },\n {\n \"locale\": \"fr\",\n \"value\": \"Média / Vidéos Produit / Vidéo Principale\"\n }\n ],\n \"path\": \"$.main_video\"\n },\n \"descriptions\": [],\n \"connect_standard_attributes\": [\n \"BRAND\"\n ]\n }\n ],\n \"rules\": [\n {\n \"ref\": \"rule-smartphones\"\n }\n ]\n}\n"
application/json; charset=UTF-8-auto:
summary: Complete example with value types (application/json; charset=utf-8)
value:
labels:
- locale: en_US
value: string
context:
labels:
- locale: en_US
value: string
embedded_attributes:
- id: COLOR
requirement_level: OPTIONAL
type: Text
connect_standard_attributes:
- PRODUCT_ID
labels:
- locale: en_US
value: string
context:
path: string
labels:
- locale: en_US
value: string
descriptions:
- locale: en_US
value: string
rules:
- ref: rule-1234
schema:
$ref: '#/components/schemas/ProductType'
required: true
responses:
'202':
description: Accepted
'401':
description: The channel is not configured to allow the requested taxonomy granularity (channel-level or store-level).
'404':
description: Channel not found, or store not found when `store_id` is provided.
security:
- Bearer:
- connect-channel-platform:taxonomy-product-type:upsert
summary: upsertProductType - Create or Update a Product Type
tags:
- Taxonomy
components:
schemas:
ProductAttributeType:
type: string
description: 'Each type of attributes has a different set of properties
Enum: `"Text"`, `"Integer"`, `"Decimal"`, `"List"`, `"Media"`
'
Localized:
type: object
properties:
locale:
$ref: '#/components/schemas/Locale'
value:
type: string
description: The localized value in this locale
required:
- locale
- value
ProductTypeRuleConditionIsSet:
type: object
description: A condition that checks if a specific attribute is set
properties:
isSet:
$ref: '#/components/schemas/IsSetRuleConditionPayload'
required:
- isSet
title: IsSet
InRuleConditionPayloadValue:
oneOf:
- type: string
- type: number
- type: boolean
ProductTypeRuleConditionNot:
type: object
description: A condition that must not be met to trigger the rule
properties:
not:
$ref: '#/components/schemas/ProductTypeRuleCondition'
required:
- not
title: Not
ProductTypeContext:
type: object
description: "Additional context information about where this product type label is located within \nthe marketplace's data structure. This helps with catalog transformation.\n"
properties:
labels:
type: array
description: List of labels context for the product type
items:
$ref: '#/components/schemas/Localized'
ProductAttributeId:
type: string
description: Anything that uniquely identifies the product attribute.
examples:
- COLOR
maxLength: 255
minLength: 1
RequirementLevel:
type: string
description: 'Requirement level of the attribute when creating or updating a product
Enum: `"OPTIONAL"`, `"RECOMMENDED"`, `"REQUIRED"`
'
IsSetRuleConditionPayload:
type: object
properties:
attribute:
$ref: '#/components/schemas/ProductAttributeId'
required:
- attribute
AttributeContext:
type: object
description: "Additional context information about where this attribute label is located within \nthe marketplace's data structure. This helps with catalog transformation.\n"
properties:
labels:
type: array
description: List of labels context for the attribute
items:
$ref: '#/components/schemas/Localized'
path:
type: string
description: 'The path indicating where this attribute label is located in the marketplace''s data structure.
Used for data mapping and transformation purposes.
'
ProductTypeRuleActionRedefineAttribute:
type: object
description: An action to redefine an attribute's properties
properties:
redefine:
$ref: '#/components/schemas/RedefineAttributeActionPayload'
required:
- redefine
title: Redefine attribute
InRuleConditionPayload:
type: object
properties:
attribute:
$ref: '#/components/schemas/ProductAttributeId'
values:
type: array
description: List of values to check against
items:
$ref: '#/components/schemas/InRuleConditionPayloadValue'
required:
- attribute
- values
Locale:
type: string
description: The language format can be ISO-639 or ISO-639_ISO-3166
examples:
- en_US
ProductTypeId:
type: string
description: Anything that uniquely identifies the product type.
examples:
- Smartphones
maxLength: 255
minLength: 1
ProductTypeRuleConditionAny:
type: object
description: A set of conditions where at least one must be met to trigger the rule
properties:
any:
type: array
description: List of conditions where at least one must be satisfied
items:
$ref: '#/components/schemas/ProductTypeRuleCondition'
required:
- any
title: Any
RedefineAttributeActionPayload:
type: object
properties:
attribute:
$ref: '#/components/schemas/ProductAttributeId'
requirementLevel:
$ref: '#/components/schemas/RequirementLevel'
required:
- attribute
- requirementLevel
ProductTypeRuleConditionAll:
type: object
description: A set of conditions that must all be met to trigger the rule
properties:
all:
type: array
description: List of conditions to satisfy
items:
$ref: '#/components/schemas/ProductTypeRuleCondition'
required:
- all
title: All
ConnectStandardAttribute:
type: string
description: 'Equivalent of the attribute in Connect standard taxonomy
Enum: `"PRODUCT_ID"`, `"CATEGORY"`, `"BRAND"`, `"TITLE"`, `"DESCRIPTION"`, `"IMAGE"`, `"GTIN"`, `"VARIANT_GROUP_CODE"`
'
ProductTypeRuleActionAll:
type: object
description: A set of actions to apply when the rule is triggered
properties:
all:
type: array
description: List of actions to apply
items:
$ref: '#/components/schemas/ProductTypeRuleActionRedefineAttribute'
required:
- all
ProductTypeRuleConditionEquals:
type: object
description: A condition that checks if a specific attribute equals a given value
properties:
equals:
$ref: '#/components/schemas/EqualsRuleConditionPayload'
required:
- equals
title: Equals
EmbeddedAttribute:
type: object
discriminator:
mapping:
Decimal: '#/components/schemas/EmbeddedDecimalAttribute'
Integer: '#/components/schemas/EmbeddedIntegerAttribute'
List: '#/components/schemas/EmbeddedListAttribute'
Media: '#/components/schemas/EmbeddedMediaAttribute'
Text: '#/components/schemas/EmbeddedTextAttribute'
propertyName: type
properties:
connect_standard_attributes:
type: array
description: "Map one attribute per standard type (e.g., your main image attribute to IMAGE). \nFor multi-lingual catalogs, multiple locale-specific attributes may map to TITLE and DESCRIPTION.\n"
items:
$ref: '#/components/schemas/ConnectStandardAttribute'
context:
$ref: '#/components/schemas/AttributeContext'
descriptions:
type: array
description: Additional attribute descriptions with their associated locale
items:
$ref: '#/components/schemas/Localized'
id:
$ref: '#/components/schemas/ProductAttributeId'
labels:
type: array
description: Labels for the attribute with their associated locale
items:
$ref: '#/components/schemas/Localized'
minItems: 1
requirement_level:
$ref: '#/components/schemas/RequirementLevel'
type:
$ref: '#/components/schemas/ProductAttributeType'
required:
- descriptions
- id
- labels
- requirement_level
- type
StoreId:
type: string
description: Store identifier in the channel
minLength: 1
ProductType:
type: object
properties:
context:
$ref: '#/components/schemas/ProductTypeContext'
embedded_attributes:
type: array
description: List of embedded attributes for the product type
items:
$ref: '#/components/schemas/EmbeddedAttribute'
labels:
type: array
description: List of labels for the product type
items:
$ref: '#/components/schemas/Localized'
minItems: 1
rules:
type: array
description: List of rules associated with the product type
items:
$ref: '#/components/schemas/ProductTypeRuleReference'
required:
- embedded_attributes
- labels
TaxonomyRuleRequest:
type: object
description: Request to create a taxonomy rule
properties:
rules:
type: array
description: List of rules to create
items:
$ref: '#/components/schemas/ProductTypeRule'
minItems: 1
required:
- rules
ProductTypeRuleConditionIn:
type: object
description: A condition that checks if a specific attribute's value is in a given list of
# --- truncated at 32 KB (34 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/mirakl/refs/heads/main/openapi/mirakl-taxonomy-api-openapi.yml