REST API reference

Complete reference on how to handle Akeneo PIM resources

Products

Product [uuid]

This API provides two endpoints for interacting with products:

  • Product (UUID): We strongly recommend using this endpoint for its reliability and flexibility. UUIDs, or Universally Unique Identifiers, are guaranteed to be unique and never change, even if other product identifiers like SKUs are modified. This ensures consistent product identification regardless of future changes. Additionally, UUIDs allow interaction with products that lack a traditional identifier.
  • Product (Identifier): This endpoint is useful when you already have a product identifier within your systems. This identifier, which could be a SKU or internal code, can be used to directly interact with the corresponding product in our API. This simplifies integration for workflows that rely on existing product identification methods.

Get list of products

This endpoint allows you to get a list of products. Products are paginated and they can be filtered. Permissions based on your user groups are applied to the set of products you request.


REQUEST

get /api/rest/v1/products-uuid

Path parameters

Ø

Query parameters

search (string) • Filter products, for more details see the Filters section

scope (string) • Filter product values to return scopable attributes for the given channel as well as the non localizable/non scopable attributes. It is useful for retrieving product information specific to a particular sales channel, which is essential for channel-specific applications. For more details see the Filter product values via channel section.

locales (string) • Filter product values to return localizable attributes for the given locales as well as the non localizable/non scopable attributes. It is useful for retrieving product information in specific languages, which is essential for multi-locale applications. For more details see the Filter product values via locale section.

attributes (string) • Filter product values to only return those concerning the given attributes. It is useful for limiting the response to specific attributes, reducing payload size and improving performance. For more details see the Filter product values via attributes section.

pagination_type (string, page by default) • Specify which pagination method to use for navigating through large datasets. It is useful for choosing between different pagination strategies based on your specific use case and performance requirements. See Pagination section for more details.

page (integer, 1 by default) • Specify which page of results to retrieve when using pagination. It is useful for navigating through large datasets by breaking them into smaller, manageable pages. See Pagination section for more details.

search_after (string, cursor to the first page by default) • Cursor when using the search_after pagination method type. It is essential for navigating through pages in cursor-based pagination, providing more efficient pagination for large datasets. Should never be set manually, see Pagination section for more details.

limit (integer, 10 by default) • Specify the maximum number of results to return per page. It is useful for controlling the amount of data returned in a single request, especially when dealing with large datasets. See Pagination section for more details.

search_scope (string) • Filter scopes based on specific criteria. If you need to filter on several attributes on the same scope, you can use this parameter, to avoid repeating yourself for each attribute. For more details see the Filters section.

search_locale (string) • Filter locales based on specific criteria. If you need to filter on several attributes on the same locale, you can use this parameter, to avoid repeating yourself for each attribute. For more details see the Filters section.

convert_measurements (boolean) • Convert values of measurement attributes to the unit configured in the channel provided by the scope parameter. When set to true, the response will include measurement values converted to the channel's configured units. This is useful for displaying measurement values in the appropriate units for different channels or regions. If set to false, the response will return measurement values in their original units, which can improve performance. Therefore, this parameter requires the scope parameter to be provided.

with_count (boolean) • Return the count of items in the response. Be careful with that, on a big catalog, it can decrease performance in a significant way. It is useful for understanding the size of the dataset being returned, especially when dealing with large collections. Use it judiciously to avoid performance issues.

with_attribute_options (boolean) • Return labels of attribute options in the response. When set to true, the response will include human-readable labels for attribute options alongside their codes. This is useful for displaying human-readable labels instead of just option codes, which improves the user experience in frontend applications. If set to false, the response will only include option codes, which can improve performance. See the linked_data format section for more details.

with_asset_share_links (boolean) • Return asset collection share link URLs in the response. When set to true, the response will include direct URLs to asset collections for sharing purposes. This is useful for accessing direct links to asset collections, which can be used for sharing or external integrations. If set to false, the response will not include share links, which can improve performance. See the linked_data format for more details.

with_quality_scores (boolean) • Return product quality scores in the response. When set to true, the response will include quality score information for each product. This is useful for assessing and monitoring product data quality, which is essential for maintaining high data standards and improving product information. If set to false, the response will not include quality scores, which can improve performance.

with_completenesses (boolean) • Return product completenesses information in the response. When set to true, the response will include detailed completeness information for each product. This is useful for understanding the data quality and completeness of products, which is essential for product management and quality assurance. If set to false, the response will not include completeness information, which can improve performance.

with_root_parent (boolean) • Return the root parent product model code of a variant in the response. When set to true, the response will include the root parent product model code for each variant product. This is useful for understanding the hierarchical relationship between product variants and their parent models, which is essential for product catalog navigation. If set to false, the response will not include parent model information, which can improve performance.

with_workflow_execution_statuses (boolean)

Return an array of workflow_execution_statuses directly associated with the requested entity (product or product model) in the response. Statuses are level-specific and are not inherited from parent models. For a complete overview of a variant product, you must query the variant itself and its parent model(s) in separate requests. Each workflow object contains:

  • The overall execution status (e.g., in_progress, completed).
  • A list of all associated tasks.

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Returns products paginated. The response is paginated and includes links to navigate through the pages.

Body Format application/json

{

_links (object) : {
    self (object) : {
        href (string) • URI of the current page of resources
    }
    first (object) : {
        href (string) • URI of the first page of resources
    }
    previous (object) : {
        href (string) • URI of the previous page of resources
    }
    next (object) : {
        href (string) • URI of the next page of resources
    }
  }

current_page (integer) • Current page number

items_count (integer) • Total number of items (only if with_count parameter is set to true)

_embedded (object) : {
    items (array) : [
        {
          _links (object) : {
              self (object) : {
                  href (string) • URI of the resource
              }
          }
          uuid (string) • Product UUID
          identifier (string) • Product identifier, i.e. the value of the only pim_catalog_identifier attribute
          enabled (boolean) • Whether the product is enabled
          family (string,null)Family code from which the product inherits its attributes and attributes requirements. In the case of variant product, the given family should be the same as the product model family.
          categories (array [string]) • Codes of the categories in which the product is classified • Codes of the categories in which the product is classified
          groups (array [string]) • Codes of the groups to which the product belong. Each string of the array is equal to an existing group code. • Codes of the groups to which the product belong. Each string of the array is equal to an existing group code.
          parent (string,null) • Code of the parent product model when the product is a variant
          root_parent (string) • Code of the root parent product model when the product is a variant (only available when the with_root_parent is set to true).
          values (object) • Product attributes values. Each key is an attribute code, and the value is an array of value objects for that attribute. See documentation for details.
          associations (object) : {
              {^\w+$} (object) : {
                  groups (array [string]) • Array of groups codes with which the product is in relation
                  products (array [string]) • Array of product identifiers with which the product is in relation
                  product_models (array [string]) • Array of product model codes with which the product is in relation
              }
          }
          quantified_associations (object) : {
              {^\w+$} (object) : {
                  products (array [object]) • Array of objects containing product uuids and quantities with which the product is in relation
                  product_models (array [object]) • Array of objects containing product model codes and quantities with which the product is in relation
              }
          }
          created (string) • Date of creation
          updated (string) • Date of the last update
          metadata (object) : {
              workflow_status (string) • Status of the product regarding the user permissions
          }
          quality_scores (array [object]) : [
              {
                  scope (string) • Channel code for which the quality score is calculated
                  locale (string) • Locale code for which the quality score is calculated
                  data (string) • Quality score value for the given channel/locale combination
              }
          ]
          completenesses (array [object]) : [
              {
                  scope (string) • Channel code for which the completenesses score is calculated
                  locale (string) • Channel code for which the completenesses score is calculated
                  data (integer) • Completenesses score value for the given channel/locale combination
              }
          ]
          workflow_execution_statuses (array [object]) : [
              {
                  uuid (string) • Workflow execution UUID
                  status (string) • Status of the workflow execution
                  started_at (string) • Date and time when the workflow execution was started
                  completed_at (string,null) • Date and time when the workflow execution was completed, null if still in progress
                  workflow (object) • Workflow associated with the workflow execution
                  tasks (array [object]) • Tasks associated with the workflow execution
              }
          ]
        }
    ]
  }

}

Example

{
      "_links": {
        "self": {
          "href": "https://demo.akeneo.com/api/rest/v1/products-uuid?page=3&with_count=true&limit=3&with_quality_scores=true&with_completenesses=true&with_attribute_options=true&with_workflow_execution_statuses=true"
        },
        "first": {
          "href": "https://demo.akeneo.com/api/rest/v1/products-uuid?page=1&with_count=true&limit=3&with_quality_scores=true&with_completenesses=true&with_attribute_options=true&with_workflow_execution_statuses=true"
        },
        "previous": {
          "href": "https://demo.akeneo.com/api/rest/v1/products-uuid?page=2&with_count=true&limit=3&with_quality_scores=true&with_completenesses=true&with_attribute_options=true&with_workflow_execution_statuses=true"
        },
        "next": {
          "href": "https://demo.akeneo.com/api/rest/v1/products-uuid?page=4&with_count=true&limit=3&with_quality_scores=true&with_completenesses=true&with_attribute_options=true&with_workflow_execution_statuses=true"
        }
      },
      "current_page": 3,
      "items_count": 3,
      "_embedded": {
        "items": [
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/products/top"
              }
            },
            "uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
            "enabled": true,
            "family": "tshirt",
            "categories": [
              "summer_collection"
            ],
            "groups": [],
            "parent": null,
            "root_parent": "null",
            "values": {
              "sku": [
                {
                  "data": "top",
                  "locale": null,
                  "scope": null,
                  "attribute_type": "pim_catalog_identifier"
                }
              ],
              "name": [
                {
                  "data": "Top",
                  "locale": "en_US",
                  "scope": null,
                  "attribute_type": "pim_catalog_text"
                },
                {
                  "data": "Débardeur",
                  "locale": "fr_FR",
                  "scope": null,
                  "attribute_type": "pim_catalog_text"
                }
              ],
              "description": [
                {
                  "data": "Summer top",
                  "locale": "en_US",
                  "scope": "ecommerce",
                  "attribute_type": "pim_catalog_textarea"
                },
                {
                  "data": "Top",
                  "locale": "en_US",
                  "scope": "tablet",
                  "attribute_type": "pim_catalog_textarea"
                },
                {
                  "data": "Débardeur pour l'été",
                  "locale": "fr_FR",
                  "scope": "ecommerce",
                  "attribute_type": "pim_catalog_textarea"
                },
                {
                  "data": "Débardeur",
                  "locale": "fr_FR",
                  "scope": "tablet",
                  "attribute_type": "pim_catalog_textarea"
                }
              ],
              "price": [
                {
                  "data": [
                    {
                      "amount": "15.5",
                      "currency": "EUR"
                    },
                    {
                      "amount": "15",
                      "currency": "USD"
                    }
                  ],
                  "locale": null,
                  "scope": null,
                  "attribute_type": "pim_catalog_price_collection"
                }
              ],
              "color": [
                {
                  "data": "black",
                  "locale": null,
                  "scope": null,
                  "linked_data": {
                    "attribute": "color",
                    "code": "black",
                    "labels": {
                      "en_US": "Black",
                      "fr_FR": "Noir"
                    }
                  },
                  "attribute_type": "pim_catalog_simpleselect"
                }
              ],
              "size": [
                {
                  "data": "m",
                  "locale": null,
                  "scope": null,
                  "linked_data": {
                    "attribute": "size",
                    "code": "m",
                    "labels": {
                      "en_US": "M",
                      "fr_FR": "M"
                    }
                  },
                  "attribute_type": "pim_catalog_simpleselect"
                }
              ],
              "collection": [
                {
                  "data": [
                    "winter_2016"
                  ],
                  "locale": null,
                  "scope": null,
                  "linked_data": {
                    "winter_2016": {
                      "attribute": "collection",
                      "code": "winter_2016",
                      "labels": {
                        "en_US": "Winter 2016",
                        "fr_FR": "Hiver 2016"
                      }
                    }
                  },
                  "attribute_type": "pim_catalog_multiselect"
                }
              ]
            },
            "created": "2016-06-23T18:24:44+02:00",
            "updated": "2016-06-25T17:56:12+02:00",
            "associations": {
              "PACK": {
                "products": [
                  "d055527c-0698-4967-8f16-8a5f23f4e5cf"
                ],
                "product_models": [],
                "groups": []
              }
            },
            "quantified_associations": {
              "PRODUCT_SET": {
                "products": [
                  {
                    "uuid": "fc24e6c3-933c-4a93-8a81-e5c703d134d5",
                    "quantity": 2
                  },
                  {
                    "uuid": "a9b69002-a0b1-4ead-85c2-f8dbf59c6cfc",
                    "quantity": 1
                  }
                ],
                "product_models": [
                  {
                    "identifier": "model-biker-jacket-leather",
                    "quantity": 2
                  }
                ]
              }
            },
            "quality_scores": [
              {
                "scope": "ecommerce",
                "locale": "en_US",
                "data": "A"
              },
              {
                "scope": "ecommerce",
                "locale": "fr_FR",
                "data": "B"
              },
              {
                "scope": "tablet",
                "locale": "en_US",
                "data": "D"
              },
              {
                "scope": "tablet",
                "locale": "fr_FR",
                "data": "E"
              }
            ],
            "completenesses": [
              {
                "scope": "ecommerce",
                "locale": "en_US",
                "data": 10
              },
              {
                "scope": "ecommerce",
                "locale": "fr_FR",
                "data": 20
              },
              {
                "scope": "tablet",
                "locale": "en_US",
                "data": 30
              },
              {
                "scope": "tablet",
                "locale": "fr_FR",
                "data": 40
              }
            ],
            "workflow_execution_statuses": [
              {
                "uuid": "8c0fe59f-4d29-4faa-b4c3-d327e7f3cc52",
                "status": "in_progress",
                "started_at": "2024-02-22T17:31:00Z",
                "completed_at": null,
                "workflow": {
                  "uuid": "6f37476a-04c2-46c0-b6d0-e18316959068",
                  "code": "enrichment_workflow",
                  "labels": {
                    "en_US": "Enrichment workflow",
                    "fr_FR": "Workflow d'enrichissement"
                  }
                },
                "tasks": [
                  {
                    "uuid": "8f6c2d18-fbd4-4f7e-81df-cb3dc368fe07",
                    "status": "in_progress",
                    "created_at": "2024-02-22T17:31:00Z",
                    "step": {
                      "uuid": "f626d0e5-84a5-41fc-8215-65508c253edb",
                      "code": "review_step",
                      "labels": {
                        "en_US": "Marketing review",
                        "fr_FR": "Revue marketing"
                      }
                    }
                  }
                ]
              },
              {
                "uuid": "59169984-6d6c-4fa7-b925-68b8e9d31ddb",
                "status": "completed",
                "started_at": "2024-02-22T17:31:00Z",
                "completed_at": "2024-02-22T17:31:00Z",
                "workflow": {
                  "uuid": "b69ee158-a421-4680-bec0-a71bc73b8e31",
                  "code": "compliance_workflow",
                  "labels": {}
                },
                "tasks": []
              }
            ]
          },
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/products/cap"
              }
            },
            "uuid": "aec6780b-c813-4bd7-8e24-1a8574471576",
            "family": "caps",
            "groups": [],
            "parent": null,
            "root_parent": "null",
            "categories": [
              "summer_collection"
            ],
            "enabled": true,
            "values": {
              "sku": [
                {
                  "data": "cap",
                  "locale": null,
                  "scope": null,
                  "attribute_type": "pim_catalog_identifier"
                }
              ],
              "name": [
                {
                  "data": "Cap",
                  "locale": "en_US",
                  "scope": null,
                  "attribute_type": "pim_catalog_text"
                },
                {
                  "data": "Casquette",
                  "locale": "fr_FR",
                  "scope": null,
                  "attribute_type": "pim_catalog_text"
                }
              ],
              "description": [
                {
                  "data": "Cap unisex",
                  "locale": "en_US",
                  "scope": "ecommerce",
                  "attribute_type": "pim_catalog_textarea"
                },
                {
                  "data": "Cap unisex",
                  "locale": "en_US",
                  "scope": "tablet",
                  "attribute_type": "pim_catalog_textarea"
                },
                {
                  "data": "Casquette unisexe",
                  "locale": "fr_FR",
                  "scope": "ecommerce",
                  "attribute_type": "pim_catalog_textarea"
                },
                {
                  "data": "Casquette unisexe",
                  "locale": "fr_FR",
                  "scope": "tablet",
                  "attribute_type": "pim_catalog_textarea"
                }
              ],
              "price": [
                {
                  "data": [
                    {
                      "amount": "20",
                      "currency": "EUR"
                    },
                    {
                      "amount": "20",
                      "currency": "USD"
                    }
                  ],
                  "locale": null,
                  "scope": null,
                  "attribute_type": "pim_catalog_price_collection"
                }
              ],
              "color": [
                {
                  "data": "black",
                  "locale": null,
                  "scope": null,
                  "linked_data": {
                    "attribute": "color",
                    "code": "black",
                    "labels": {
                      "en_US": "Black",
                      "fr_FR": "Noir"
                    }
                  },
                  "attribute_type": "pim_catalog_simpleselect"
                }
              ]
            },
            "created": "2016-06-23T18:24:44+02:00",
            "updated": "2016-06-25T17:56:12+02:0",
            "associations": {
              "PACK": {
                "products": [
                  "d055527c-0698-4967-8f16-8a5f23f4e5cf"
                ],
                "product_models": [],
                "groups": []
              }
            },
            "quantified_associations": {},
            "quality_scores": [
              {
                "scope": "ecommerce",
                "locale": "en_US",
                "data": "A"
              },
              {
                "scope": "ecommerce",
                "locale": "fr_FR",
                "data": "B"
              },
              {
                "scope": "tablet",
                "locale": "en_US",
                "data": "D"
              },
              {
                "scope": "tablet",
                "locale": "fr_FR",
                "data": "E"
              }
            ],
            "completenesses": [
              {
                "scope": "ecommerce",
                "locale": "en_US",
                "data": 20
              },
              {
                "scope": "ecommerce",
                "locale": "fr_FR",
                "data": 30
              },
              {
                "scope": "tablet",
                "locale": "en_US",
                "data": 55
              },
              {
                "scope": "tablet",
                "locale": "fr_FR",
                "data": 70
              }
            ],
            "workflow_execution_statuses": []
          },
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/products/sweat"
              }
            },
            "uuid": "93f14b03-5ed3-4f23-87c6-ae3806041b6a",
            "family": null,
            "groups": [],
            "parent": null,
            "root_parent": "null",
            "categories": [
              "winter_collection"
            ],
            "enabled": true,
            "values": {
              "sku": [
                {
                  "data": "sweat",
                  "locale": null,
                  "scope": null,
                  "attribute_type": "pim_catalog_identifier"
                }
              ]
            },
            "created": "2016-06-23T11:24:44+02:00",
            "updated": "2016-06-23T11:24:44+02:00",
            "associations": {},
            "quantified_associations": {},
            "quality_scores": [],
            "completenesses": [],
            "workflow_execution_statuses": []
          }
        ]
      }
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the server understands the request but cannot process it due to validation errors in the provided data.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

errors (array [object]) : [
        {
         property (string) • Name of the invalid property
         message (string) • Human-readable error message
         attribute (string,null) • Attribute code (if the error is on an attribute)
         locale (string,null) • Locale code involved in the error, if any
         scope (string,null) • Channel code involved in the error, if any
        }
    ]

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Validation failed.",
      "errors": [
        {
          "property": "family",
          "message": "The tshirts family does not exist in your PIM."
        },
        {
          "property": "categories",
          "message": "The \"tvs_projectors\" category does not exist."
        },
        {
          "property": "associations.SUBSTITUTION.groups",
          "message": "You should associate existing groups. The \"promotion\" group does not exist."
        },
        {
          "property": "values",
          "message": "The \"description\" attribute requires a channel.",
          "attribute": "description",
          "locale": "en_US",
          "scope": null
        },
        {
          "property": "values",
          "message": "The \"name\" attribute requires a locale.",
          "attribute": "name",
          "locale": null,
          "scope": null
        }
      ],
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

Create a new product

This endpoint allows you to create a new product. Permissions based on your user groups are applied to the product you try to create. If no uuid is provided, the PIM will generate one for you.


REQUEST

post /api/rest/v1/products-uuid

Path parameters

Ø

Query parameters

create_missing_options (string) • When present in the query string (regardless of value), automatically creates missing attribute options during product/product model creation or update. This only works for simple select and multi select attributes that have the enable_option_creation_during_import property set to true (configurable via the Attribute API).

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/json', no other value allowed

Body

Follow the standard format of the entity

{

uuid (string) • Product UUID

enabled (boolean, true by default) • Whether the product is enabled

family (string,null, null only in the case of a non variant product by default) Family code from which the product inherits its attributes and attributes requirements. In the case of variant product, the given family should be the same as the product model family.

categories (array[string], [] by default) • Codes of the categories in which the product is classified

groups (array[string], [] by default) • Codes of the groups to which the product belong

parent (string,null, null by default) • Code of the parent product model when the product is a variant

values (object) • Product attributes values. Each key is an attribute code, and the value is an array of value objects for that attribute. See documentation for details.

associations (object) : {
        {^\w+$} (object) : {
            groups (array) • Array of groups codes with which the product is in relation
            products (array) • Array of product identifiers with which the product is in relation
            product_models (array) • Array of product model codes with which the product is in relation
        }
    }

quantified_associations (object) : {
        {^\w+$} (object) : {
            products (array) • Array of objects containing product uuids and quantities with which the product is in relation
            product_models (array) • Array of objects containing product model codes and quantities with which the product is in relation
        }
    }

}

Example

{
      "uuid": "25566245-55c3-42ce-86d9-8610ac459fa8",
      "enabled": true,
      "family": "tshirt",
      "categories": [
        "summer_collection"
      ],
      "groups": [],
      "parent": null,
      "values": {
        "sku": [
          {
            "data": "top",
            "locale": null,
            "scope": null
          }
        ],
        "name": [
          {
            "data": "Top",
            "locale": "en_US",
            "scope": null
          },
          {
            "data": "Débardeur",
            "locale": "fr_FR",
            "scope": null
          }
        ],
        "description": [
          {
            "data": "Summer top",
            "locale": "en_US",
            "scope": "ecommerce"
          },
          {
            "data": "Top",
            "locale": "en_US",
            "scope": "tablet"
          },
          {
            "data": "Débardeur pour l'été",
            "locale": "fr_FR",
            "scope": "ecommerce"
          },
          {
            "data": "Débardeur",
            "locale": "fr_FR",
            "scope": "tablet"
          }
        ],
        "price": [
          {
            "data": [
              {
                "amount": "15.5",
                "currency": "EUR"
              },
              {
                "amount": "15",
                "currency": "USD"
              }
            ],
            "locale": null,
            "scope": null
          }
        ],
        "color": [
          {
            "data": "black",
            "locale": null,
            "scope": null,
            "linked_data": {
              "attribute": "color",
              "code": "black",
              "labels": {
                "en_US": "Black",
                "fr_FR": "Noir"
              }
            }
          }
        ],
        "size": [
          {
            "data": "m",
            "locale": null,
            "scope": null,
            "linked_data": {
              "attribute": "size",
              "code": "m",
              "labels": {
                "en_US": "M",
                "fr_FR": "M"
              }
            }
          }
        ],
        "collection": [
          {
            "data": [
              "winter_2016"
            ],
            "locale": null,
            "scope": null,
            "linked_data": {
              "winter_2016": {
                "attribute": "collection",
                "code": "winter_2016",
                "labels": {
                  "en_US": "Winter 2016",
                  "fr_FR": "Hiver 2016"
                }
              }
            }
          }
        ]
      },
      "associations": {
        "PACK": {
          "products": [
            "d055527c-0698-4967-8f16-8a5f23f4e5cf"
          ],
          "product_models": [],
          "groups": []
        }
      },
      "quantified_associations": {
        "PRODUCT_SET": {
          "products": [
            {
              "uuid": "fc24e6c3-933c-4a93-8a81-e5c703d134d5",
              "quantity": 2
            },
            {
              "uuid": "a9b69002-a0b1-4ead-85c2-f8dbf59c6cfc",
              "quantity": 1
            }
          ],
          "product_models": [
            {
              "identifier": "model-biker-jacket-leather",
              "quantity": 2
            }
          ]
        }
      }
    }

RESPONSES

This response indicates that the entity was successfully created. The server has fulfilled the request and created a new resource. The response includes a Location header that contains the URI of the newly created resource.

Headers

Location • URI of the created resource

Body Format application/json

Ø

This response indicates that the server cannot process the request due to a client error, such as malformed request syntax, invalid request message framing, or deceptive request routing. It is typically used when the server cannot understand the request due to invalid JSON or other client-side issues.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 400,
      "message": "Invalid JSON message received"
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the server understands the request but cannot process it due to validation errors in the provided data.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

errors (array [object]) : [
        {
         property (string) • Name of the invalid property
         message (string) • Human-readable error message
         attribute (string,null) • Attribute code (if the error is on an attribute)
         locale (string,null) • Locale code involved in the error, if any
         scope (string,null) • Channel code involved in the error, if any
        }
    ]

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Validation failed.",
      "errors": [
        {
          "property": "family",
          "message": "The tshirts family does not exist in your PIM."
        },
        {
          "property": "categories",
          "message": "The \"tvs_projectors\" category does not exist."
        },
        {
          "property": "associations.SUBSTITUTION.groups",
          "message": "You should associate existing groups. The \"promotion\" group does not exist."
        },
        {
          "property": "values",
          "message": "The \"description\" attribute requires a channel.",
          "attribute": "description",
          "locale": "en_US",
          "scope": null
        },
        {
          "property": "values",
          "message": "The \"name\" attribute requires a locale.",
          "attribute": "name",
          "locale": null,
          "scope": null
        }
      ],
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

Update/create several products

This endpoint allows you to update and/or create several products at once. Learn more about Update behavior. Note that if no product exists for the given uuid, it creates it. Permissions based on your user groups are applied to the products you try to update. It may result in the creation of drafts if you only have edit rights through the product's categories.


REQUEST

patch /api/rest/v1/products-uuid

Path parameters

Ø

Query parameters

create_missing_options (string) • When present in the query string (regardless of value), automatically creates missing attribute options during product/product model creation or update. This only works for simple select and multi select attributes that have the enable_option_creation_during_import property set to true (configurable via the Attribute API).

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/vnd.akeneo.collection+json', no other value allowed

Body

Contains several lines, each line is a product in JSON standard format. Modifications to existing products can be specified using additional keys such as `add_categories` and `remove_categories`.

{

uuid (string) • Product UUID

identifier (string) • Product identifier, i.e. the value of the only pim_catalog_identifier attribute

enabled (boolean, true by default) • Whether the product is enabled

family (string,null, null only in the case of a non variant product by default) Family code from which the product inherits its attributes and attributes requirements. In the case of variant product, the given family should be the same as the product model family.

categories (array[string], [] by default) • Codes of the categories in which the product is classified

add_categories (array[string], [] by default) • Codes of the categories to add to the product. Existing categories will be preserved.

remove_categories (array[string], [] by default) • Codes of the categories to remove from the product. Other categories will be preserved.d

groups (array[string], [] by default) • Codes of the groups to which the product belong

parent (string,null, null by default) • Code of the parent product model when the product is a variant

values (object) • Product attributes values. Each key is an attribute code, and the value is an array of value objects for that attribute. See documentation for details.

associations (object) : {
        {^\w+$} (object) : {
            groups (array) • Array of groups codes with which the product is in relation
            products (array) • Array of product identifiers with which the product is in relation
            product_models (array) • Array of product model codes with which the product is in relation
        }
    }

quantified_associations (object) : {
        {^\w+$} (object) : {
            products (array) • Array of objects containing product uuids and quantities with which the product is in relation
            product_models (array) • Array of objects containing product model codes and quantities with which the product is in relation
        }
    }

created (string) • Date of creation

updated (string) • Date of the last update

metadata (object) : {
        workflow_status (string) • Status of the product regarding the user permissions
    }

quality_scores (array[object]) : [
        {
           scope (string) • Channel code for which the quality score is calculated
           locale (string) • Locale code for which the quality score is calculated
           data (string) • Quality score value for the given channel/locale combination
        }
    ]

completenesses (array[object]) : [
        {
           scope (string) • Channel code for which the completenesses score is calculated
           locale (string) • Channel code for which the completenesses score is calculated
           data (integer) • Completenesses score value for the given channel/locale combination
        }
    ]

workflow_execution_statuses (array[object]) : [
        {
           uuid (string) • Workflow execution UUID
           status (string) • Status of the workflow execution
           started_at (string) • Date and time when the workflow execution was started
           completed_at (string,null) • Date and time when the workflow execution was completed, null if still in progress
           workflow (object) • Workflow associated with the workflow execution
           tasks (array[object]) • Tasks associated with the workflow execution
        }
    ]

}

Example

{"uuid":"fc24e6c3-933c-4a93-8a81-e5c703d134d5","values":{"description":[{"scope":"ecommerce","locale":"en_US","data":"My amazing cap"}]}}
    {"uuid":"573dd613-0c7f-4143-83d5-63cc5e535966","values":{"sku":[{"data":"updated_sku","locale":null,"scope":null}]}, "group":["promotion"]}
    {"uuid":"25566245-55c3-42ce-86d9-8610ac459fa8","values":{"sku":[{"data":"new_product","locale":null,"scope":null}]},"family":"clothes"}
    

RESPONSES

Returns a plain text response whose lines are JSON containing the status of each update or creation

Body Format application/json

{

line (integer) • Line number

uuid (string) • Product uuid

status_code (integer) • HTTP status code, see Client errors to understand the meaning of each code

message (string) • Message explaining the error

}

Example

{"line":1,"uuid":"fc24e6c3-933c-4a93-8a81-e5c703d134d5","status_code":204}
    {"line":2,"uuid":"573dd613-0c7f-4143-83d5-63cc5e535966","status_code":422,"message":"Property \"group\" does not exist."}
    {"line":3,"uuid":"25566245-55c3-42ce-86d9-8610ac459fa8","status_code":201}
    

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the request entity is larger than the server is willing or able to process. It can occur when the number of resources in a batch request exceeds the maximum allowed limit.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 413,
      "message": "Too many resources to process, 100 is the maximum allowed."
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the server understands the request but cannot process it due to validation errors in the provided data.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

errors (array [object]) : [
        {
         property (string) • Name of the invalid property
         message (string) • Human-readable error message
         attribute (string,null) • Attribute code (if the error is on an attribute)
         locale (string,null) • Locale code involved in the error, if any
         scope (string,null) • Channel code involved in the error, if any
        }
    ]

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Validation failed.",
      "errors": [
        {
          "property": "family",
          "message": "The tshirts family does not exist in your PIM."
        },
        {
          "property": "categories",
          "message": "The \"tvs_projectors\" category does not exist."
        },
        {
          "property": "associations.SUBSTITUTION.groups",
          "message": "You should associate existing groups. The \"promotion\" group does not exist."
        },
        {
          "property": "values",
          "message": "The \"description\" attribute requires a channel.",
          "attribute": "description",
          "locale": "en_US",
          "scope": null
        },
        {
          "property": "values",
          "message": "The \"name\" attribute requires a locale.",
          "attribute": "name",
          "locale": null,
          "scope": null
        }
      ],
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

Search list of products

This endpoint allows you to search for products that match the filters provided in the request body. Products are paginated and can be filtered by scope, locales, attributes, and other criteria. User-group-based permissions are applied to the products you request.

Important limitations

  • The maximum number of attributes in the request body is 800.
  • The maximum number of search criteria is 20.
  • The maximum number of items in an array (e.g., values for filters like IN or NOT IN) is 800.


REQUEST

post /api/rest/v1/products-uuid/search

Path parameters

Ø

Query parameters

pagination_type (string, page by default) • Specify which pagination method to use for navigating through large datasets. It is useful for choosing between different pagination strategies based on your specific use case and performance requirements. See Pagination section for more details.

page (integer, 1 by default) • Specify which page of results to retrieve when using pagination. It is useful for navigating through large datasets by breaking them into smaller, manageable pages. See Pagination section for more details.

search_after (string, cursor to the first page by default) • Cursor when using the search_after pagination method type. It is essential for navigating through pages in cursor-based pagination, providing more efficient pagination for large datasets. Should never be set manually, see Pagination section for more details.

limit (integer, 10 by default) • Specify the maximum number of results to return per page. It is useful for controlling the amount of data returned in a single request, especially when dealing with large datasets. See Pagination section for more details.

with_count (boolean) • Return the count of items in the response. Be careful with that, on a big catalog, it can decrease performance in a significant way. It is useful for understanding the size of the dataset being returned, especially when dealing with large collections. Use it judiciously to avoid performance issues.

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/json', no other value allowed

Body

Follow the standard format of the entity

{

search (string) • Stringified JSON to filter products, for more details see the Filters section.

scope (string) • Filter product values to return scopable attributes for the given channel as well as the non localizable/non scopable attributes, for more details see the Filter product values via channel section.

locales (string) • Filter product values to return localizable attributes for the given locales as well as the non localizable/non scopable attributes, for more details see the Filter product values via locale section.

attributes (string) • Filter product values to only return those concerning the given attributes, for more details see the Filter product values via attributes section.

convert_measurements (boolean) • Convert values of measurement attributes to the unit configured in the channel provided by the parameter "scope". Therefore, this parameter requires the scope parameter to be provided.

with_attribute_options (boolean) • Return labels of attribute options in the response. See the linked_data format section for more details.

with_asset_share_links (boolean) • Whether to return asset collection share link URLs in the response. See the linked_data format for more details.

with_quality_scores__products (boolean) • Return product quality scores in the response

with_completenesses (boolean) • Return product completenesses in the response

with_workflow_execution_statuses (boolean) • Return an array of workflow_execution_statuses in the response

}

Example

{
      "scope": "ecommerce",
      "locales": "en_US",
      "search": "{\"completeness\":[{\"operator\": \"=\",\"value\": 100,\"scope\":\"ecommerce\"}]}",
      "attributes": "description, name",
      "with_attribute_options": false,
      "with_asset_share_links": true,
      "with_quality_scores__products": true,
      "with_completenesses": true
    }

RESPONSES

Returns products paginated. The response is paginated and includes links to navigate through the pages.

Body Format application/json

{

_links (object) : {
    self (object) : {
        href (string) • URI of the current page of resources
    }
    first (object) : {
        href (string) • URI of the first page of resources
    }
    previous (object) : {
        href (string) • URI of the previous page of resources
    }
    next (object) : {
        href (string) • URI of the next page of resources
    }
  }

current_page (integer) • Current page number

items_count (integer) • Total number of items (only if with_count parameter is set to true)

_embedded (object) : {
    items (array) : [
        {
          _links (object) : {
              self (object) : {
                  href (string) • URI of the resource
              }
          }
          uuid (string) • Product UUID
          identifier (string) • Product identifier, i.e. the value of the only pim_catalog_identifier attribute
          enabled (boolean) • Whether the product is enabled
          family (string,null)Family code from which the product inherits its attributes and attributes requirements. In the case of variant product, the given family should be the same as the product model family.
          categories (array [string]) • Codes of the categories in which the product is classified • Codes of the categories in which the product is classified
          groups (array [string]) • Codes of the groups to which the product belong. Each string of the array is equal to an existing group code. • Codes of the groups to which the product belong. Each string of the array is equal to an existing group code.
          parent (string,null) • Code of the parent product model when the product is a variant
          root_parent (string) • Code of the root parent product model when the product is a variant (only available when the with_root_parent is set to true).
          values (object) • Product attributes values. Each key is an attribute code, and the value is an array of value objects for that attribute. See documentation for details.
          associations (object) : {
              {^\w+$} (object) : {
                  groups (array [string]) • Array of groups codes with which the product is in relation
                  products (array [string]) • Array of product identifiers with which the product is in relation
                  product_models (array [string]) • Array of product model codes with which the product is in relation
              }
          }
          quantified_associations (object) : {
              {^\w+$} (object) : {
                  products (array [object]) • Array of objects containing product uuids and quantities with which the product is in relation
                  product_models (array [object]) • Array of objects containing product model codes and quantities with which the product is in relation
              }
          }
          created (string) • Date of creation
          updated (string) • Date of the last update
          metadata (object) : {
              workflow_status (string) • Status of the product regarding the user permissions
          }
          quality_scores (array [object]) : [
              {
                  scope (string) • Channel code for which the quality score is calculated
                  locale (string) • Locale code for which the quality score is calculated
                  data (string) • Quality score value for the given channel/locale combination
              }
          ]
          completenesses (array [object]) : [
              {
                  scope (string) • Channel code for which the completenesses score is calculated
                  locale (string) • Channel code for which the completenesses score is calculated
                  data (integer) • Completenesses score value for the given channel/locale combination
              }
          ]
          workflow_execution_statuses (array [object]) : [
              {
                  uuid (string) • Workflow execution UUID
                  status (string) • Status of the workflow execution
                  started_at (string) • Date and time when the workflow execution was started
                  completed_at (string,null) • Date and time when the workflow execution was completed, null if still in progress
                  workflow (object) • Workflow associated with the workflow execution
                  tasks (array [object]) • Tasks associated with the workflow execution
              }
          ]
        }
    ]
  }

}

Example

{
      "_links": {
        "self": {
          "href": "https://demo.akeneo.com/api/rest/v1/products-uuid?page=3&with_count=true&limit=3&with_quality_scores=true&with_completenesses=true&with_attribute_options=true&with_workflow_execution_statuses=true"
        },
        "first": {
          "href": "https://demo.akeneo.com/api/rest/v1/products-uuid?page=1&with_count=true&limit=3&with_quality_scores=true&with_completenesses=true&with_attribute_options=true&with_workflow_execution_statuses=true"
        },
        "previous": {
          "href": "https://demo.akeneo.com/api/rest/v1/products-uuid?page=2&with_count=true&limit=3&with_quality_scores=true&with_completenesses=true&with_attribute_options=true&with_workflow_execution_statuses=true"
        },
        "next": {
          "href": "https://demo.akeneo.com/api/rest/v1/products-uuid?page=4&with_count=true&limit=3&with_quality_scores=true&with_completenesses=true&with_attribute_options=true&with_workflow_execution_statuses=true"
        }
      },
      "current_page": 3,
      "items_count": 3,
      "_embedded": {
        "items": [
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/products/top"
              }
            },
            "uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
            "enabled": true,
            "family": "tshirt",
            "categories": [
              "summer_collection"
            ],
            "groups": [],
            "parent": null,
            "root_parent": "null",
            "values": {
              "sku": [
                {
                  "data": "top",
                  "locale": null,
                  "scope": null,
                  "attribute_type": "pim_catalog_identifier"
                }
              ],
              "name": [
                {
                  "data": "Top",
                  "locale": "en_US",
                  "scope": null,
                  "attribute_type": "pim_catalog_text"
                },
                {
                  "data": "Débardeur",
                  "locale": "fr_FR",
                  "scope": null,
                  "attribute_type": "pim_catalog_text"
                }
              ],
              "description": [
                {
                  "data": "Summer top",
                  "locale": "en_US",
                  "scope": "ecommerce",
                  "attribute_type": "pim_catalog_textarea"
                },
                {
                  "data": "Top",
                  "locale": "en_US",
                  "scope": "tablet",
                  "attribute_type": "pim_catalog_textarea"
                },
                {
                  "data": "Débardeur pour l'été",
                  "locale": "fr_FR",
                  "scope": "ecommerce",
                  "attribute_type": "pim_catalog_textarea"
                },
                {
                  "data": "Débardeur",
                  "locale": "fr_FR",
                  "scope": "tablet",
                  "attribute_type": "pim_catalog_textarea"
                }
              ],
              "price": [
                {
                  "data": [
                    {
                      "amount": "15.5",
                      "currency": "EUR"
                    },
                    {
                      "amount": "15",
                      "currency": "USD"
                    }
                  ],
                  "locale": null,
                  "scope": null,
                  "attribute_type": "pim_catalog_price_collection"
                }
              ],
              "color": [
                {
                  "data": "black",
                  "locale": null,
                  "scope": null,
                  "linked_data": {
                    "attribute": "color",
                    "code": "black",
                    "labels": {
                      "en_US": "Black",
                      "fr_FR": "Noir"
                    }
                  },
                  "attribute_type": "pim_catalog_simpleselect"
                }
              ],
              "size": [
                {
                  "data": "m",
                  "locale": null,
                  "scope": null,
                  "linked_data": {
                    "attribute": "size",
                    "code": "m",
                    "labels": {
                      "en_US": "M",
                      "fr_FR": "M"
                    }
                  },
                  "attribute_type": "pim_catalog_simpleselect"
                }
              ],
              "collection": [
                {
                  "data": [
                    "winter_2016"
                  ],
                  "locale": null,
                  "scope": null,
                  "linked_data": {
                    "winter_2016": {
                      "attribute": "collection",
                      "code": "winter_2016",
                      "labels": {
                        "en_US": "Winter 2016",
                        "fr_FR": "Hiver 2016"
                      }
                    }
                  },
                  "attribute_type": "pim_catalog_multiselect"
                }
              ]
            },
            "created": "2016-06-23T18:24:44+02:00",
            "updated": "2016-06-25T17:56:12+02:00",
            "associations": {
              "PACK": {
                "products": [
                  "d055527c-0698-4967-8f16-8a5f23f4e5cf"
                ],
                "product_models": [],
                "groups": []
              }
            },
            "quantified_associations": {
              "PRODUCT_SET": {
                "products": [
                  {
                    "uuid": "fc24e6c3-933c-4a93-8a81-e5c703d134d5",
                    "quantity": 2
                  },
                  {
                    "uuid": "a9b69002-a0b1-4ead-85c2-f8dbf59c6cfc",
                    "quantity": 1
                  }
                ],
                "product_models": [
                  {
                    "identifier": "model-biker-jacket-leather",
                    "quantity": 2
                  }
                ]
              }
            },
            "quality_scores": [
              {
                "scope": "ecommerce",
                "locale": "en_US",
                "data": "A"
              },
              {
                "scope": "ecommerce",
                "locale": "fr_FR",
                "data": "B"
              },
              {
                "scope": "tablet",
                "locale": "en_US",
                "data": "D"
              },
              {
                "scope": "tablet",
                "locale": "fr_FR",
                "data": "E"
              }
            ],
            "completenesses": [
              {
                "scope": "ecommerce",
                "locale": "en_US",
                "data": 10
              },
              {
                "scope": "ecommerce",
                "locale": "fr_FR",
                "data": 20
              },
              {
                "scope": "tablet",
                "locale": "en_US",
                "data": 30
              },
              {
                "scope": "tablet",
                "locale": "fr_FR",
                "data": 40
              }
            ],
            "workflow_execution_statuses": [
              {
                "uuid": "8c0fe59f-4d29-4faa-b4c3-d327e7f3cc52",
                "status": "in_progress",
                "started_at": "2024-02-22T17:31:00Z",
                "completed_at": null,
                "workflow": {
                  "uuid": "6f37476a-04c2-46c0-b6d0-e18316959068",
                  "code": "enrichment_workflow",
                  "labels": {
                    "en_US": "Enrichment workflow",
                    "fr_FR": "Workflow d'enrichissement"
                  }
                },
                "tasks": [
                  {
                    "uuid": "8f6c2d18-fbd4-4f7e-81df-cb3dc368fe07",
                    "status": "in_progress",
                    "created_at": "2024-02-22T17:31:00Z",
                    "step": {
                      "uuid": "f626d0e5-84a5-41fc-8215-65508c253edb",
                      "code": "review_step",
                      "labels": {
                        "en_US": "Marketing review",
                        "fr_FR": "Revue marketing"
                      }
                    }
                  }
                ]
              },
              {
                "uuid": "59169984-6d6c-4fa7-b925-68b8e9d31ddb",
                "status": "completed",
                "started_at": "2024-02-22T17:31:00Z",
                "completed_at": "2024-02-22T17:31:00Z",
                "workflow": {
                  "uuid": "b69ee158-a421-4680-bec0-a71bc73b8e31",
                  "code": "compliance_workflow",
                  "labels": {}
                },
                "tasks": []
              }
            ]
          },
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/products/cap"
              }
            },
            "uuid": "aec6780b-c813-4bd7-8e24-1a8574471576",
            "family": "caps",
            "groups": [],
            "parent": null,
            "root_parent": "null",
            "categories": [
              "summer_collection"
            ],
            "enabled": true,
            "values": {
              "sku": [
                {
                  "data": "cap",
                  "locale": null,
                  "scope": null,
                  "attribute_type": "pim_catalog_identifier"
                }
              ],
              "name": [
                {
                  "data": "Cap",
                  "locale": "en_US",
                  "scope": null,
                  "attribute_type": "pim_catalog_text"
                },
                {
                  "data": "Casquette",
                  "locale": "fr_FR",
                  "scope": null,
                  "attribute_type": "pim_catalog_text"
                }
              ],
              "description": [
                {
                  "data": "Cap unisex",
                  "locale": "en_US",
                  "scope": "ecommerce",
                  "attribute_type": "pim_catalog_textarea"
                },
                {
                  "data": "Cap unisex",
                  "locale": "en_US",
                  "scope": "tablet",
                  "attribute_type": "pim_catalog_textarea"
                },
                {
                  "data": "Casquette unisexe",
                  "locale": "fr_FR",
                  "scope": "ecommerce",
                  "attribute_type": "pim_catalog_textarea"
                },
                {
                  "data": "Casquette unisexe",
                  "locale": "fr_FR",
                  "scope": "tablet",
                  "attribute_type": "pim_catalog_textarea"
                }
              ],
              "price": [
                {
                  "data": [
                    {
                      "amount": "20",
                      "currency": "EUR"
                    },
                    {
                      "amount": "20",
                      "currency": "USD"
                    }
                  ],
                  "locale": null,
                  "scope": null,
                  "attribute_type": "pim_catalog_price_collection"
                }
              ],
              "color": [
                {
                  "data": "black",
                  "locale": null,
                  "scope": null,
                  "linked_data": {
                    "attribute": "color",
                    "code": "black",
                    "labels": {
                      "en_US": "Black",
                      "fr_FR": "Noir"
                    }
                  },
                  "attribute_type": "pim_catalog_simpleselect"
                }
              ]
            },
            "created": "2016-06-23T18:24:44+02:00",
            "updated": "2016-06-25T17:56:12+02:0",
            "associations": {
              "PACK": {
                "products": [
                  "d055527c-0698-4967-8f16-8a5f23f4e5cf"
                ],
                "product_models": [],
                "groups": []
              }
            },
            "quantified_associations": {},
            "quality_scores": [
              {
                "scope": "ecommerce",
                "locale": "en_US",
                "data": "A"
              },
              {
                "scope": "ecommerce",
                "locale": "fr_FR",
                "data": "B"
              },
              {
                "scope": "tablet",
                "locale": "en_US",
                "data": "D"
              },
              {
                "scope": "tablet",
                "locale": "fr_FR",
                "data": "E"
              }
            ],
            "completenesses": [
              {
                "scope": "ecommerce",
                "locale": "en_US",
                "data": 20
              },
              {
                "scope": "ecommerce",
                "locale": "fr_FR",
                "data": 30
              },
              {
                "scope": "tablet",
                "locale": "en_US",
                "data": 55
              },
              {
                "scope": "tablet",
                "locale": "fr_FR",
                "data": 70
              }
            ],
            "workflow_execution_statuses": []
          },
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/products/sweat"
              }
            },
            "uuid": "93f14b03-5ed3-4f23-87c6-ae3806041b6a",
            "family": null,
            "groups": [],
            "parent": null,
            "root_parent": "null",
            "categories": [
              "winter_collection"
            ],
            "enabled": true,
            "values": {
              "sku": [
                {
                  "data": "sweat",
                  "locale": null,
                  "scope": null,
                  "attribute_type": "pim_catalog_identifier"
                }
              ]
            },
            "created": "2016-06-23T11:24:44+02:00",
            "updated": "2016-06-23T11:24:44+02:00",
            "associations": {},
            "quantified_associations": {},
            "quality_scores": [],
            "completenesses": [],
            "workflow_execution_statuses": []
          }
        ]
      }
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the server understands the request but cannot process it due to validation errors in the provided data.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

errors (array [object]) : [
        {
         property (string) • Name of the invalid property
         message (string) • Human-readable error message
         attribute (string,null) • Attribute code (if the error is on an attribute)
         locale (string,null) • Locale code involved in the error, if any
         scope (string,null) • Channel code involved in the error, if any
        }
    ]

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Validation failed.",
      "errors": [
        {
          "property": "family",
          "message": "The tshirts family does not exist in your PIM."
        },
        {
          "property": "categories",
          "message": "The \"tvs_projectors\" category does not exist."
        },
        {
          "property": "associations.SUBSTITUTION.groups",
          "message": "You should associate existing groups. The \"promotion\" group does not exist."
        },
        {
          "property": "values",
          "message": "The \"description\" attribute requires a channel.",
          "attribute": "description",
          "locale": "en_US",
          "scope": null
        },
        {
          "property": "values",
          "message": "The \"name\" attribute requires a locale.",
          "attribute": "name",
          "locale": null,
          "scope": null
        }
      ],
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

Get a product

This endpoint allows you to get the information about a given product. Permissions based on your user groups are applied to the product you request.


REQUEST

get /api/rest/v1/products-uuid/{uuid}

Path parameters

uuid (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the UUID is correctly formatted and corresponds to an existing entity in the system.

Query parameters

with_attribute_options (boolean) • Return labels of attribute options in the response. When set to true, the response will include human-readable labels for attribute options alongside their codes. This is useful for displaying human-readable labels instead of just option codes, which improves the user experience in frontend applications. If set to false, the response will only include option codes, which can improve performance. See the linked_data format section for more details.

with_asset_share_links (boolean) • Return asset collection share link URLs in the response. When set to true, the response will include direct URLs to asset collections for sharing purposes. This is useful for accessing direct links to asset collections, which can be used for sharing or external integrations. If set to false, the response will not include share links, which can improve performance. See the linked_data format for more details.

with_quality_scores (boolean) • Return product quality scores in the response. When set to true, the response will include quality score information for each product. This is useful for assessing and monitoring product data quality, which is essential for maintaining high data standards and improving product information. If set to false, the response will not include quality scores, which can improve performance.

with_completenesses (boolean) • Return product completenesses information in the response. When set to true, the response will include detailed completeness information for each product. This is useful for understanding the data quality and completeness of products, which is essential for product management and quality assurance. If set to false, the response will not include completeness information, which can improve performance.

with_root_parent (boolean) • Return the root parent product model code of a variant in the response. When set to true, the response will include the root parent product model code for each variant product. This is useful for understanding the hierarchical relationship between product variants and their parent models, which is essential for product catalog navigation. If set to false, the response will not include parent model information, which can improve performance.

with_workflow_execution_statuses (boolean)

Return an array of workflow_execution_statuses directly associated with the requested entity (product or product model) in the response. Statuses are level-specific and are not inherited from parent models. For a complete overview of a variant product, you must query the variant itself and its parent model(s) in separate requests. Each workflow object contains:

  • The overall execution status (e.g., in_progress, completed).
  • A list of all associated tasks.

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Returns the content of the product in JSON standard format

Body Format application/json

{

uuid (string) • Product UUID

identifier (string) • Product identifier, i.e. the value of the only pim_catalog_identifier attribute

enabled (boolean) • Whether the product is enabled

family (string,null)Family code from which the product inherits its attributes and attributes requirements. In the case of variant product, the given family should be the same as the product model family.

categories (array [string]) • Codes of the categories in which the product is classified

groups (array [string]) • Codes of the groups to which the product belong. Each string of the array is equal to an existing group code.

parent (string,null) • Code of the parent product model when the product is a variant

root_parent (string) • Code of the root parent product model when the product is a variant (only available when the with_root_parent is set to true).

values (object) • Product attributes values. Each key is an attribute code, and the value is an array of value objects for that attribute. See documentation for details.

associations (object) : {
    {^\w+$} (object) : {
        groups (array[string]) • Array of groups codes with which the product is in relation
        products (array[string]) • Array of product identifiers with which the product is in relation
        product_models (array[string]) • Array of product model codes with which the product is in relation
    }
  }

quantified_associations (object) : {
    {^\w+$} (object) : {
        products (array[object]) • Array of objects containing product uuids and quantities with which the product is in relation
        product_models (array[object]) • Array of objects containing product model codes and quantities with which the product is in relation
    }
  }

created (string) • Date of creation

updated (string) • Date of the last update

metadata (object) : {
    workflow_status (string) • Status of the product regarding the user permissions
  }

quality_scores (array [object]) : [
        {
         scope (string) • Channel code for which the quality score is calculated
         locale (string) • Locale code for which the quality score is calculated
         data (string) • Quality score value for the given channel/locale combination
        }
    ]

completenesses (array [object]) : [
        {
         scope (string) • Channel code for which the completenesses score is calculated
         locale (string) • Channel code for which the completenesses score is calculated
         data (integer) • Completenesses score value for the given channel/locale combination
        }
    ]

workflow_execution_statuses (array [object]) : [
        {
         uuid (string) • Workflow execution UUID
         status (string) • Status of the workflow execution
         started_at (string) • Date and time when the workflow execution was started
         completed_at (string,null) • Date and time when the workflow execution was completed, null if still in progress
         workflow (object) • Workflow associated with the workflow execution
         tasks (array) • Tasks associated with the workflow execution
        }
    ]

}

Example

{
      "uuid": "25566245-55c3-42ce-86d9-8610ac459fa8",
      "enabled": true,
      "family": "tshirt",
      "categories": [
        "summer_collection"
      ],
      "groups": [],
      "parent": null,
      "root_parent": "null",
      "values": {
        "sku": [
          {
            "data": "top",
            "locale": null,
            "scope": null,
            "attribute_type": "pim_catalog_identifier"
          }
        ],
        "name": [
          {
            "data": "Top",
            "locale": "en_US",
            "scope": null,
            "attribute_type": "pim_catalog_text"
          },
          {
            "data": "Débardeur",
            "locale": "fr_FR",
            "scope": null,
            "attribute_type": "pim_catalog_text"
          }
        ],
        "description": [
          {
            "data": "Summer top",
            "locale": "en_US",
            "scope": "ecommerce",
            "attribute_type": "pim_catalog_textarea"
          },
          {
            "data": "Top",
            "locale": "en_US",
            "scope": "tablet",
            "attribute_type": "pim_catalog_textarea"
          },
          {
            "data": "Débardeur pour l'été",
            "locale": "fr_FR",
            "scope": "ecommerce",
            "attribute_type": "pim_catalog_textarea"
          },
          {
            "data": "Débardeur",
            "locale": "fr_FR",
            "scope": "tablet",
            "attribute_type": "pim_catalog_textarea"
          }
        ],
        "price": [
          {
            "data": [
              {
                "amount": "15.5",
                "currency": "EUR"
              },
              {
                "amount": "15",
                "currency": "USD"
              }
            ],
            "locale": null,
            "scope": null,
            "attribute_type": "pim_catalog_price_collection"
          }
        ],
        "color": [
          {
            "data": "black",
            "locale": null,
            "scope": null,
            "linked_data": {
              "attribute": "color",
              "code": "black",
              "labels": {
                "en_US": "Black",
                "fr_FR": "Noir"
              }
            },
            "attribute_type": "pim_catalog_simpleselect"
          }
        ],
        "size": [
          {
            "data": "m",
            "locale": null,
            "scope": null,
            "linked_data": {
              "attribute": "size",
              "code": "m",
              "labels": {
                "en_US": "M",
                "fr_FR": "M"
              }
            },
            "attribute_type": "pim_catalog_simpleselect"
          }
        ],
        "collection": [
          {
            "data": [
              "winter_2016"
            ],
            "locale": null,
            "scope": null,
            "linked_data": {
              "winter_2016": {
                "attribute": "collection",
                "code": "winter_2016",
                "labels": {
                  "en_US": "Winter 2016",
                  "fr_FR": "Hiver 2016"
                }
              }
            },
            "attribute_type": "pim_catalog_multiselect"
          }
        ]
      },
      "created": "2016-06-23T18:24:44+02:00",
      "updated": "2016-06-25T17:56:12+02:00",
      "associations": {
        "PACK": {
          "products": [
            "d055527c-0698-4967-8f16-8a5f23f4e5cf"
          ],
          "product_models": [],
          "groups": []
        }
      },
      "quantified_associations": {
        "PRODUCT_SET": {
          "products": [
            {
              "uuid": "fc24e6c3-933c-4a93-8a81-e5c703d134d5",
              "quantity": 2
            },
            {
              "uuid": "a9b69002-a0b1-4ead-85c2-f8dbf59c6cfc",
              "quantity": 1
            }
          ],
          "product_models": [
            {
              "identifier": "model-biker-jacket-leather",
              "quantity": 2
            }
          ]
        }
      },
      "quality_scores": [
        {
          "scope": "ecommerce",
          "locale": "en_US",
          "data": "A"
        },
        {
          "scope": "ecommerce",
          "locale": "fr_FR",
          "data": "B"
        },
        {
          "scope": "tablet",
          "locale": "en_US",
          "data": "D"
        },
        {
          "scope": "tablet",
          "locale": "fr_FR",
          "data": "E"
        }
      ],
      "completenesses": [
        {
          "scope": "ecommerce",
          "locale": "en_US",
          "data": 10
        },
        {
          "scope": "ecommerce",
          "locale": "fr_FR",
          "data": 20
        },
        {
          "scope": "tablet",
          "locale": "en_US",
          "data": 30
        },
        {
          "scope": "tablet",
          "locale": "fr_FR",
          "data": 40
        }
      ],
      "workflow_execution_statuses": [
        {
          "uuid": "8c0fe59f-4d29-4faa-b4c3-d327e7f3cc52",
          "status": "in_progress",
          "started_at": "2024-02-22T17:31:00Z",
          "completed_at": null,
          "workflow": {
            "uuid": "6f37476a-04c2-46c0-b6d0-e18316959068",
            "code": "enrichment_workflow",
            "labels": {
              "en_US": "Enrichment workflow",
              "fr_FR": "Workflow d'enrichissement"
            }
          },
          "tasks": [
            {
              "uuid": "8f6c2d18-fbd4-4f7e-81df-cb3dc368fe07",
              "status": "in_progress",
              "created_at": "2024-02-22T17:31:00Z",
              "step": {
                "uuid": "f626d0e5-84a5-41fc-8215-65508c253edb",
                "code": "review_step",
                "labels": {
                  "en_US": "Marketing review",
                  "fr_FR": "Revue marketing"
                }
              }
            }
          ]
        },
        {
          "uuid": "59169984-6d6c-4fa7-b925-68b8e9d31ddb",
          "status": "completed",
          "started_at": "2024-02-22T17:31:00Z",
          "completed_at": "2024-02-22T17:31:00Z",
          "workflow": {
            "uuid": "b69ee158-a421-4680-bec0-a71bc73b8e31",
            "code": "compliance_workflow",
            "labels": {}
          },
          "tasks": []
        }
      ]
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 404,
      "message": "Resource `my_resource_code` does not exist."
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Update/create a product

This endpoint allows you to update a given product. Learn more about Update behavior. Note that if no product exists for the given uuid, it creates it. In the Enterprise Edition, permissions based on your user groups are applied to the product you try to update. It may result in the creation of a draft if you only have edit rights through the product's categories.


REQUEST

patch /api/rest/v1/products-uuid/{uuid}

Path parameters

uuid (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the UUID is correctly formatted and corresponds to an existing entity in the system.

Query parameters

create_missing_options (string) • When present in the query string (regardless of value), automatically creates missing attribute options during product/product model creation or update. This only works for simple select and multi select attributes that have the enable_option_creation_during_import property set to true (configurable via the Attribute API).

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/json', no other value allowed

Body

Follow the standard format of the entity

{

uuid (string) • Product UUID

identifier (string) • Product identifier, i.e. the value of the only pim_catalog_identifier attribute

enabled (boolean, true by default) • Whether the product is enabled

family (string,null, null only in the case of a non variant product by default) Family code from which the product inherits its attributes and attributes requirements. In the case of variant product, the given family should be the same as the product model family.

categories (array[string], [] by default) • Codes of the categories in which the product is classified

add_categories (array[string], [] by default) • Codes of the categories to add to the product. Existing categories will be preserved.

remove_categories (array[string], [] by default) • Codes of the categories to remove from the product. Other categories will be preserved.d

groups (array[string], [] by default) • Codes of the groups to which the product belong

parent (string,null, null by default) • Code of the parent product model when the product is a variant

values (object) • Product attributes values. Each key is an attribute code, and the value is an array of value objects for that attribute. See documentation for details.

associations (object) : {
        {^\w+$} (object) : {
            groups (array) • Array of groups codes with which the product is in relation
            products (array) • Array of product identifiers with which the product is in relation
            product_models (array) • Array of product model codes with which the product is in relation
        }
    }

quantified_associations (object) : {
        {^\w+$} (object) : {
            products (array) • Array of objects containing product uuids and quantities with which the product is in relation
            product_models (array) • Array of objects containing product model codes and quantities with which the product is in relation
        }
    }

created (string) • Date of creation

updated (string) • Date of the last update

metadata (object) : {
        workflow_status (string) • Status of the product regarding the user permissions
    }

quality_scores (array[object]) : [
        {
           scope (string) • Channel code for which the quality score is calculated
           locale (string) • Locale code for which the quality score is calculated
           data (string) • Quality score value for the given channel/locale combination
        }
    ]

completenesses (array[object]) : [
        {
           scope (string) • Channel code for which the completenesses score is calculated
           locale (string) • Channel code for which the completenesses score is calculated
           data (integer) • Completenesses score value for the given channel/locale combination
        }
    ]

workflow_execution_statuses (array[object]) : [
        {
           uuid (string) • Workflow execution UUID
           status (string) • Status of the workflow execution
           started_at (string) • Date and time when the workflow execution was started
           completed_at (string,null) • Date and time when the workflow execution was completed, null if still in progress
           workflow (object) • Workflow associated with the workflow execution
           tasks (array[object]) • Tasks associated with the workflow execution
        }
    ]

}

Example

{
      "uuid": "25566245-55c3-42ce-86d9-8610ac459fa8",
      "enabled": true,
      "family": "tshirt",
      "categories": [
        "summer_collection"
      ],
      "groups": [],
      "parent": null,
      "root_parent": "null",
      "values": {
        "sku": [
          {
            "data": "top",
            "locale": null,
            "scope": null,
            "attribute_type": "pim_catalog_identifier"
          }
        ],
        "name": [
          {
            "data": "Top",
            "locale": "en_US",
            "scope": null,
            "attribute_type": "pim_catalog_text"
          },
          {
            "data": "Débardeur",
            "locale": "fr_FR",
            "scope": null,
            "attribute_type": "pim_catalog_text"
          }
        ],
        "description": [
          {
            "data": "Summer top",
            "locale": "en_US",
            "scope": "ecommerce",
            "attribute_type": "pim_catalog_textarea"
          },
          {
            "data": "Top",
            "locale": "en_US",
            "scope": "tablet",
            "attribute_type": "pim_catalog_textarea"
          },
          {
            "data": "Débardeur pour l'été",
            "locale": "fr_FR",
            "scope": "ecommerce",
            "attribute_type": "pim_catalog_textarea"
          },
          {
            "data": "Débardeur",
            "locale": "fr_FR",
            "scope": "tablet",
            "attribute_type": "pim_catalog_textarea"
          }
        ],
        "price": [
          {
            "data": [
              {
                "amount": "15.5",
                "currency": "EUR"
              },
              {
                "amount": "15",
                "currency": "USD"
              }
            ],
            "locale": null,
            "scope": null,
            "attribute_type": "pim_catalog_price_collection"
          }
        ],
        "color": [
          {
            "data": "black",
            "locale": null,
            "scope": null,
            "linked_data": {
              "attribute": "color",
              "code": "black",
              "labels": {
                "en_US": "Black",
                "fr_FR": "Noir"
              }
            },
            "attribute_type": "pim_catalog_simpleselect"
          }
        ],
        "size": [
          {
            "data": "m",
            "locale": null,
            "scope": null,
            "linked_data": {
              "attribute": "size",
              "code": "m",
              "labels": {
                "en_US": "M",
                "fr_FR": "M"
              }
            },
            "attribute_type": "pim_catalog_simpleselect"
          }
        ],
        "collection": [
          {
            "data": [
              "winter_2016"
            ],
            "locale": null,
            "scope": null,
            "linked_data": {
              "winter_2016": {
                "attribute": "collection",
                "code": "winter_2016",
                "labels": {
                  "en_US": "Winter 2016",
                  "fr_FR": "Hiver 2016"
                }
              }
            },
            "attribute_type": "pim_catalog_multiselect"
          }
        ]
      },
      "created": "2016-06-23T18:24:44+02:00",
      "updated": "2016-06-25T17:56:12+02:00",
      "associations": {
        "PACK": {
          "products": [
            "d055527c-0698-4967-8f16-8a5f23f4e5cf"
          ],
          "product_models": [],
          "groups": []
        }
      },
      "quantified_associations": {
        "PRODUCT_SET": {
          "products": [
            {
              "uuid": "fc24e6c3-933c-4a93-8a81-e5c703d134d5",
              "quantity": 2
            },
            {
              "uuid": "a9b69002-a0b1-4ead-85c2-f8dbf59c6cfc",
              "quantity": 1
            }
          ],
          "product_models": [
            {
              "identifier": "model-biker-jacket-leather",
              "quantity": 2
            }
          ]
        }
      },
      "quality_scores": [
        {
          "scope": "ecommerce",
          "locale": "en_US",
          "data": "A"
        },
        {
          "scope": "ecommerce",
          "locale": "fr_FR",
          "data": "B"
        },
        {
          "scope": "tablet",
          "locale": "en_US",
          "data": "D"
        },
        {
          "scope": "tablet",
          "locale": "fr_FR",
          "data": "E"
        }
      ],
      "completenesses": [
        {
          "scope": "ecommerce",
          "locale": "en_US",
          "data": 10
        },
        {
          "scope": "ecommerce",
          "locale": "fr_FR",
          "data": 20
        },
        {
          "scope": "tablet",
          "locale": "en_US",
          "data": 30
        },
        {
          "scope": "tablet",
          "locale": "fr_FR",
          "data": 40
        }
      ],
      "workflow_execution_statuses": [
        {
          "uuid": "8c0fe59f-4d29-4faa-b4c3-d327e7f3cc52",
          "status": "in_progress",
          "started_at": "2024-02-22T17:31:00Z",
          "completed_at": null,
          "workflow": {
            "uuid": "6f37476a-04c2-46c0-b6d0-e18316959068",
            "code": "enrichment_workflow",
            "labels": {
              "en_US": "Enrichment workflow",
              "fr_FR": "Workflow d'enrichissement"
            }
          },
          "tasks": [
            {
              "uuid": "8f6c2d18-fbd4-4f7e-81df-cb3dc368fe07",
              "status": "in_progress",
              "created_at": "2024-02-22T17:31:00Z",
              "step": {
                "uuid": "f626d0e5-84a5-41fc-8215-65508c253edb",
                "code": "review_step",
                "labels": {
                  "en_US": "Marketing review",
                  "fr_FR": "Revue marketing"
                }
              }
            }
          ]
        },
        {
          "uuid": "59169984-6d6c-4fa7-b925-68b8e9d31ddb",
          "status": "completed",
          "started_at": "2024-02-22T17:31:00Z",
          "completed_at": "2024-02-22T17:31:00Z",
          "workflow": {
            "uuid": "b69ee158-a421-4680-bec0-a71bc73b8e31",
            "code": "compliance_workflow",
            "labels": {}
          },
          "tasks": []
        }
      ]
    }

RESPONSES

This response indicates that the entity was successfully created. The server has fulfilled the request and created a new resource. The response includes a Location header that contains the URI of the newly created resource.

Headers

Location • URI of the created resource

Body Format application/json

Ø

This response indicates that the request was successful and that there is no content to return. It is typically used in response to a successful update operation where the server does not need to return any data to the client.

Headers

Location • URI of the updated resource

Body Format application/json

Ø

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the server understands the request but cannot process it due to validation errors in the provided data.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

errors (array [object]) : [
        {
         property (string) • Name of the invalid property
         message (string) • Human-readable error message
         attribute (string,null) • Attribute code (if the error is on an attribute)
         locale (string,null) • Locale code involved in the error, if any
         scope (string,null) • Channel code involved in the error, if any
        }
    ]

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Validation failed.",
      "errors": [
        {
          "property": "family",
          "message": "The tshirts family does not exist in your PIM."
        },
        {
          "property": "categories",
          "message": "The \"tvs_projectors\" category does not exist."
        },
        {
          "property": "associations.SUBSTITUTION.groups",
          "message": "You should associate existing groups. The \"promotion\" group does not exist."
        },
        {
          "property": "values",
          "message": "The \"description\" attribute requires a channel.",
          "attribute": "description",
          "locale": "en_US",
          "scope": null
        },
        {
          "property": "values",
          "message": "The \"name\" attribute requires a locale.",
          "attribute": "name",
          "locale": null,
          "scope": null
        }
      ],
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

Delete a product

This endpoint allows you to delete a given product. Permissions based on your user groups are applied to the product you try to delete.


REQUEST

delete /api/rest/v1/products-uuid/{uuid}

Path parameters

uuid (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the UUID is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

No content to return. Means that the deletion was successful.

Body Format application/json

Ø

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 404,
      "message": "Resource `my_resource_code` does not exist."
    }

Submit a draft for approval

This endpoint allows you to submit a draft for approval


REQUEST

post /api/rest/v1/products-uuid/{uuid}/proposal

Path parameters

uuid (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the UUID is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

This response indicates that the entity was successfully created. The server has fulfilled the request and created a new resource. The response includes a Location header that contains the URI of the newly created resource.

Headers

Location • URI of the created resource

Body Format application/json

Ø

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the server understands the request but cannot process it due to validation errors in the provided data.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

errors (array [object]) : [
        {
         property (string) • Name of the invalid property
         message (string) • Human-readable error message
         attribute (string,null) • Attribute code (if the error is on an attribute)
         locale (string,null) • Locale code involved in the error, if any
         scope (string,null) • Channel code involved in the error, if any
        }
    ]

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Validation failed.",
      "errors": [
        {
          "property": "family",
          "message": "The tshirts family does not exist in your PIM."
        },
        {
          "property": "categories",
          "message": "The \"tvs_projectors\" category does not exist."
        },
        {
          "property": "associations.SUBSTITUTION.groups",
          "message": "You should associate existing groups. The \"promotion\" group does not exist."
        },
        {
          "property": "values",
          "message": "The \"description\" attribute requires a channel.",
          "attribute": "description",
          "locale": "en_US",
          "scope": null
        },
        {
          "property": "values",
          "message": "The \"name\" attribute requires a locale.",
          "attribute": "name",
          "locale": null,
          "scope": null
        }
      ],
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

Get a draft

This endpoint allows you to get the information about a given draft


REQUEST

get /api/rest/v1/products-uuid/{uuid}/draft

Path parameters

uuid (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the UUID is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Returns the content of the product in JSON standard format

Body Format application/json

{

uuid (string) • Product UUID

identifier (string) • Product identifier, i.e. the value of the only pim_catalog_identifier attribute

enabled (boolean) • Whether the product is enabled

family (string,null)Family code from which the product inherits its attributes and attributes requirements. In the case of variant product, the given family should be the same as the product model family.

categories (array [string]) • Codes of the categories in which the product is classified

groups (array [string]) • Codes of the groups to which the product belong. Each string of the array is equal to an existing group code.

parent (string,null) • Code of the parent product model when the product is a variant

root_parent (string) • Code of the root parent product model when the product is a variant (only available when the with_root_parent is set to true).

values (object) • Product attributes values. Each key is an attribute code, and the value is an array of value objects for that attribute. See documentation for details.

associations (object) : {
    {^\w+$} (object) : {
        groups (array[string]) • Array of groups codes with which the product is in relation
        products (array[string]) • Array of product identifiers with which the product is in relation
        product_models (array[string]) • Array of product model codes with which the product is in relation
    }
  }

quantified_associations (object) : {
    {^\w+$} (object) : {
        products (array[object]) • Array of objects containing product uuids and quantities with which the product is in relation
        product_models (array[object]) • Array of objects containing product model codes and quantities with which the product is in relation
    }
  }

created (string) • Date of creation

updated (string) • Date of the last update

metadata (object) : {
    workflow_status (string) • Status of the product regarding the user permissions
  }

quality_scores (array [object]) : [
        {
         scope (string) • Channel code for which the quality score is calculated
         locale (string) • Locale code for which the quality score is calculated
         data (string) • Quality score value for the given channel/locale combination
        }
    ]

completenesses (array [object]) : [
        {
         scope (string) • Channel code for which the completenesses score is calculated
         locale (string) • Channel code for which the completenesses score is calculated
         data (integer) • Completenesses score value for the given channel/locale combination
        }
    ]

workflow_execution_statuses (array [object]) : [
        {
         uuid (string) • Workflow execution UUID
         status (string) • Status of the workflow execution
         started_at (string) • Date and time when the workflow execution was started
         completed_at (string,null) • Date and time when the workflow execution was completed, null if still in progress
         workflow (object) • Workflow associated with the workflow execution
         tasks (array) • Tasks associated with the workflow execution
        }
    ]

}

Example

{
      "uuid": "25566245-55c3-42ce-86d9-8610ac459fa8",
      "enabled": true,
      "family": "tshirt",
      "categories": [
        "summer_collection"
      ],
      "groups": [],
      "parent": null,
      "root_parent": "null",
      "values": {
        "sku": [
          {
            "data": "top",
            "locale": null,
            "scope": null,
            "attribute_type": "pim_catalog_identifier"
          }
        ],
        "name": [
          {
            "data": "Top",
            "locale": "en_US",
            "scope": null,
            "attribute_type": "pim_catalog_text"
          },
          {
            "data": "Débardeur",
            "locale": "fr_FR",
            "scope": null,
            "attribute_type": "pim_catalog_text"
          }
        ],
        "description": [
          {
            "data": "Summer top",
            "locale": "en_US",
            "scope": "ecommerce",
            "attribute_type": "pim_catalog_textarea"
          },
          {
            "data": "Top",
            "locale": "en_US",
            "scope": "tablet",
            "attribute_type": "pim_catalog_textarea"
          },
          {
            "data": "Débardeur pour l'été",
            "locale": "fr_FR",
            "scope": "ecommerce",
            "attribute_type": "pim_catalog_textarea"
          },
          {
            "data": "Débardeur",
            "locale": "fr_FR",
            "scope": "tablet",
            "attribute_type": "pim_catalog_textarea"
          }
        ],
        "price": [
          {
            "data": [
              {
                "amount": "15.5",
                "currency": "EUR"
              },
              {
                "amount": "15",
                "currency": "USD"
              }
            ],
            "locale": null,
            "scope": null,
            "attribute_type": "pim_catalog_price_collection"
          }
        ],
        "color": [
          {
            "data": "black",
            "locale": null,
            "scope": null,
            "linked_data": {
              "attribute": "color",
              "code": "black",
              "labels": {
                "en_US": "Black",
                "fr_FR": "Noir"
              }
            },
            "attribute_type": "pim_catalog_simpleselect"
          }
        ],
        "size": [
          {
            "data": "m",
            "locale": null,
            "scope": null,
            "linked_data": {
              "attribute": "size",
              "code": "m",
              "labels": {
                "en_US": "M",
                "fr_FR": "M"
              }
            },
            "attribute_type": "pim_catalog_simpleselect"
          }
        ],
        "collection": [
          {
            "data": [
              "winter_2016"
            ],
            "locale": null,
            "scope": null,
            "linked_data": {
              "winter_2016": {
                "attribute": "collection",
                "code": "winter_2016",
                "labels": {
                  "en_US": "Winter 2016",
                  "fr_FR": "Hiver 2016"
                }
              }
            },
            "attribute_type": "pim_catalog_multiselect"
          }
        ]
      },
      "created": "2016-06-23T18:24:44+02:00",
      "updated": "2016-06-25T17:56:12+02:00",
      "associations": {
        "PACK": {
          "products": [
            "d055527c-0698-4967-8f16-8a5f23f4e5cf"
          ],
          "product_models": [],
          "groups": []
        }
      },
      "quantified_associations": {
        "PRODUCT_SET": {
          "products": [
            {
              "uuid": "fc24e6c3-933c-4a93-8a81-e5c703d134d5",
              "quantity": 2
            },
            {
              "uuid": "a9b69002-a0b1-4ead-85c2-f8dbf59c6cfc",
              "quantity": 1
            }
          ],
          "product_models": [
            {
              "identifier": "model-biker-jacket-leather",
              "quantity": 2
            }
          ]
        }
      },
      "quality_scores": [
        {
          "scope": "ecommerce",
          "locale": "en_US",
          "data": "A"
        },
        {
          "scope": "ecommerce",
          "locale": "fr_FR",
          "data": "B"
        },
        {
          "scope": "tablet",
          "locale": "en_US",
          "data": "D"
        },
        {
          "scope": "tablet",
          "locale": "fr_FR",
          "data": "E"
        }
      ],
      "completenesses": [
        {
          "scope": "ecommerce",
          "locale": "en_US",
          "data": 10
        },
        {
          "scope": "ecommerce",
          "locale": "fr_FR",
          "data": 20
        },
        {
          "scope": "tablet",
          "locale": "en_US",
          "data": 30
        },
        {
          "scope": "tablet",
          "locale": "fr_FR",
          "data": 40
        }
      ],
      "workflow_execution_statuses": [
        {
          "uuid": "8c0fe59f-4d29-4faa-b4c3-d327e7f3cc52",
          "status": "in_progress",
          "started_at": "2024-02-22T17:31:00Z",
          "completed_at": null,
          "workflow": {
            "uuid": "6f37476a-04c2-46c0-b6d0-e18316959068",
            "code": "enrichment_workflow",
            "labels": {
              "en_US": "Enrichment workflow",
              "fr_FR": "Workflow d'enrichissement"
            }
          },
          "tasks": [
            {
              "uuid": "8f6c2d18-fbd4-4f7e-81df-cb3dc368fe07",
              "status": "in_progress",
              "created_at": "2024-02-22T17:31:00Z",
              "step": {
                "uuid": "f626d0e5-84a5-41fc-8215-65508c253edb",
                "code": "review_step",
                "labels": {
                  "en_US": "Marketing review",
                  "fr_FR": "Revue marketing"
                }
              }
            }
          ]
        },
        {
          "uuid": "59169984-6d6c-4fa7-b925-68b8e9d31ddb",
          "status": "completed",
          "started_at": "2024-02-22T17:31:00Z",
          "completed_at": "2024-02-22T17:31:00Z",
          "workflow": {
            "uuid": "b69ee158-a421-4680-bec0-a71bc73b8e31",
            "code": "compliance_workflow",
            "labels": {}
          },
          "tasks": []
        }
      ]
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 404,
      "message": "Resource `my_resource_code` does not exist."
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Product [identifier]

This API provides two endpoints for interacting with products:

  • Product (UUID): We strongly recommend using this endpoint for its reliability and flexibility. UUIDs, or Universally Unique Identifiers, are guaranteed to be unique and never change, even if other product identifiers like SKUs are modified. This ensures consistent product identification regardless of future changes. Additionally, UUIDs allow interaction with products that lack a traditional identifier.
  • Product (Identifier): This endpoint is useful when you already have a product identifier within your systems. This identifier, which could be a SKU or internal code, can be used to directly interact with the corresponding product in our API. This simplifies integration for workflows that rely on existing product identification methods.

Get list of products

This endpoint allows you to get a list of products. Products are paginated and they can be filtered. Permissions based on your user groups are applied to the set of products you request.


REQUEST

get /api/rest/v1/products

Path parameters

Ø

Query parameters

search (string) • Filter products, for more details see the Filters section.

scope (string) • Filter product values to return scopable attributes for the given channel as well as the non localizable/non scopable attributes. It is useful for retrieving product information specific to a particular sales channel, which is essential for channel-specific applications. For more details see the Filter product values via channel section.

locales (string) • Filter product values to return localizable attributes for the given locales as well as the non localizable/non scopable attributes. It is useful for retrieving product information in specific languages, which is essential for multi-locale applications. For more details see the Filter product values via locale section.

attributes (string) • Filter product values to only return those concerning the given attributes. It is useful for limiting the response to specific attributes, reducing payload size and improving performance. For more details see the Filter product values via attributes section.

pagination_type (string, page by default) • Specify which pagination method to use for navigating through large datasets. It is useful for choosing between different pagination strategies based on your specific use case and performance requirements. See Pagination section for more details.

page (integer, 1 by default) • Specify which page of results to retrieve when using pagination. It is useful for navigating through large datasets by breaking them into smaller, manageable pages. See Pagination section for more details.

search_after (string, cursor to the first page by default) • Cursor when using the search_after pagination method type. It is essential for navigating through pages in cursor-based pagination, providing more efficient pagination for large datasets. Should never be set manually, see Pagination section for more details.

limit (integer, 10 by default) • Specify the maximum number of results to return per page. It is useful for controlling the amount of data returned in a single request, especially when dealing with large datasets. See Pagination section for more details.

search_scope (string) • Filter scopes based on specific criteria. If you need to filter on several attributes on the same scope, you can use this parameter, to avoid repeating yourself for each attribute. For more details see the Filters section.

search_locale (string) • Filter locales based on specific criteria. If you need to filter on several attributes on the same locale, you can use this parameter, to avoid repeating yourself for each attribute. For more details see the Filters section.

convert_measurements (boolean) • Convert values of measurement attributes to the unit configured in the channel provided by the scope parameter. When set to true, the response will include measurement values converted to the channel's configured units. This is useful for displaying measurement values in the appropriate units for different channels or regions. If set to false, the response will return measurement values in their original units, which can improve performance. Therefore, this parameter requires the scope parameter to be provided.

with_count (boolean) • Return the count of items in the response. Be careful with that, on a big catalog, it can decrease performance in a significant way. It is useful for understanding the size of the dataset being returned, especially when dealing with large collections. Use it judiciously to avoid performance issues.

with_attribute_options (boolean) • Return labels of attribute options in the response. When set to true, the response will include human-readable labels for attribute options alongside their codes. This is useful for displaying human-readable labels instead of just option codes, which improves the user experience in frontend applications. If set to false, the response will only include option codes, which can improve performance. See the linked_data format section for more details.

with_asset_share_links (boolean) • Return asset collection share link URLs in the response. When set to true, the response will include direct URLs to asset collections for sharing purposes. This is useful for accessing direct links to asset collections, which can be used for sharing or external integrations. If set to false, the response will not include share links, which can improve performance. See the linked_data format for more details.

with_quality_scores (boolean) • Return product quality scores in the response. When set to true, the response will include quality score information for each product. This is useful for assessing and monitoring product data quality, which is essential for maintaining high data standards and improving product information. If set to false, the response will not include quality scores, which can improve performance.

with_completenesses (boolean) • Return product completenesses information in the response. When set to true, the response will include detailed completeness information for each product. This is useful for understanding the data quality and completeness of products, which is essential for product management and quality assurance. If set to false, the response will not include completeness information, which can improve performance.

with_workflow_execution_statuses (boolean)

Return an array of workflow_execution_statuses directly associated with the requested entity (product or product model) in the response. Statuses are level-specific and are not inherited from parent models. For a complete overview of a variant product, you must query the variant itself and its parent model(s) in separate requests. Each workflow object contains:

  • The overall execution status (e.g., in_progress, completed).
  • A list of all associated tasks.

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Returns products paginated. The response is paginated and includes links to navigate through the pages.

Body Format application/json

{

_links (object) : {
    self (object) : {
        href (string) • URI of the current page of resources
    }
    first (object) : {
        href (string) • URI of the first page of resources
    }
    previous (object) : {
        href (string) • URI of the previous page of resources
    }
    next (object) : {
        href (string) • URI of the next page of resources
    }
  }

current_page (integer) • Current page number

items_count (integer) • Total number of items (only if with_count parameter is set to true)

_embedded (object) : {
    items (array) : [
        {
          _links (object) : {
              self (object) : {
                  href (string) • URI of the resource
              }
          }
          uuid (string) • Product UUID
          identifier (string) • Product identifier, i.e. the value of the only pim_catalog_identifier attribute
          enabled (boolean) • Whether the product is enabled
          family (string,null)Family code from which the product inherits its attributes and attributes requirements. In the case of variant product, the given family should be the same as the product model family.
          categories (array [string]) • Codes of the categories in which the product is classified. • Codes of the categories in which the product is classified.
          groups (array [string]) • Codes of the groups to which the product belong. Each string of the array is equal to an existing group code. • Codes of the groups to which the product belong. Each string of the array is equal to an existing group code.
          parent (string,null) • Code of the parent product model when the product is a variant
          values (object) • Product attributes values. Each key is an attribute code, and the value is an array of value objects for that attribute. See documentation for details.
          associations (object) : {
              {^\w+$} (object) : {
                  groups (array [string]) • Array of groups codes with which the product is in relation
                  products (array [string]) • Array of product identifiers with which the product is in relation
                  product_models (array [string]) • Array of product model codes with which the product is in relation
              }
          }
          quantified_associations (object) : {
              {^\w+$} (object) : {
                  products (array [object]) • Array of objects containing product identifiers and quantities with which the product is in relation
                  product_models (array [object]) • Array of objects containing product model codes and quantities with which the product is in relation
              }
          }
          created (string) • Date of creation
          updated (string) • Date of the last update
          metadata (object) : {
              workflow_status (string) • Status of the product regarding the user permissions
          }
          quality_scores (array [object]) : [
              {
                  scope (string) • Channel code for which the quality score is calculated
                  locale (string) • Locale code for which the quality score is calculated
                  data (string) • Quality score value for the given channel/locale combination
              }
          ]
          completenesses (array [object]) : [
              {
                  scope (string) • Channel code for which the completenesses score is calculated
                  locale (string) • Channel code for which the completenesses score is calculated
                  data (integer) • Completenesses score value for the given channel/locale combination
              }
          ]
          workflow_execution_statuses (array [object]) : [
              {
                  uuid (string) • Workflow execution UUID
                  status (string) • Status of the workflow execution
                  started_at (string) • Date and time when the workflow execution was started
                  completed_at (string,null) • Date and time when the workflow execution was completed, null if still in progress
                  workflow (object) • Workflow associated with the workflow execution
                  tasks (array [object]) • Tasks associated with the workflow execution
              }
          ]
        }
    ]
  }

}

Example

{
      "_links": {
        "self": {
          "href": "https://demo.akeneo.com/api/rest/v1/products?page=3&limit=3&with_count=true&with_quality_scores=true&with_completenesses=true&with_attribute_options=true&with_workflow_execution_statuses=true"
        },
        "first": {
          "href": "https://demo.akeneo.com/api/rest/v1/products?page=1&limit=3&with_count=true&with_quality_scores=true&with_completenesses=true&with_attribute_options=true&with_workflow_execution_statuses=true"
        },
        "previous": {
          "href": "https://demo.akeneo.com/api/rest/v1/products?page=2&limit=3&with_count=true&with_quality_scores=true&with_completenesses=true&with_attribute_options=true&with_workflow_execution_statuses=true"
        },
        "next": {
          "href": "https://demo.akeneo.com/api/rest/v1/products?page=4&limit=3&with_count=true&with_quality_scores=true&with_completenesses=true&with_attribute_options=true&with_workflow_execution_statuses=true"
        }
      },
      "current_page": 3,
      "items_count": 3,
      "_embedded": {
        "items": [
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/products/top"
              }
            },
            "uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
            "identifier": "top",
            "enabled": true,
            "family": "tshirt",
            "categories": [
              "summer_collection"
            ],
            "groups": [],
            "values": {
              "name": [
                {
                  "data": "Top",
                  "locale": "en_US",
                  "scope": null,
                  "attribute_type": "pim_catalog_text"
                },
                {
                  "data": "Débardeur",
                  "locale": "fr_FR",
                  "scope": null,
                  "attribute_type": "pim_catalog_text"
                }
              ],
              "description": [
                {
                  "data": "Summer top",
                  "locale": "en_US",
                  "scope": "ecommerce",
                  "attribute_type": "pim_catalog_textarea"
                },
                {
                  "data": "Top",
                  "locale": "en_US",
                  "scope": "tablet",
                  "attribute_type": "pim_catalog_textarea"
                },
                {
                  "data": "Débardeur pour l'été",
                  "locale": "fr_FR",
                  "scope": "ecommerce",
                  "attribute_type": "pim_catalog_textarea"
                },
                {
                  "data": "Débardeur",
                  "locale": "fr_FR",
                  "scope": "tablet",
                  "attribute_type": "pim_catalog_textarea"
                }
              ],
              "price": [
                {
                  "data": [
                    {
                      "amount": "15.5",
                      "currency": "EUR"
                    },
                    {
                      "amount": "15",
                      "currency": "USD"
                    }
                  ],
                  "locale": null,
                  "scope": null,
                  "attribute_type": "pim_catalog_price_collection"
                }
              ],
              "color": [
                {
                  "data": "black",
                  "locale": null,
                  "scope": null,
                  "linked_data": {
                    "attribute": "color",
                    "code": "black",
                    "labels": {
                      "en_US": "Black",
                      "fr_FR": "Noir"
                    }
                  },
                  "attribute_type": "pim_catalog_simpleselect"
                }
              ],
              "size": [
                {
                  "data": "m",
                  "locale": null,
                  "scope": null,
                  "linked_data": {
                    "attribute": "size",
                    "code": "m",
                    "labels": {
                      "en_US": "M",
                      "fr_FR": "M"
                    }
                  },
                  "attribute_type": "pim_catalog_simpleselect"
                }
              ],
              "collection": [
                {
                  "data": [
                    "winter_2016"
                  ],
                  "locale": null,
                  "scope": null,
                  "linked_data": {
                    "winter_2016": {
                      "attribute": "collection",
                      "code": "winter_2016",
                      "labels": {
                        "en_US": "Winter 2016",
                        "fr_FR": "Hiver 2016"
                      }
                    }
                  },
                  "attribute_type": "pim_catalog_multiselect"
                }
              ]
            },
            "created": "2016-06-23T18:24:44+02:00",
            "updated": "2016-06-25T17:56:12+02:00",
            "associations": {
              "PACK": {
                "products": [
                  "sunglass"
                ],
                "product_models": [],
                "groups": []
              }
            },
            "quantified_associations": {
              "PRODUCT_SET": {
                "products": [
                  {
                    "identifier": "cap",
                    "quantity": 2
                  },
                  {
                    "identifier": "shoes",
                    "quantity": 1
                  }
                ],
                "product_models": [
                  {
                    "identifier": "model-biker-jacket-leather",
                    "quantity": 2
                  }
                ]
              }
            },
            "quality_scores": [
              {
                "scope": "ecommerce",
                "locale": "en_US",
                "data": "A"
              },
              {
                "scope": "ecommerce",
                "locale": "fr_FR",
                "data": "B"
              },
              {
                "scope": "tablet",
                "locale": "en_US",
                "data": "D"
              },
              {
                "scope": "tablet",
                "locale": "fr_FR",
                "data": "E"
              }
            ],
            "completenesses": [
              {
                "scope": "ecommerce",
                "locale": "en_US",
                "data": 10
              },
              {
                "scope": "ecommerce",
                "locale": "fr_FR",
                "data": 20
              },
              {
                "scope": "tablet",
                "locale": "en_US",
                "data": 30
              },
              {
                "scope": "tablet",
                "locale": "fr_FR",
                "data": 40
              }
            ],
            "workflow_execution_statuses": [
              {
                "uuid": "8c0fe59f-4d29-4faa-b4c3-d327e7f3cc52",
                "status": "in_progress",
                "started_at": "2024-02-22T17:31:00Z",
                "completed_at": null,
                "workflow": {
                  "uuid": "6f37476a-04c2-46c0-b6d0-e18316959068",
                  "code": "enrichment_workflow",
                  "labels": {
                    "en_US": "Enrichment workflow",
                    "fr_FR": "Workflow d'enrichissement"
                  }
                },
                "tasks": [
                  {
                    "uuid": "8f6c2d18-fbd4-4f7e-81df-cb3dc368fe07",
                    "status": "in_progress",
                    "created_at": "2024-02-22T17:31:00Z",
                    "step": {
                      "uuid": "f626d0e5-84a5-41fc-8215-65508c253edb",
                      "code": "review_step",
                      "labels": {
                        "en_US": "Marketing review",
                        "fr_FR": "Revue marketing"
                      }
                    }
                  }
                ]
              },
              {
                "uuid": "59169984-6d6c-4fa7-b925-68b8e9d31ddb",
                "status": "completed",
                "started_at": "2024-02-22T17:31:00Z",
                "completed_at": "2024-02-22T17:31:00Z",
                "workflow": {
                  "uuid": "b69ee158-a421-4680-bec0-a71bc73b8e31",
                  "code": "compliance_workflow",
                  "labels": {}
                },
                "tasks": []
              }
            ]
          },
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/products/cap"
              }
            },
            "uuid": "aec6780b-c813-4bd7-8e24-1a8574471576",
            "identifier": "cap",
            "family": "caps",
            "groups": [],
            "parent": null,
            "categories": [
              "summer_collection"
            ],
            "enabled": true,
            "values": {
              "name": [
                {
                  "data": "Cap",
                  "locale": "en_US",
                  "scope": null,
                  "attribute_type": "pim_catalog_text"
                },
                {
                  "data": "Casquette",
                  "locale": "fr_FR",
                  "scope": null,
                  "attribute_type": "pim_catalog_text"
                }
              ],
              "description": [
                {
                  "data": "Cap unisex",
                  "locale": "en_US",
                  "scope": "ecommerce",
                  "attribute_type": "pim_catalog_textarea"
                },
                {
                  "data": "Cap unisex",
                  "locale": "en_US",
                  "scope": "tablet",
                  "attribute_type": "pim_catalog_textarea"
                },
                {
                  "data": "Casquette unisexe",
                  "locale": "fr_FR",
                  "scope": "ecommerce",
                  "attribute_type": "pim_catalog_textarea"
                },
                {
                  "data": "Casquette unisexe",
                  "locale": "fr_FR",
                  "scope": "tablet",
                  "attribute_type": "pim_catalog_textarea"
                }
              ],
              "price": [
                {
                  "data": [
                    {
                      "amount": "20",
                      "currency": "EUR"
                    },
                    {
                      "amount": "20",
                      "currency": "USD"
                    }
                  ],
                  "locale": null,
                  "scope": null,
                  "attribute_type": "pim_catalog_price_collection"
                }
              ],
              "color": [
                {
                  "data": "black",
                  "locale": null,
                  "scope": null,
                  "linked_data": {
                    "attribute": "color",
                    "code": "black",
                    "labels": {
                      "en_US": "Black",
                      "fr_FR": "Noir"
                    }
                  },
                  "attribute_type": "pim_catalog_simpleselect"
                }
              ]
            },
            "created": "2016-06-23T18:24:44+02:00",
            "updated": "2016-06-25T17:56:12+02:0",
            "associations": {
              "PACK": {
                "products": [
                  "sunglass"
                ],
                "product_models": [],
                "groups": []
              }
            },
            "quantified_associations": {},
            "quality_scores": [
              {
                "scope": "ecommerce",
                "locale": "en_US",
                "data": "A"
              },
              {
                "scope": "ecommerce",
                "locale": "fr_FR",
                "data": "B"
              },
              {
                "scope": "tablet",
                "locale": "en_US",
                "data": "D"
              },
              {
                "scope": "tablet",
                "locale": "fr_FR",
                "data": "E"
              }
            ],
            "completenesses": [
              {
                "scope": "ecommerce",
                "locale": "en_US",
                "data": 20
              },
              {
                "scope": "ecommerce",
                "locale": "fr_FR",
                "data": 30
              },
              {
                "scope": "tablet",
                "locale": "en_US",
                "data": 55
              },
              {
                "scope": "tablet",
                "locale": "fr_FR",
                "data": 70
              }
            ],
            "workflow_execution_statuses": []
          },
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/products/sweat"
              }
            },
            "uuid": "93f14b03-5ed3-4f23-87c6-ae3806041b6a",
            "identifier": "sweat",
            "family": null,
            "groups": [],
            "parent": null,
            "categories": [
              "winter_collection"
            ],
            "enabled": true,
            "values": {},
            "created": "2016-06-23T11:24:44+02:00",
            "updated": "2016-06-23T11:24:44+02:00",
            "associations": {},
            "quantified_associations": {},
            "quality_scores": [],
            "completenesses": [],
            "workflow_execution_statuses": []
          }
        ]
      }
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the server understands the request but cannot process it due to validation errors in the provided data.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

errors (array [object]) : [
        {
         property (string) • Name of the invalid property
         message (string) • Human-readable error message
         attribute (string,null) • Attribute code (if the error is on an attribute)
         locale (string,null) • Locale code involved in the error, if any
         scope (string,null) • Channel code involved in the error, if any
        }
    ]

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Validation failed.",
      "errors": [
        {
          "property": "family",
          "message": "The tshirts family does not exist in your PIM."
        },
        {
          "property": "categories",
          "message": "The \"tvs_projectors\" category does not exist."
        },
        {
          "property": "associations.SUBSTITUTION.groups",
          "message": "You should associate existing groups. The \"promotion\" group does not exist."
        },
        {
          "property": "values",
          "message": "The \"description\" attribute requires a channel.",
          "attribute": "description",
          "locale": "en_US",
          "scope": null
        },
        {
          "property": "values",
          "message": "The \"name\" attribute requires a locale.",
          "attribute": "name",
          "locale": null,
          "scope": null
        }
      ],
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

Create a new product

This endpoint allows you to create a new product. Permissions based on your user groups are applied to the product you try to create.


REQUEST

post /api/rest/v1/products

Path parameters

Ø

Query parameters

create_missing_options (string) • When present in the query string (regardless of value), automatically creates missing attribute options during product/product model creation or update. This only works for simple select and multi select attributes that have the enable_option_creation_during_import property set to true (configurable via the Attribute API).

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/json', no other value allowed

Body

Follow the standard format of the entity

{

uuid (string) • Product UUID

identifier (string) • Product identifier, i.e. the value of the only pim_catalog_identifier attribute

enabled (boolean, true by default) • Whether the product is enabled

groups (array[string], [] by default) • Codes of the groups to which the product belong

family (string,null, null only in the case of a non variant product. by default) Family code from which the product inherits its attributes and attributes requirements. In the case of variant product, the given family should be the same as the product model family

categories (array[string], [] by default) • Codes of the categories in which the product is classified

parent (string,null, null by default) • Code of the parent product model when the product is a variant

values (object) • Product attributes values. Each key is an attribute code, and the value is an array of value objects for that attribute. See documentation for details.

associations (object) : {
        {^\w+$} (object) : {
            groups (array) • Array of groups codes with which the product is in relation
            products (array) • Array of product identifiers with which the product is in relation
            product_models (array) • Array of product model codes with which the product is in relation
        }
    }

quantified_associations (object) : {
        {^\w+$} (object) : {
            products (array) • Array of objects containing product identifiers and quantities with which the product is in relation
            product_models (array) • Array of objects containing product model codes and quantities with which the product is in relation
        }
    }

}

Example

{
      "identifier": "top",
      "enabled": true,
      "family": "tshirt",
      "categories": [
        "summer_collection"
      ],
      "groups": [],
      "values": {
        "name": [
          {
            "data": "Top",
            "locale": "en_US",
            "scope": null
          },
          {
            "data": "Débardeur",
            "locale": "fr_FR",
            "scope": null
          }
        ],
        "description": [
          {
            "data": "Summer top",
            "locale": "en_US",
            "scope": "ecommerce"
          },
          {
            "data": "Top",
            "locale": "en_US",
            "scope": "tablet"
          },
          {
            "data": "Débardeur pour l'été",
            "locale": "fr_FR",
            "scope": "ecommerce"
          },
          {
            "data": "Débardeur",
            "locale": "fr_FR",
            "scope": "tablet"
          }
        ],
        "price": [
          {
            "data": [
              {
                "amount": "15.5",
                "currency": "EUR"
              },
              {
                "amount": "15",
                "currency": "USD"
              }
            ],
            "locale": null,
            "scope": null
          }
        ],
        "color": [
          {
            "data": "black",
            "locale": null,
            "scope": null,
            "linked_data": {
              "attribute": "color",
              "code": "black",
              "labels": {
                "en_US": "Black",
                "fr_FR": "Noir"
              }
            }
          }
        ],
        "size": [
          {
            "data": "m",
            "locale": null,
            "scope": null,
            "linked_data": {
              "attribute": "size",
              "code": "m",
              "labels": {
                "en_US": "M",
                "fr_FR": "M"
              }
            }
          }
        ],
        "collection": [
          {
            "data": [
              "winter_2016"
            ],
            "locale": null,
            "scope": null,
            "linked_data": {
              "winter_2016": {
                "attribute": "collection",
                "code": "winter_2016",
                "labels": {
                  "en_US": "Winter 2016",
                  "fr_FR": "Hiver 2016"
                }
              }
            }
          }
        ]
      },
      "created": "2016-06-23T18:24:44+02:00",
      "updated": "2016-06-25T17:56:12+02:00",
      "associations": {
        "PACK": {
          "products": [
            "sunglass"
          ],
          "product_models": [],
          "groups": []
        }
      },
      "quantified_associations": {
        "PRODUCT_SET": {
          "products": [
            {
              "identifier": "cap",
              "quantity": 2
            },
            {
              "identifier": "shoes",
              "quantity": 1
            }
          ],
          "product_models": [
            {
              "identifier": "model-biker-jacket-leather",
              "quantity": 2
            }
          ]
        }
      },
      "quality_scores": [
        {
          "scope": "ecommerce",
          "locale": "en_US",
          "data": "A"
        },
        {
          "scope": "ecommerce",
          "locale": "fr_FR",
          "data": "B"
        },
        {
          "scope": "tablet",
          "locale": "en_US",
          "data": "D"
        },
        {
          "scope": "tablet",
          "locale": "fr_FR",
          "data": "E"
        }
      ],
      "completenesses": [
        {
          "scope": "ecommerce",
          "locale": "en_US",
          "data": 10
        },
        {
          "scope": "ecommerce",
          "locale": "fr_FR",
          "data": 20
        },
        {
          "scope": "tablet",
          "locale": "en_US",
          "data": 30
        },
        {
          "scope": "tablet",
          "locale": "fr_FR",
          "data": 40
        }
      ]
    }

RESPONSES

This response indicates that the entity was successfully created. The server has fulfilled the request and created a new resource. The response includes a Location header that contains the URI of the newly created resource.

Headers

Location • URI of the created resource

Body Format application/json

Ø

This response indicates that the server cannot process the request due to a client error, such as malformed request syntax, invalid request message framing, or deceptive request routing. It is typically used when the server cannot understand the request due to invalid JSON or other client-side issues.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 400,
      "message": "Invalid JSON message received"
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the server understands the request but cannot process it due to validation errors in the provided data.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

errors (array [object]) : [
        {
         property (string) • Name of the invalid property
         message (string) • Human-readable error message
         attribute (string,null) • Attribute code (if the error is on an attribute)
         locale (string,null) • Locale code involved in the error, if any
         scope (string,null) • Channel code involved in the error, if any
        }
    ]

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Validation failed.",
      "errors": [
        {
          "property": "family",
          "message": "The tshirts family does not exist in your PIM."
        },
        {
          "property": "categories",
          "message": "The \"tvs_projectors\" category does not exist."
        },
        {
          "property": "associations.SUBSTITUTION.groups",
          "message": "You should associate existing groups. The \"promotion\" group does not exist."
        },
        {
          "property": "values",
          "message": "The \"description\" attribute requires a channel.",
          "attribute": "description",
          "locale": "en_US",
          "scope": null
        },
        {
          "property": "values",
          "message": "The \"name\" attribute requires a locale.",
          "attribute": "name",
          "locale": null,
          "scope": null
        }
      ],
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

Update/create several products

This endpoint allows you to update and/or create several products at once. Learn more about Update behavior. Note that if no product exists for the given identifier, it creates it. Permissions based on your user groups are applied to the products you try to update. It may result in the creation of drafts if you only have edit rights through the product's categories.


REQUEST

patch /api/rest/v1/products

Path parameters

Ø

Query parameters

create_missing_options (string) • When present in the query string (regardless of value), automatically creates missing attribute options during product/product model creation or update. This only works for simple select and multi select attributes that have the enable_option_creation_during_import property set to true (configurable via the Attribute API).

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/vnd.akeneo.collection+json', no other value allowed

Body

Contains several lines, each line is a product model in JSON standard format. Modifications to existing product models can be specified using additional keys such as `add_categories` and `remove_categories`.

{

uuid (string) • Product UUID

identifier (string) • Product identifier, i.e. the value of the only pim_catalog_identifier attribute

enabled (boolean, true by default) • Whether the product is enabled

groups (array[string], [] by default) • Codes of the groups to which the product belong

family (string,null, null only in the case of a non variant product by default) Family code from which the product inherits its attributes and attributes requirements. In the case of variant product, the given family should be the same as the product model family.

categories (array[string], [] by default) • Codes of the categories in which the product is classified

add_categories (array[string], [] by default) • Codes of the categories to add to the product. Existing categories will be preserved

remove_categories (array[string], [] by default) • Codes of the categories to remove from the product. Other categories will be preserved.

parent (string,null, null by default) • Code of the parent product model when the product is a variant

values (object) • Product attributes values. Each key is an attribute code, and the value is an array of value objects for that attribute. See documentation for details.

associations (object) : {
        {^\w+$} (object) : {
            groups (array) • Array of groups codes with which the product is in relation
            products (array) • Array of product identifiers with which the product is in relation
            product_models (array) • Array of product model codes with which the product is in relation
        }
    }

quantified_associations (object) : {
        {^\w+$} (object) : {
            products (array) • Array of objects containing product identifiers and quantities with which the product is in relation
            product_models (array) • Array of objects containing product model codes and quantities with which the product is in relation
        }
    }

created (string) • Date of creation

updated (string) • Date of the last update

metadata (object) : {
        workflow_status (string) • Status of the product regarding the user permissions
    }

quality_scores (array[object]) : [
        {
           scope (string) • Channel code for which the quality score is calculated
           locale (string) • Locale code for which the quality score is calculated
           data (string) • Quality score value for the given channel/locale combination
        }
    ]

completenesses (array[object]) : [
        {
           scope (string) • Channel code for which the completenesses score is calculated
           locale (string) • Channel code for which the completenesses score is calculated
           data (integer) • Completenesses score value for the given channel/locale combination
        }
    ]

workflow_execution_statuses (array[object]) : [
        {
           uuid (string) • Workflow execution UUID
           status (string) • Status of the workflow execution
           started_at (string) • Date and time when the workflow execution was started
           completed_at (string,null) • Date and time when the workflow execution was completed, null if still in progress
           workflow (object) • Workflow associated with the workflow execution
           tasks (array[object]) • Tasks associated with the workflow execution
        }
    ]

}

Example

{"line":1,"identifier":"cap","status_code":204}
    {"line":2,"identifier":"mug","status_code":422,"message":"Property \"group\" does not exist."}
    {"line":3,"identifier":"tshirt","status_code":201}
    

RESPONSES

Returns a plain text response whose lines are JSON containing the status of each update or creation

Body Format application/json

{

line (integer) • Line number

identifier (string) • Product identifier

status_code (integer) • HTTP status code, see Client errors to understand the meaning of each code

message (string) • Message explaining the error

}

Example

{"line":1,"identifier":"cap","status_code":204}
    {"line":2,"identifier":"mug","status_code":422,"message":"Property \"group\" does not exist."}
    {"line":3,"identifier":"tshirt","status_code":201}
    

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the request entity is larger than the server is willing or able to process. It can occur when the number of resources in a batch request exceeds the maximum allowed limit.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 413,
      "message": "Too many resources to process, 100 is the maximum allowed."
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the server understands the request but cannot process it due to validation errors in the provided data.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

errors (array [object]) : [
        {
         property (string) • Name of the invalid property
         message (string) • Human-readable error message
         attribute (string,null) • Attribute code (if the error is on an attribute)
         locale (string,null) • Locale code involved in the error, if any
         scope (string,null) • Channel code involved in the error, if any
        }
    ]

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Validation failed.",
      "errors": [
        {
          "property": "family",
          "message": "The tshirts family does not exist in your PIM."
        },
        {
          "property": "categories",
          "message": "The \"tvs_projectors\" category does not exist."
        },
        {
          "property": "associations.SUBSTITUTION.groups",
          "message": "You should associate existing groups. The \"promotion\" group does not exist."
        },
        {
          "property": "values",
          "message": "The \"description\" attribute requires a channel.",
          "attribute": "description",
          "locale": "en_US",
          "scope": null
        },
        {
          "property": "values",
          "message": "The \"name\" attribute requires a locale.",
          "attribute": "name",
          "locale": null,
          "scope": null
        }
      ],
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

Get a product

This endpoint allows you to get the information about a given product. Permissions based on your user groups are applied to the product you request.


REQUEST

get /api/rest/v1/products/{code}

Path parameters

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

with_attribute_options (boolean) • Return labels of attribute options in the response. When set to true, the response will include human-readable labels for attribute options alongside their codes. This is useful for displaying human-readable labels instead of just option codes, which improves the user experience in frontend applications. If set to false, the response will only include option codes, which can improve performance. See the linked_data format section for more details.

with_asset_share_links (boolean) • Return asset collection share link URLs in the response. When set to true, the response will include direct URLs to asset collections for sharing purposes. This is useful for accessing direct links to asset collections, which can be used for sharing or external integrations. If set to false, the response will not include share links, which can improve performance. See the linked_data format for more details.

with_quality_scores (boolean) • Return product quality scores in the response. When set to true, the response will include quality score information for each product. This is useful for assessing and monitoring product data quality, which is essential for maintaining high data standards and improving product information. If set to false, the response will not include quality scores, which can improve performance.

with_completenesses (boolean) • Return product completenesses information in the response. When set to true, the response will include detailed completeness information for each product. This is useful for understanding the data quality and completeness of products, which is essential for product management and quality assurance. If set to false, the response will not include completeness information, which can improve performance.

with_workflow_execution_statuses (boolean)

Return an array of workflow_execution_statuses directly associated with the requested entity (product or product model) in the response. Statuses are level-specific and are not inherited from parent models. For a complete overview of a variant product, you must query the variant itself and its parent model(s) in separate requests. Each workflow object contains:

  • The overall execution status (e.g., in_progress, completed).
  • A list of all associated tasks.

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Returns the content of the product in JSON standard format

Body Format application/json

{

uuid (string) • Product UUID

identifier (string) • Product identifier, i.e. the value of the only pim_catalog_identifier attribute

enabled (boolean) • Whether the product is enabled

family (string,null)Family code from which the product inherits its attributes and attributes requirements. In the case of variant product, the given family should be the same as the product model family.

categories (array [string]) • Codes of the categories in which the product is classified.

groups (array [string]) • Codes of the groups to which the product belong. Each string of the array is equal to an existing group code.

parent (string,null) • Code of the parent product model when the product is a variant

values (object) • Product attributes values. Each key is an attribute code, and the value is an array of value objects for that attribute. See documentation for details.

associations (object) : {
    {^\w+$} (object) : {
        groups (array[string]) • Array of groups codes with which the product is in relation
        products (array[string]) • Array of product identifiers with which the product is in relation
        product_models (array[string]) • Array of product model codes with which the product is in relation
    }
  }

quantified_associations (object) : {
    {^\w+$} (object) : {
        products (array[object]) • Array of objects containing product identifiers and quantities with which the product is in relation
        product_models (array[object]) • Array of objects containing product model codes and quantities with which the product is in relation
    }
  }

created (string) • Date of creation

updated (string) • Date of the last update

metadata (object) : {
    workflow_status (string) • Status of the product regarding the user permissions
  }

quality_scores (array [object]) : [
        {
         scope (string) • Channel code for which the quality score is calculated
         locale (string) • Locale code for which the quality score is calculated
         data (string) • Quality score value for the given channel/locale combination
        }
    ]

completenesses (array [object]) : [
        {
         scope (string) • Channel code for which the completenesses score is calculated
         locale (string) • Channel code for which the completenesses score is calculated
         data (integer) • Completenesses score value for the given channel/locale combination
        }
    ]

workflow_execution_statuses (array [object]) : [
        {
         uuid (string) • Workflow execution UUID
         status (string) • Status of the workflow execution
         started_at (string) • Date and time when the workflow execution was started
         completed_at (string,null) • Date and time when the workflow execution was completed, null if still in progress
         workflow (object) • Workflow associated with the workflow execution
         tasks (array) • Tasks associated with the workflow execution
        }
    ]

}

Example

{
      "uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "identifier": "top",
      "enabled": true,
      "family": "tshirt",
      "categories": [
        "summer_collection"
      ],
      "groups": [],
      "values": {
        "name": [
          {
            "data": "Top",
            "locale": "en_US",
            "scope": null,
            "attribute_type": "pim_catalog_text"
          },
          {
            "data": "Débardeur",
            "locale": "fr_FR",
            "scope": null,
            "attribute_type": "pim_catalog_text"
          }
        ],
        "description": [
          {
            "data": "Summer top",
            "locale": "en_US",
            "scope": "ecommerce",
            "attribute_type": "pim_catalog_textarea"
          },
          {
            "data": "Top",
            "locale": "en_US",
            "scope": "tablet",
            "attribute_type": "pim_catalog_textarea"
          },
          {
            "data": "Débardeur pour l'été",
            "locale": "fr_FR",
            "scope": "ecommerce",
            "attribute_type": "pim_catalog_textarea"
          },
          {
            "data": "Débardeur",
            "locale": "fr_FR",
            "scope": "tablet",
            "attribute_type": "pim_catalog_textarea"
          }
        ],
        "price": [
          {
            "data": [
              {
                "amount": "15.5",
                "currency": "EUR"
              },
              {
                "amount": "15",
                "currency": "USD"
              }
            ],
            "locale": null,
            "scope": null,
            "attribute_type": "pim_catalog_price_collection"
          }
        ],
        "color": [
          {
            "data": "black",
            "locale": null,
            "scope": null,
            "linked_data": {
              "attribute": "color",
              "code": "black",
              "labels": {
                "en_US": "Black",
                "fr_FR": "Noir"
              }
            },
            "attribute_type": "pim_catalog_simpleselect"
          }
        ],
        "size": [
          {
            "data": "m",
            "locale": null,
            "scope": null,
            "linked_data": {
              "attribute": "size",
              "code": "m",
              "labels": {
                "en_US": "M",
                "fr_FR": "M"
              }
            },
            "attribute_type": "pim_catalog_simpleselect"
          }
        ],
        "collection": [
          {
            "data": [
              "winter_2016"
            ],
            "locale": null,
            "scope": null,
            "linked_data": {
              "winter_2016": {
                "attribute": "collection",
                "code": "winter_2016",
                "labels": {
                  "en_US": "Winter 2016",
                  "fr_FR": "Hiver 2016"
                }
              }
            },
            "attribute_type": "pim_catalog_multiselect"
          }
        ]
      },
      "created": "2016-06-23T18:24:44+02:00",
      "updated": "2016-06-25T17:56:12+02:00",
      "associations": {
        "PACK": {
          "products": [
            "sunglass"
          ],
          "product_models": [],
          "groups": []
        }
      },
      "quantified_associations": {
        "PRODUCT_SET": {
          "products": [
            {
              "identifier": "cap",
              "quantity": 2
            },
            {
              "identifier": "shoes",
              "quantity": 1
            }
          ],
          "product_models": [
            {
              "identifier": "model-biker-jacket-leather",
              "quantity": 2
            }
          ]
        }
      },
      "quality_scores": [
        {
          "scope": "ecommerce",
          "locale": "en_US",
          "data": "A"
        },
        {
          "scope": "ecommerce",
          "locale": "fr_FR",
          "data": "B"
        },
        {
          "scope": "tablet",
          "locale": "en_US",
          "data": "D"
        },
        {
          "scope": "tablet",
          "locale": "fr_FR",
          "data": "E"
        }
      ],
      "completenesses": [
        {
          "scope": "ecommerce",
          "locale": "en_US",
          "data": 10
        },
        {
          "scope": "ecommerce",
          "locale": "fr_FR",
          "data": 20
        },
        {
          "scope": "tablet",
          "locale": "en_US",
          "data": 30
        },
        {
          "scope": "tablet",
          "locale": "fr_FR",
          "data": 40
        }
      ],
      "workflow_execution_statuses": [
        {
          "uuid": "8c0fe59f-4d29-4faa-b4c3-d327e7f3cc52",
          "status": "in_progress",
          "started_at": "2024-02-22T17:31:00Z",
          "completed_at": null,
          "workflow": {
            "uuid": "6f37476a-04c2-46c0-b6d0-e18316959068",
            "code": "enrichment_workflow",
            "labels": {
              "en_US": "Enrichment workflow",
              "fr_FR": "Workflow d'enrichissement"
            }
          },
          "tasks": [
            {
              "uuid": "8f6c2d18-fbd4-4f7e-81df-cb3dc368fe07",
              "status": "in_progress",
              "created_at": "2024-02-22T17:31:00Z",
              "step": {
                "uuid": "f626d0e5-84a5-41fc-8215-65508c253edb",
                "code": "review_step",
                "labels": {
                  "en_US": "Marketing review",
                  "fr_FR": "Revue marketing"
                }
              }
            }
          ]
        },
        {
          "uuid": "59169984-6d6c-4fa7-b925-68b8e9d31ddb",
          "status": "completed",
          "started_at": "2024-02-22T17:31:00Z",
          "completed_at": "2024-02-22T17:31:00Z",
          "workflow": {
            "uuid": "b69ee158-a421-4680-bec0-a71bc73b8e31",
            "code": "compliance_workflow",
            "labels": {}
          },
          "tasks": []
        }
      ]
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 404,
      "message": "Resource `my_resource_code` does not exist."
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Update/create a product

This endpoint allows you to update a given product. Learn more about Update behavior. Note that if no product exists for the given identifier, it creates it. In the Enterprise Edition, since the v2.0, permissions based on your user groups are applied to the product you try to update. It may result in the creation of a draft if you only have edit rights through the product's categories.


REQUEST

patch /api/rest/v1/products/{code}

Path parameters

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

create_missing_options (string) • When present in the query string (regardless of value), automatically creates missing attribute options during product/product model creation or update. This only works for simple select and multi select attributes that have the enable_option_creation_during_import property set to true (configurable via the Attribute API).

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/json', no other value allowed

Body

Follow the standard format of the entity

{

uuid (string) • Product UUID

identifier (string) • Product identifier, i.e. the value of the only pim_catalog_identifier attribute

enabled (boolean, true by default) • Whether the product is enabled

groups (array[string], [] by default) • Codes of the groups to which the product belong

family (string,null, null only in the case of a non variant product by default) Family code from which the product inherits its attributes and attributes requirements. In the case of variant product, the given family should be the same as the product model family.

categories (array[string], [] by default) • Codes of the categories in which the product is classified

add_categories (array[string], [] by default) • Codes of the categories to add to the product. Existing categories will be preserved

remove_categories (array[string], [] by default) • Codes of the categories to remove from the product. Other categories will be preserved.

parent (string,null, null by default) • Code of the parent product model when the product is a variant

values (object) • Product attributes values. Each key is an attribute code, and the value is an array of value objects for that attribute. See documentation for details.

associations (object) : {
        {^\w+$} (object) : {
            groups (array) • Array of groups codes with which the product is in relation
            products (array) • Array of product identifiers with which the product is in relation
            product_models (array) • Array of product model codes with which the product is in relation
        }
    }

quantified_associations (object) : {
        {^\w+$} (object) : {
            products (array) • Array of objects containing product identifiers and quantities with which the product is in relation
            product_models (array) • Array of objects containing product model codes and quantities with which the product is in relation
        }
    }

created (string) • Date of creation

updated (string) • Date of the last update

metadata (object) : {
        workflow_status (string) • Status of the product regarding the user permissions
    }

quality_scores (array[object]) : [
        {
           scope (string) • Channel code for which the quality score is calculated
           locale (string) • Locale code for which the quality score is calculated
           data (string) • Quality score value for the given channel/locale combination
        }
    ]

completenesses (array[object]) : [
        {
           scope (string) • Channel code for which the completenesses score is calculated
           locale (string) • Channel code for which the completenesses score is calculated
           data (integer) • Completenesses score value for the given channel/locale combination
        }
    ]

workflow_execution_statuses (array[object]) : [
        {
           uuid (string) • Workflow execution UUID
           status (string) • Status of the workflow execution
           started_at (string) • Date and time when the workflow execution was started
           completed_at (string,null) • Date and time when the workflow execution was completed, null if still in progress
           workflow (object) • Workflow associated with the workflow execution
           tasks (array[object]) • Tasks associated with the workflow execution
        }
    ]

}

Example

{
      "uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "identifier": "top",
      "enabled": true,
      "family": "tshirt",
      "categories": [
        "summer_collection"
      ],
      "groups": [],
      "values": {
        "name": [
          {
            "data": "Top",
            "locale": "en_US",
            "scope": null,
            "attribute_type": "pim_catalog_text"
          },
          {
            "data": "Débardeur",
            "locale": "fr_FR",
            "scope": null,
            "attribute_type": "pim_catalog_text"
          }
        ],
        "description": [
          {
            "data": "Summer top",
            "locale": "en_US",
            "scope": "ecommerce",
            "attribute_type": "pim_catalog_textarea"
          },
          {
            "data": "Top",
            "locale": "en_US",
            "scope": "tablet",
            "attribute_type": "pim_catalog_textarea"
          },
          {
            "data": "Débardeur pour l'été",
            "locale": "fr_FR",
            "scope": "ecommerce",
            "attribute_type": "pim_catalog_textarea"
          },
          {
            "data": "Débardeur",
            "locale": "fr_FR",
            "scope": "tablet",
            "attribute_type": "pim_catalog_textarea"
          }
        ],
        "price": [
          {
            "data": [
              {
                "amount": "15.5",
                "currency": "EUR"
              },
              {
                "amount": "15",
                "currency": "USD"
              }
            ],
            "locale": null,
            "scope": null,
            "attribute_type": "pim_catalog_price_collection"
          }
        ],
        "color": [
          {
            "data": "black",
            "locale": null,
            "scope": null,
            "linked_data": {
              "attribute": "color",
              "code": "black",
              "labels": {
                "en_US": "Black",
                "fr_FR": "Noir"
              }
            },
            "attribute_type": "pim_catalog_simpleselect"
          }
        ],
        "size": [
          {
            "data": "m",
            "locale": null,
            "scope": null,
            "linked_data": {
              "attribute": "size",
              "code": "m",
              "labels": {
                "en_US": "M",
                "fr_FR": "M"
              }
            },
            "attribute_type": "pim_catalog_simpleselect"
          }
        ],
        "collection": [
          {
            "data": [
              "winter_2016"
            ],
            "locale": null,
            "scope": null,
            "linked_data": {
              "winter_2016": {
                "attribute": "collection",
                "code": "winter_2016",
                "labels": {
                  "en_US": "Winter 2016",
                  "fr_FR": "Hiver 2016"
                }
              }
            },
            "attribute_type": "pim_catalog_multiselect"
          }
        ]
      },
      "created": "2016-06-23T18:24:44+02:00",
      "updated": "2016-06-25T17:56:12+02:00",
      "associations": {
        "PACK": {
          "products": [
            "sunglass"
          ],
          "product_models": [],
          "groups": []
        }
      },
      "quantified_associations": {
        "PRODUCT_SET": {
          "products": [
            {
              "identifier": "cap",
              "quantity": 2
            },
            {
              "identifier": "shoes",
              "quantity": 1
            }
          ],
          "product_models": [
            {
              "identifier": "model-biker-jacket-leather",
              "quantity": 2
            }
          ]
        }
      },
      "quality_scores": [
        {
          "scope": "ecommerce",
          "locale": "en_US",
          "data": "A"
        },
        {
          "scope": "ecommerce",
          "locale": "fr_FR",
          "data": "B"
        },
        {
          "scope": "tablet",
          "locale": "en_US",
          "data": "D"
        },
        {
          "scope": "tablet",
          "locale": "fr_FR",
          "data": "E"
        }
      ],
      "completenesses": [
        {
          "scope": "ecommerce",
          "locale": "en_US",
          "data": 10
        },
        {
          "scope": "ecommerce",
          "locale": "fr_FR",
          "data": 20
        },
        {
          "scope": "tablet",
          "locale": "en_US",
          "data": 30
        },
        {
          "scope": "tablet",
          "locale": "fr_FR",
          "data": 40
        }
      ],
      "workflow_execution_statuses": [
        {
          "uuid": "8c0fe59f-4d29-4faa-b4c3-d327e7f3cc52",
          "status": "in_progress",
          "started_at": "2024-02-22T17:31:00Z",
          "completed_at": null,
          "workflow": {
            "uuid": "6f37476a-04c2-46c0-b6d0-e18316959068",
            "code": "enrichment_workflow",
            "labels": {
              "en_US": "Enrichment workflow",
              "fr_FR": "Workflow d'enrichissement"
            }
          },
          "tasks": [
            {
              "uuid": "8f6c2d18-fbd4-4f7e-81df-cb3dc368fe07",
              "status": "in_progress",
              "created_at": "2024-02-22T17:31:00Z",
              "step": {
                "uuid": "f626d0e5-84a5-41fc-8215-65508c253edb",
                "code": "review_step",
                "labels": {
                  "en_US": "Marketing review",
                  "fr_FR": "Revue marketing"
                }
              }
            }
          ]
        },
        {
          "uuid": "59169984-6d6c-4fa7-b925-68b8e9d31ddb",
          "status": "completed",
          "started_at": "2024-02-22T17:31:00Z",
          "completed_at": "2024-02-22T17:31:00Z",
          "workflow": {
            "uuid": "b69ee158-a421-4680-bec0-a71bc73b8e31",
            "code": "compliance_workflow",
            "labels": {}
          },
          "tasks": []
        }
      ]
    }

RESPONSES

This response indicates that the entity was successfully created. The server has fulfilled the request and created a new resource. The response includes a Location header that contains the URI of the newly created resource.

Headers

Location • URI of the created resource

Body Format application/json

Ø

This response indicates that the request was successful and that there is no content to return. It is typically used in response to a successful update operation where the server does not need to return any data to the client.

Headers

Location • URI of the updated resource

Body Format application/json

Ø

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the server understands the request but cannot process it due to validation errors in the provided data.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

errors (array [object]) : [
        {
         property (string) • Name of the invalid property
         message (string) • Human-readable error message
         attribute (string,null) • Attribute code (if the error is on an attribute)
         locale (string,null) • Locale code involved in the error, if any
         scope (string,null) • Channel code involved in the error, if any
        }
    ]

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Validation failed.",
      "errors": [
        {
          "property": "family",
          "message": "The tshirts family does not exist in your PIM."
        },
        {
          "property": "categories",
          "message": "The \"tvs_projectors\" category does not exist."
        },
        {
          "property": "associations.SUBSTITUTION.groups",
          "message": "You should associate existing groups. The \"promotion\" group does not exist."
        },
        {
          "property": "values",
          "message": "The \"description\" attribute requires a channel.",
          "attribute": "description",
          "locale": "en_US",
          "scope": null
        },
        {
          "property": "values",
          "message": "The \"name\" attribute requires a locale.",
          "attribute": "name",
          "locale": null,
          "scope": null
        }
      ],
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

Delete a product

This endpoint allows you to delete a given product. Permissions based on your user groups are applied to the product you try to delete.


REQUEST

delete /api/rest/v1/products/{code}

Path parameters

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

No content to return. Means that the deletion was successful.

Body Format application/json

Ø

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 404,
      "message": "Resource `my_resource_code` does not exist."
    }

Submit a draft for approval

This endpoint allows you to submit a draft for approval.


REQUEST

post /api/rest/v1/products/{code}/proposal

Path parameters

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

This response indicates that the entity was successfully created. The server has fulfilled the request and created a new resource. The response includes a Location header that contains the URI of the newly created resource.

Headers

Location • URI of the created resource

Body Format application/json

Ø

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the server understands the request but cannot process it due to validation errors in the provided data.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

errors (array [object]) : [
        {
         property (string) • Name of the invalid property
         message (string) • Human-readable error message
         attribute (string,null) • Attribute code (if the error is on an attribute)
         locale (string,null) • Locale code involved in the error, if any
         scope (string,null) • Channel code involved in the error, if any
        }
    ]

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Validation failed.",
      "errors": [
        {
          "property": "family",
          "message": "The tshirts family does not exist in your PIM."
        },
        {
          "property": "categories",
          "message": "The \"tvs_projectors\" category does not exist."
        },
        {
          "property": "associations.SUBSTITUTION.groups",
          "message": "You should associate existing groups. The \"promotion\" group does not exist."
        },
        {
          "property": "values",
          "message": "The \"description\" attribute requires a channel.",
          "attribute": "description",
          "locale": "en_US",
          "scope": null
        },
        {
          "property": "values",
          "message": "The \"name\" attribute requires a locale.",
          "attribute": "name",
          "locale": null,
          "scope": null
        }
      ],
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

Get a draft

This endpoint allows you to get the information about a given draft.


REQUEST

get /api/rest/v1/products/{code}/draft

Path parameters

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Returns the content of the product in JSON standard format

Body Format application/json

{

uuid (string) • Product UUID

identifier (string) • Product identifier, i.e. the value of the only pim_catalog_identifier attribute

enabled (boolean) • Whether the product is enabled

family (string,null)Family code from which the product inherits its attributes and attributes requirements. In the case of variant product, the given family should be the same as the product model family.

categories (array [string]) • Codes of the categories in which the product is classified.

groups (array [string]) • Codes of the groups to which the product belong. Each string of the array is equal to an existing group code.

parent (string,null) • Code of the parent product model when the product is a variant

values (object) • Product attributes values. Each key is an attribute code, and the value is an array of value objects for that attribute. See documentation for details.

associations (object) : {
    {^\w+$} (object) : {
        groups (array[string]) • Array of groups codes with which the product is in relation
        products (array[string]) • Array of product identifiers with which the product is in relation
        product_models (array[string]) • Array of product model codes with which the product is in relation
    }
  }

quantified_associations (object) : {
    {^\w+$} (object) : {
        products (array[object]) • Array of objects containing product identifiers and quantities with which the product is in relation
        product_models (array[object]) • Array of objects containing product model codes and quantities with which the product is in relation
    }
  }

created (string) • Date of creation

updated (string) • Date of the last update

metadata (object) : {
    workflow_status (string) • Status of the product regarding the user permissions
  }

quality_scores (array [object]) : [
        {
         scope (string) • Channel code for which the quality score is calculated
         locale (string) • Locale code for which the quality score is calculated
         data (string) • Quality score value for the given channel/locale combination
        }
    ]

completenesses (array [object]) : [
        {
         scope (string) • Channel code for which the completenesses score is calculated
         locale (string) • Channel code for which the completenesses score is calculated
         data (integer) • Completenesses score value for the given channel/locale combination
        }
    ]

workflow_execution_statuses (array [object]) : [
        {
         uuid (string) • Workflow execution UUID
         status (string) • Status of the workflow execution
         started_at (string) • Date and time when the workflow execution was started
         completed_at (string,null) • Date and time when the workflow execution was completed, null if still in progress
         workflow (object) • Workflow associated with the workflow execution
         tasks (array) • Tasks associated with the workflow execution
        }
    ]

}

Example

{
      "uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "identifier": "top",
      "enabled": true,
      "family": "tshirt",
      "categories": [
        "summer_collection"
      ],
      "groups": [],
      "values": {
        "name": [
          {
            "data": "Top",
            "locale": "en_US",
            "scope": null,
            "attribute_type": "pim_catalog_text"
          },
          {
            "data": "Débardeur",
            "locale": "fr_FR",
            "scope": null,
            "attribute_type": "pim_catalog_text"
          }
        ],
        "description": [
          {
            "data": "Summer top",
            "locale": "en_US",
            "scope": "ecommerce",
            "attribute_type": "pim_catalog_textarea"
          },
          {
            "data": "Top",
            "locale": "en_US",
            "scope": "tablet",
            "attribute_type": "pim_catalog_textarea"
          },
          {
            "data": "Débardeur pour l'été",
            "locale": "fr_FR",
            "scope": "ecommerce",
            "attribute_type": "pim_catalog_textarea"
          },
          {
            "data": "Débardeur",
            "locale": "fr_FR",
            "scope": "tablet",
            "attribute_type": "pim_catalog_textarea"
          }
        ],
        "price": [
          {
            "data": [
              {
                "amount": "15.5",
                "currency": "EUR"
              },
              {
                "amount": "15",
                "currency": "USD"
              }
            ],
            "locale": null,
            "scope": null,
            "attribute_type": "pim_catalog_price_collection"
          }
        ],
        "color": [
          {
            "data": "black",
            "locale": null,
            "scope": null,
            "linked_data": {
              "attribute": "color",
              "code": "black",
              "labels": {
                "en_US": "Black",
                "fr_FR": "Noir"
              }
            },
            "attribute_type": "pim_catalog_simpleselect"
          }
        ],
        "size": [
          {
            "data": "m",
            "locale": null,
            "scope": null,
            "linked_data": {
              "attribute": "size",
              "code": "m",
              "labels": {
                "en_US": "M",
                "fr_FR": "M"
              }
            },
            "attribute_type": "pim_catalog_simpleselect"
          }
        ],
        "collection": [
          {
            "data": [
              "winter_2016"
            ],
            "locale": null,
            "scope": null,
            "linked_data": {
              "winter_2016": {
                "attribute": "collection",
                "code": "winter_2016",
                "labels": {
                  "en_US": "Winter 2016",
                  "fr_FR": "Hiver 2016"
                }
              }
            },
            "attribute_type": "pim_catalog_multiselect"
          }
        ]
      },
      "created": "2016-06-23T18:24:44+02:00",
      "updated": "2016-06-25T17:56:12+02:00",
      "associations": {
        "PACK": {
          "products": [
            "sunglass"
          ],
          "product_models": [],
          "groups": []
        }
      },
      "quantified_associations": {
        "PRODUCT_SET": {
          "products": [
            {
              "identifier": "cap",
              "quantity": 2
            },
            {
              "identifier": "shoes",
              "quantity": 1
            }
          ],
          "product_models": [
            {
              "identifier": "model-biker-jacket-leather",
              "quantity": 2
            }
          ]
        }
      },
      "quality_scores": [
        {
          "scope": "ecommerce",
          "locale": "en_US",
          "data": "A"
        },
        {
          "scope": "ecommerce",
          "locale": "fr_FR",
          "data": "B"
        },
        {
          "scope": "tablet",
          "locale": "en_US",
          "data": "D"
        },
        {
          "scope": "tablet",
          "locale": "fr_FR",
          "data": "E"
        }
      ],
      "completenesses": [
        {
          "scope": "ecommerce",
          "locale": "en_US",
          "data": 10
        },
        {
          "scope": "ecommerce",
          "locale": "fr_FR",
          "data": 20
        },
        {
          "scope": "tablet",
          "locale": "en_US",
          "data": 30
        },
        {
          "scope": "tablet",
          "locale": "fr_FR",
          "data": 40
        }
      ],
      "workflow_execution_statuses": [
        {
          "uuid": "8c0fe59f-4d29-4faa-b4c3-d327e7f3cc52",
          "status": "in_progress",
          "started_at": "2024-02-22T17:31:00Z",
          "completed_at": null,
          "workflow": {
            "uuid": "6f37476a-04c2-46c0-b6d0-e18316959068",
            "code": "enrichment_workflow",
            "labels": {
              "en_US": "Enrichment workflow",
              "fr_FR": "Workflow d'enrichissement"
            }
          },
          "tasks": [
            {
              "uuid": "8f6c2d18-fbd4-4f7e-81df-cb3dc368fe07",
              "status": "in_progress",
              "created_at": "2024-02-22T17:31:00Z",
              "step": {
                "uuid": "f626d0e5-84a5-41fc-8215-65508c253edb",
                "code": "review_step",
                "labels": {
                  "en_US": "Marketing review",
                  "fr_FR": "Revue marketing"
                }
              }
            }
          ]
        },
        {
          "uuid": "59169984-6d6c-4fa7-b925-68b8e9d31ddb",
          "status": "completed",
          "started_at": "2024-02-22T17:31:00Z",
          "completed_at": "2024-02-22T17:31:00Z",
          "workflow": {
            "uuid": "b69ee158-a421-4680-bec0-a71bc73b8e31",
            "code": "compliance_workflow",
            "labels": {}
          },
          "tasks": []
        }
      ]
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 404,
      "message": "Resource `my_resource_code` does not exist."
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Product model

Get list of product models

This endpoint allows you to get a list of product models. Product models are paginated. Permissions based on your user groups are applied to the set of products you request.


REQUEST

get /api/rest/v1/product-models

Path parameters

Ø

Query parameters

search (string) • Filter product models, for more details see the Filters.

scope (string) • Filter product values to return scopable attributes for the given channel as well as the non localizable/non scopable attributes. It is useful for retrieving product information specific to a particular sales channel, which is essential for channel-specific applications. For more details see the Filter product values via channel section.

locales (string) • Filter product values to return localizable attributes for the given locales as well as the non localizable/non scopable attributes. It is useful for retrieving product information in specific languages, which is essential for multi-locale applications. For more details see the Filter product values via locale section.

attributes (string) • Filter product values to only return those concerning the given attributes. It is useful for limiting the response to specific attributes, reducing payload size and improving performance. For more details see the Filter product values via attributes section.

pagination_type (string, page by default) • Specify which pagination method to use for navigating through large datasets. It is useful for choosing between different pagination strategies based on your specific use case and performance requirements. See Pagination section for more details.

page (integer, 1 by default) • Specify which page of results to retrieve when using pagination. It is useful for navigating through large datasets by breaking them into smaller, manageable pages. See Pagination section for more details.

search_after (string, cursor to the first page by default) • Cursor when using the search_after pagination method type. It is essential for navigating through pages in cursor-based pagination, providing more efficient pagination for large datasets. Should never be set manually, see Pagination section for more details.

limit (integer, 10 by default) • Specify the maximum number of results to return per page. It is useful for controlling the amount of data returned in a single request, especially when dealing with large datasets. See Pagination section for more details.

search_scope (string) • Filter scopes based on specific criteria. If you need to filter on several attributes on the same scope, you can use this parameter, to avoid repeating yourself for each attribute. For more details see the Filters section.

search_locale (string) • Filter locales based on specific criteria. If you need to filter on several attributes on the same locale, you can use this parameter, to avoid repeating yourself for each attribute. For more details see the Filters section.

convert_measurements (boolean) • Convert values of measurement attributes to the unit configured in the channel provided by the scope parameter. When set to true, the response will include measurement values converted to the channel's configured units. This is useful for displaying measurement values in the appropriate units for different channels or regions. If set to false, the response will return measurement values in their original units, which can improve performance. Therefore, this parameter requires the scope parameter to be provided.

with_count (boolean) • Return the count of items in the response. Be careful with that, on a big catalog, it can decrease performance in a significant way. It is useful for understanding the size of the dataset being returned, especially when dealing with large collections. Use it judiciously to avoid performance issues.

with_workflow_execution_statuses (boolean)

Return an array of workflow_execution_statuses directly associated with the requested entity (product or product model) in the response. Statuses are level-specific and are not inherited from parent models. For a complete overview of a variant product, you must query the variant itself and its parent model(s) in separate requests. Each workflow object contains:

  • The overall execution status (e.g., in_progress, completed).
  • A list of all associated tasks.

with_attribute_options (boolean) • Return labels of attribute options in the response. See the linked_data format section for more details.

with_asset_share_links (boolean) • Return asset collection share link URLs in the response. When set to true, the response will include direct URLs to asset collections for sharing purposes. This is useful for accessing direct links to asset collections, which can be used for sharing or external integrations. If set to false, the response will not include share links, which can improve performance. See the linked_data format for more details.

with_quality_scores (boolean) • Return product model quality scores in the response.

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Return product models paginated. The response is paginated and includes links to navigate through the pages.

Body Format application/json

{

_links (object) : {
    self (object) : {
        href (string) • URI of the current page of resources
    }
    first (object) : {
        href (string) • URI of the first page of resources
    }
    previous (object) : {
        href (string) • URI of the previous page of resources
    }
    next (object) : {
        href (string) • URI of the next page of resources
    }
  }

current_page (integer) • Current page number

items_count (integer) • Total number of items (only if with_count parameter is set to true)

_embedded (object) : {
    items (array) : [
        {
          _links (object) : {
              self (object) : {
                  href (string) • URI of the resource
              }
          }
          code (string) • Product model code
          family (string,null)Family code from which the product inherits its attributes and attributes requirements. In the case of variant product, the given family should be the same as the product model family.
          family_variant (string) • Family variant code from which the product model inherits its attributes and variant attributes
          parent (string,null) • Code of the parent product model when the product is a variant
          categories (array [string]) • Codes of the categories in which the product is classified • Codes of the categories in which the product is classified
          values (object) • Product attributes values. Each key is an attribute code, and the value is an array of value objects for that attribute. See documentation for details.
          associations (object) : {
              {^\w+$} (object) : {
                  groups (array [string]) • Array of groups codes with which the product is in relation
                  products (array [string]) • Array of product identifiers with which the product is in relation
                  product_models (array [string]) • Array of product model codes with which the product is in relation
              }
          }
          quantified_associations (object) : {
              {^\w+$} (object) : {
                  products (array [object]) • Array of objects containing product identifiers and quantities with which the product is in relation
                  product_models (array [object]) • Array of objects containing product model codes and quantities with which the product is in relation
              }
          }
          created (string) • Date of creation
          updated (string) • Date of the last update
          metadata (object) : {
              workflow_status (string) • Status of the product regarding the user permissions
          }
          quality_scores (array [object]) : [
              {
                  scope (string) • Channel code for which the quality score is calculated
                  locale (string) • Locale code for which the quality score is calculated
                  data (string) • Quality score value for the given channel/locale combination
              }
          ]
          workflow_execution_statuses (array [object]) : [
              {
                  uuid (string) • Workflow execution UUID
                  status (string) • Status of the workflow execution
                  started_at (string) • Date and time when the workflow execution was started
                  completed_at (string,null) • Date and time when the workflow execution was completed, null if still in progress
                  workflow (object) • Workflow associated with the workflow execution
                  tasks (array [object]) • Tasks associated with the workflow execution
              }
          ]
        }
    ]
  }

}

Example

{
      "_links": {
        "self": {
          "href": "https://demo.akeneo.com/api/rest/v1/product-models?page=2&with_count=true&limit=3&with_quality_scores=true&with_workflow_execution_statuses=true"
        },
        "first": {
          "href": "https://demo.akeneo.com/api/rest/v1/product-models?page=1&with_count=true&limit=3&with_quality_scores=true&with_workflow_execution_statuses=true"
        },
        "previous": {
          "href": "https://demo.akeneo.com/api/rest/v1/product-models?page=1&with_count=true&limit=3&with_quality_scores=true&with_workflow_execution_statuses=true"
        },
        "next": {
          "href": "https://demo.akeneo.com/api/rest/v1/product-models?page=3&with_count=true&limit=3&with_quality_scores=true&with_workflow_execution_statuses=true"
        }
      },
      "current_page": 1,
      "items_count": 3,
      "_embedded": {
        "items": [
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/product-models/amarisshoe"
              }
            },
            "code": "amarisshoe",
            "family": "shoes",
            "family_variant": "shoes_VariantA1",
            "categories": [
              "clothing",
              "shoes"
            ],
            "values": {
              "price": [
                {
                  "data": [
                    {
                      "amount": "50.00",
                      "currency": "EUR"
                    }
                  ],
                  "locale": null,
                  "scope": null,
                  "attribute_type": "pim_catalog_price_collection"
                }
              ],
              "description": [
                {
                  "locale": "en_US",
                  "scope": "ecommerce",
                  "data": "I like shoes!",
                  "attribute_type": "pim_catalog_textarea"
                }
              ]
            },
            "associations": {
              "PACK": {
                "products": [
                  "sunglasses"
                ],
                "product_models": [],
                "groups": []
              }
            },
            "quantified_associations": {
              "PRODUCT_SET": {
                "products": [
                  {
                    "identifier": "cap",
                    "quantity": 2
                  },
                  {
                    "identifier": "shoes",
                    "quantity": 1
                  }
                ],
                "product_models": [
                  {
                    "identifier": "model-biker-jacket-leather",
                    "quantity": 2
                  }
                ]
              }
            },
            "quality_scores": [
              {
                "scope": "ecommerce",
                "locale": "en_US",
                "data": "A"
              },
              {
                "scope": "ecommerce",
                "locale": "fr_FR",
                "data": "B"
              },
              {
                "scope": "tablet",
                "locale": "en_US",
                "data": "D"
              },
              {
                "scope": "tablet",
                "locale": "fr_FR",
                "data": "E"
              }
            ],
            "workflow_execution_statuses": [
              {
                "uuid": "8c0fe59f-4d29-4faa-b4c3-d327e7f3cc52",
                "status": "in_progress",
                "started_at": "2024-02-22T17:31:00Z",
                "completed_at": null,
                "workflow": {
                  "uuid": "6f37476a-04c2-46c0-b6d0-e18316959068",
                  "code": "enrichment_workflow",
                  "labels": {
                    "en_US": "Enrichment workflow",
                    "fr_FR": "Workflow d'enrichissement"
                  }
                },
                "tasks": [
                  {
                    "uuid": "8f6c2d18-fbd4-4f7e-81df-cb3dc368fe07",
                    "status": "in_progress",
                    "created_at": "2024-02-22T17:31:00Z",
                    "step": {
                      "uuid": "f626d0e5-84a5-41fc-8215-65508c253edb",
                      "code": "review_step",
                      "labels": {
                        "en_US": "Marketing review",
                        "fr_FR": "Revue marketing"
                      }
                    }
                  }
                ]
              },
              {
                "uuid": "59169984-6d6c-4fa7-b925-68b8e9d31ddb",
                "status": "completed",
                "started_at": "2024-02-22T17:31:00Z",
                "completed_at": "2024-02-22T17:31:00Z",
                "workflow": {
                  "uuid": "b69ee158-a421-4680-bec0-a71bc73b8e31",
                  "code": "compliance_workflow",
                  "labels": {}
                },
                "tasks": []
              }
            ],
            "created": "2017-10-04T18:04:10+02:00",
            "updated": "2017-10-04T18:04:10+02:00"
          },
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/product-models/Abiloitshirt"
              }
            },
            "code": "Abiloitshirt",
            "family": "clothing",
            "family_variant": "clothing_VariantA1",
            "categories": [
              "clothing",
              "tshirt"
            ],
            "values": {
              "price": [
                {
                  "data": [
                    {
                      "amount": "50.00",
                      "currency": "EUR"
                    }
                  ],
                  "locale": null,
                  "scope": null,
                  "attribute_type": "pim_catalog_price_collection"
                }
              ],
              "description": [
                {
                  "locale": "en_US",
                  "scope": "ecommerce",
                  "data": "I like tshirt!",
                  "attribute_type": "pim_catalog_textarea"
                }
              ]
            },
            "associations": {
              "PACK": {
                "products": [
                  "sunglasses"
                ],
                "product_models": [],
                "groups": []
              }
            },
            "quantified_associations": {
              "PRODUCT_SET": {
                "products": [
                  {
                    "identifier": "cap",
                    "quantity": 2
                  }
                ],
                "product_models": []
              }
            },
            "quality_scores": [
              {
                "scope": "ecommerce",
                "locale": "en_US",
                "data": "A"
              },
              {
                "scope": "ecommerce",
                "locale": "fr_FR",
                "data": "B"
              },
              {
                "scope": "tablet",
                "locale": "en_US",
                "data": "D"
              },
              {
                "scope": "tablet",
                "locale": "fr_FR",
                "data": "E"
              }
            ],
            "workflow_execution_statuses": [],
            "created": "2017-10-04T18:04:10+02:00",
            "updated": "2017-10-04T18:04:10+02:00"
          },
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/product-models/Astertrousers"
              }
            },
            "code": "Astertrousers",
            "family": "clothing",
            "family_variant": "clothing_VariantA1",
            "categories": [
              "clothing",
              "trousers"
            ],
            "values": {
              "price": [
                {
                  "data": [
                    {
                      "amount": "50.00",
                      "currency": "EUR"
                    }
                  ],
                  "locale": null,
                  "scope": null,
                  "attribute_type": "pim_catalog_price_collection"
                }
              ],
              "description": [
                {
                  "locale": "en_US",
                  "scope": "ecommerce",
                  "data": "I like trousers!",
                  "attribute_type": "pim_catalog_textarea"
                }
              ]
            },
            "associations": {
              "PACK": {
                "products": [
                  "sunglasses"
                ],
                "product_models": [],
                "groups": []
              }
            },
            "quantified_associations": {},
            "workflow_execution_statuses": [],
            "created": "2017-10-04T18:04:10+02:00",
            "updated": "2017-10-04T18:04:10+02:00"
          }
        ]
      }
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the server understands the request but cannot process it due to validation errors in the provided data.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

errors (array [object]) : [
        {
         property (string) • Name of the invalid property
         message (string) • Human-readable error message
         attribute (string,null) • Attribute code (if the error is on an attribute)
         locale (string,null) • Locale code involved in the error, if any
         scope (string,null) • Channel code involved in the error, if any
        }
    ]

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Validation failed.",
      "errors": [
        {
          "property": "family",
          "message": "The tshirts family does not exist in your PIM."
        },
        {
          "property": "categories",
          "message": "The \"tvs_projectors\" category does not exist."
        },
        {
          "property": "associations.SUBSTITUTION.groups",
          "message": "You should associate existing groups. The \"promotion\" group does not exist."
        },
        {
          "property": "values",
          "message": "The \"description\" attribute requires a channel.",
          "attribute": "description",
          "locale": "en_US",
          "scope": null
        },
        {
          "property": "values",
          "message": "The \"name\" attribute requires a locale.",
          "attribute": "name",
          "locale": null,
          "scope": null
        }
      ],
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

Create a new product model

This endpoint allows you to create a new product model. Permissions based on your user groups are applied to the product model you try to create.


REQUEST

post /api/rest/v1/product-models

Path parameters

Ø

Query parameters

create_missing_options (string) • When present in the query string (regardless of value), automatically creates missing attribute options during product/product model creation or update. This only works for simple select and multi select attributes that have the enable_option_creation_during_import property set to true (configurable via the Attribute API).

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/json', no other value allowed

Body

Follow the standard format of the entity

{

code (string) • Product model code. Required for POST (create) operations. Optional for PATCH (update) operations as it can be inferred from the URL.

family (string) Family code from which the product model inherits its attributes and attributes requirements. In the case of variant product, the given family should be the same as the product model family.

family_variant (string) • Family variant code from which the product model inherits its attributes and variant attributes. Required for root product models (without parent). Optional for sub-product models (with parent), as it can be inferred from the parent.

parent (string,null, null by default) • Code of the parent product model

categories (array[string], [] by default) • Codes of the categories in which the product model is categorized

values (object) • Product model attributes values. Each key is an attribute code, and the value is an array of value objects for that attribute. See documentation for details.

associations (object) : {
        {^\w+$} (object) : {
            groups (array) • Array of groups codes with which the product is in relation
            products (array) • Array of product identifiers with which the product is in relation
            product_models (array) • Array of product model codes with which the product is in relation
        }
    }

quantified_associations (object) : {
        {^\w+$} (object) : {
            products (array) • Array of objects containing product identifiers and quantities with which the product is in relation
            product_models (array) • Array of objects containing product model codes and quantities with which the product is in relation
        }
    }

}

Example

{
      "code": "model-biker-jacket-leather",
      "family": "clothing",
      "family_variant": "clothing_material_size",
      "parent": "model-biker-jacket",
      "categories": [
        "summer_collection"
      ],
      "values": {
        "color": [
          {
            "data": "antique_white",
            "locale": null,
            "scope": null
          }
        ],
        "material": [
          {
            "data": "leather",
            "locale": null,
            "scope": null
          }
        ],
        "variation_name": [
          {
            "locale": "en_US",
            "data": "Biker jacket leather",
            "scope": null
          }
        ],
        "name": [
          {
            "locale": "en_US",
            "data": "Biker jacket",
            "scope": null
          }
        ],
        "collection": [
          {
            "data": [
              "summer_2017"
            ],
            "locale": null,
            "scope": null
          }
        ],
        "description": [
          {
            "locale": "en_US",
            "scope": "ecommerce",
            "data": "Biker jacket"
          }
        ]
      },
      "associations": {
        "PACK": {
          "products": [
            "sunglass"
          ],
          "product_models": [],
          "groups": []
        }
      },
      "quantified_associations": {
        "PRODUCT_SET": {
          "products": [
            {
              "identifier": "top",
              "quantity": 2
            },
            {
              "identifier": "cap",
              "quantity": 1
            }
          ],
          "product_models": [
            {
              "identifier": "model-biker-jacket-leather",
              "quantity": 2
            }
          ]
        }
      }
    }

RESPONSES

This response indicates that the entity was successfully created. The server has fulfilled the request and created a new resource. The response includes a Location header that contains the URI of the newly created resource.

Headers

Location • URI of the created resource

Body Format application/json

Ø

This response indicates that the server cannot process the request due to a client error, such as malformed request syntax, invalid request message framing, or deceptive request routing. It is typically used when the server cannot understand the request due to invalid JSON or other client-side issues.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 400,
      "message": "Invalid JSON message received"
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the server understands the request but cannot process it due to validation errors in the provided data.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

errors (array [object]) : [
        {
         property (string) • Name of the invalid property
         message (string) • Human-readable error message
         attribute (string,null) • Attribute code (if the error is on an attribute)
         locale (string,null) • Locale code involved in the error, if any
         scope (string,null) • Channel code involved in the error, if any
        }
    ]

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Validation failed.",
      "errors": [
        {
          "property": "family",
          "message": "The tshirts family does not exist in your PIM."
        },
        {
          "property": "categories",
          "message": "The \"tvs_projectors\" category does not exist."
        },
        {
          "property": "associations.SUBSTITUTION.groups",
          "message": "You should associate existing groups. The \"promotion\" group does not exist."
        },
        {
          "property": "values",
          "message": "The \"description\" attribute requires a channel.",
          "attribute": "description",
          "locale": "en_US",
          "scope": null
        },
        {
          "property": "values",
          "message": "The \"name\" attribute requires a locale.",
          "attribute": "name",
          "locale": null,
          "scope": null
        }
      ],
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

Update/create several product models

This endpoint allows you to update and/or create several product models at once. Learn more about Update behavior. Note that if no product models exists for the given code, it creates it. Permissions based on your user groups are applied to the product models you try to update. It may result in the creation of drafts if you only have edit rights through the product model's categories.


REQUEST

patch /api/rest/v1/product-models

Path parameters

Ø

Query parameters

create_missing_options (string) • When present in the query string (regardless of value), automatically creates missing attribute options during product/product model creation or update. This only works for simple select and multi select attributes that have the enable_option_creation_during_import property set to true (configurable via the Attribute API).

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/vnd.akeneo.collection+json', no other value allowed

Body

Contains several lines, each line is a product model in JSON standard format. Modifications to existing product models can be specified using additional keys such as `add_categories` and `remove_categories`.

{

code (string) • Product model code. Required for POST (create) operations. Optional for PATCH (update) operations as it can be inferred from the URL.

family (string) Family code from which the product model inherits its attributes and attributes requirements. In the case of variant product, the given family should be the same as the product model family.

family_variant (string) • Family variant code from which the product model inherits its attributes and variant attributes. Required for root product models (without parent). Optional for sub-product models (with parent), as it can be inferred from the parent.

parent (string,null, null by default) • Code of the parent product model

categories (array[string], [] by default) • Codes of the categories in which the product model is categorized

add_categories (array[string], [] by default) • Codes of the categories to add to the product model. Existing categories will be preserved.

remove_categories (array[string], [] by default) • Codes of the categories to remove from the product model. Other categories will be preserved.

values (object) • Product model attributes values. Each key is an attribute code, and the value is an array of value objects for that attribute. See documentation for details.

associations (object) : {
        {^\w+$} (object) : {
            groups (array) • Array of groups codes with which the product is in relation
            products (array) • Array of product identifiers with which the product is in relation
            product_models (array) • Array of product model codes with which the product is in relation
        }
    }

quantified_associations (object) : {
        {^\w+$} (object) : {
            products (array) • Array of objects containing product identifiers and quantities with which the product is in relation
            product_models (array) • Array of objects containing product model codes and quantities with which the product is in relation
        }
    }

created (string) • Date of creation

updated (string) • Date of the last update

metadata (object) : {
        workflow_status (string) • Status of the product model regarding the user permissions
    }

quality_scores (array[object]) : [
        {
           scope (string) • Channel code for which the quality score is calculated
           locale (string) • Locale code for which the quality score is calculated
           data (string) • Quality score value for the given channel/locale combination
        }
    ]

workflow_execution_statuses (array[object]) : [
        {
           uuid (string) • Workflow execution UUID
           status (string) • Status of the workflow execution
           started_at (string) • Date and time when the workflow execution was started
           completed_at (string,null) • Date and time when the workflow execution was completed, null if still in progress
           workflow (object) • Workflow associated with the workflow execution
           tasks (array[object]) • Tasks associated with the workflow execution
        }
    ]

}

Example

{"code": "sub_sweat_option_a", "parent": "sweat", "values": {"a_simple_select": [{"locale": null, "scope": null, "data": "optionA"}]}}
    {"code": "sub_sweat_option_b", "parent": "sweat", "values": {"a_simple_select": [{"locale": null, "scope": null, "data": "optionA"}]}}
    {"code":"tshirt", "parent": "root_tshirt", "family_variant":"clothesvariant","values":{"description":[{"scope":"ecommerce","locale":"en_US","data":"My amazing tshirt"}]}}
    

RESPONSES

Returns a plain text response whose lines are JSON containing the status of each update or creation

Body Format application/json

{

line (integer) • Line number

code (string) • Resource code

status_code (integer) • HTTP status code, see Client errors to understand the meaning of each code

message (string) • Message explaining the error

}

Example

{"line":1,"code":"sub_sweat_option_a","status_code":204}
    {"line":2,"code":"sub_sweat_option_b","status_code":422,"message":"Validation failed.","errors":[{"property":"attribute","message":"Cannot set value \"Option A\" for the attribute axis \"a_simple_select\", as another sibling entity already has this value"}]}
    {"line":3,"code":"tshirt","status_code":201}
    

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the request entity is larger than the server is willing or able to process. It can occur when the number of resources in a batch request exceeds the maximum allowed limit.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 413,
      "message": "Too many resources to process, 100 is the maximum allowed."
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

Get a product model

This endpoint allows you to get the information about a given product model. Permissions based on your user groups are applied to the product model you request.


REQUEST

get /api/rest/v1/product-models/{code}

Path parameters

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

with_asset_share_links (boolean) • Return asset collection share link URLs in the response. When set to true, the response will include direct URLs to asset collections for sharing purposes. This is useful for accessing direct links to asset collections, which can be used for sharing or external integrations. If set to false, the response will not include share links, which can improve performance. See the linked_data format for more details.

with_quality_scores (boolean) • Return product quality scores in the response. When set to true, the response will include quality score information for each product. This is useful for assessing and monitoring product data quality, which is essential for maintaining high data standards and improving product information. If set to false, the response will not include quality scores, which can improve performance.

with_workflow_execution_statuses (boolean)

Return an array of workflow_execution_statuses directly associated with the requested entity (product or product model) in the response. Statuses are level-specific and are not inherited from parent models. For a complete overview of a variant product, you must query the variant itself and its parent model(s) in separate requests. Each workflow object contains:

  • The overall execution status (e.g., in_progress, completed).
  • A list of all associated tasks.

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Returns the content of the product model in JSON standard format

Body Format application/json

{

code (string) • Product model code

family (string,null)Family code from which the product inherits its attributes and attributes requirements. In the case of variant product, the given family should be the same as the product model family.

family_variant (string) • Family variant code from which the product model inherits its attributes and variant attributes

parent (string,null) • Code of the parent product model when the product is a variant

categories (array [string]) • Codes of the categories in which the product is classified

values (object) • Product attributes values. Each key is an attribute code, and the value is an array of value objects for that attribute. See documentation for details.

associations (object) : {
    {^\w+$} (object) : {
        groups (array[string]) • Array of groups codes with which the product is in relation
        products (array[string]) • Array of product identifiers with which the product is in relation
        product_models (array[string]) • Array of product model codes with which the product is in relation
    }
  }

quantified_associations (object) : {
    {^\w+$} (object) : {
        products (array[object]) • Array of objects containing product identifiers and quantities with which the product is in relation
        product_models (array[object]) • Array of objects containing product model codes and quantities with which the product is in relation
    }
  }

created (string) • Date of creation

updated (string) • Date of the last update

metadata (object) : {
    workflow_status (string) • Status of the product regarding the user permissions
  }

quality_scores (array [object]) : [
        {
         scope (string) • Channel code for which the quality score is calculated
         locale (string) • Locale code for which the quality score is calculated
         data (string) • Quality score value for the given channel/locale combination
        }
    ]

workflow_execution_statuses (array [object]) : [
        {
         uuid (string) • Workflow execution UUID
         status (string) • Status of the workflow execution
         started_at (string) • Date and time when the workflow execution was started
         completed_at (string,null) • Date and time when the workflow execution was completed, null if still in progress
         workflow (object) • Workflow associated with the workflow execution
         tasks (array) • Tasks associated with the workflow execution
        }
    ]

}

Example

{
      "code": "model-biker-jacket-leather",
      "family": "clothing",
      "family_variant": "clothing_material_size",
      "parent": "model-biker-jacket",
      "categories": [
        "summer_collection"
      ],
      "values": {
        "color": [
          {
            "data": "antique_white",
            "locale": null,
            "scope": null,
            "attribute_type": "pim_catalog_simpleselect"
          }
        ],
        "material": [
          {
            "data": "leather",
            "locale": null,
            "scope": null,
            "attribute_type": "pim_catalog_text"
          }
        ],
        "variation_name": [
          {
            "locale": "en_US",
            "data": "Biker jacket leather",
            "scope": null,
            "attribute_type": "pim_catalog_text"
          }
        ],
        "name": [
          {
            "locale": "en_US",
            "data": "Biker jacket",
            "scope": null,
            "attribute_type": "pim_catalog_text"
          }
        ],
        "collection": [
          {
            "data": [
              "summer_2017"
            ],
            "locale": null,
            "scope": null,
            "attribute_type": "pim_catalog_multiselect"
          }
        ],
        "description": [
          {
            "locale": "en_US",
            "scope": "ecommerce",
            "data": "Biker jacket",
            "attribute_type": "pim_catalog_textarea"
          }
        ]
      },
      "associations": {
        "PACK": {
          "products": [
            "sunglass"
          ],
          "product_models": [],
          "groups": []
        }
      },
      "quantified_associations": {
        "PRODUCT_SET": {
          "products": [
            {
              "identifier": "top",
              "quantity": 2
            },
            {
              "identifier": "cap",
              "quantity": 1
            }
          ],
          "product_models": [
            {
              "identifier": "model-biker-jacket-leather",
              "quantity": 2
            }
          ]
        }
      },
      "quality_scores": [
        {
          "scope": "ecommerce",
          "locale": "en_US",
          "data": "A"
        },
        {
          "scope": "ecommerce",
          "locale": "fr_FR",
          "data": "B"
        },
        {
          "scope": "tablet",
          "locale": "en_US",
          "data": "D"
        },
        {
          "scope": "tablet",
          "locale": "fr_FR",
          "data": "E"
        }
      ],
      "workflow_execution_statuses": [
        {
          "uuid": "8c0fe59f-4d29-4faa-b4c3-d327e7f3cc52",
          "status": "in_progress",
          "started_at": "2024-02-22T17:31:00Z",
          "completed_at": null,
          "workflow": {
            "uuid": "6f37476a-04c2-46c0-b6d0-e18316959068",
            "code": "enrichment_workflow",
            "labels": {
              "en_US": "Enrichment workflow",
              "fr_FR": "Workflow d'enrichissement"
            }
          },
          "tasks": [
            {
              "uuid": "8f6c2d18-fbd4-4f7e-81df-cb3dc368fe07",
              "status": "in_progress",
              "created_at": "2024-02-22T17:31:00Z",
              "step": {
                "uuid": "f626d0e5-84a5-41fc-8215-65508c253edb",
                "code": "review_step",
                "labels": {
                  "en_US": "Marketing review",
                  "fr_FR": "Revue marketing"
                }
              }
            }
          ]
        },
        {
          "uuid": "59169984-6d6c-4fa7-b925-68b8e9d31ddb",
          "status": "completed",
          "started_at": "2024-02-22T17:31:00Z",
          "completed_at": "2024-02-22T17:31:00Z",
          "workflow": {
            "uuid": "b69ee158-a421-4680-bec0-a71bc73b8e31",
            "code": "compliance_workflow",
            "labels": {}
          },
          "tasks": []
        }
      ],
      "created": "2017-10-02T15:03:55+02:00",
      "updated": "2017-10-02T15:03:55+02:00"
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 404,
      "message": "Resource `my_resource_code` does not exist."
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Update/create a product model

This endpoint allows you to update a given product model. Learn more about Update behavior. Note that if no product model exists for the given code, it creates it. Permissions based on your user groups are applied to the product model you try to update. It may result in the creation of a draft if you only have edit rights through the product model's categories.


REQUEST

patch /api/rest/v1/product-models/{code}

Path parameters

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

create_missing_options (string) • When present in the query string (regardless of value), automatically creates missing attribute options during product/product model creation or update. This only works for simple select and multi select attributes that have the enable_option_creation_during_import property set to true (configurable via the Attribute API).

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/json', no other value allowed

Body

Follow the standard format of the entity

{

code (string) • Product model code. Required for POST (create) operations. Optional for PATCH (update) operations as it can be inferred from the URL.

family (string) Family code from which the product model inherits its attributes and attributes requirements. In the case of variant product, the given family should be the same as the product model family.

family_variant (string) • Family variant code from which the product model inherits its attributes and variant attributes. Required for root product models (without parent). Optional for sub-product models (with parent), as it can be inferred from the parent.

parent (string,null, null by default) • Code of the parent product model

categories (array[string], [] by default) • Codes of the categories in which the product model is categorized

add_categories (array[string], [] by default) • Codes of the categories to add to the product model. Existing categories will be preserved.

remove_categories (array[string], [] by default) • Codes of the categories to remove from the product model. Other categories will be preserved.

values (object) • Product model attributes values. Each key is an attribute code, and the value is an array of value objects for that attribute. See documentation for details.

associations (object) : {
        {^\w+$} (object) : {
            groups (array) • Array of groups codes with which the product is in relation
            products (array) • Array of product identifiers with which the product is in relation
            product_models (array) • Array of product model codes with which the product is in relation
        }
    }

quantified_associations (object) : {
        {^\w+$} (object) : {
            products (array) • Array of objects containing product identifiers and quantities with which the product is in relation
            product_models (array) • Array of objects containing product model codes and quantities with which the product is in relation
        }
    }

created (string) • Date of creation

updated (string) • Date of the last update

metadata (object) : {
        workflow_status (string) • Status of the product model regarding the user permissions
    }

quality_scores (array[object]) : [
        {
           scope (string) • Channel code for which the quality score is calculated
           locale (string) • Locale code for which the quality score is calculated
           data (string) • Quality score value for the given channel/locale combination
        }
    ]

workflow_execution_statuses (array[object]) : [
        {
           uuid (string) • Workflow execution UUID
           status (string) • Status of the workflow execution
           started_at (string) • Date and time when the workflow execution was started
           completed_at (string,null) • Date and time when the workflow execution was completed, null if still in progress
           workflow (object) • Workflow associated with the workflow execution
           tasks (array[object]) • Tasks associated with the workflow execution
        }
    ]

}

Example

{
      "code": "model-biker-jacket-leather",
      "family": "clothing",
      "family_variant": "clothing_material_size",
      "parent": "model-biker-jacket",
      "categories": [
        "summer_collection"
      ],
      "values": {
        "color": [
          {
            "data": "antique_white",
            "locale": null,
            "scope": null,
            "attribute_type": "pim_catalog_simpleselect"
          }
        ],
        "material": [
          {
            "data": "leather",
            "locale": null,
            "scope": null,
            "attribute_type": "pim_catalog_text"
          }
        ],
        "variation_name": [
          {
            "locale": "en_US",
            "data": "Biker jacket leather",
            "scope": null,
            "attribute_type": "pim_catalog_text"
          }
        ],
        "name": [
          {
            "locale": "en_US",
            "data": "Biker jacket",
            "scope": null,
            "attribute_type": "pim_catalog_text"
          }
        ],
        "collection": [
          {
            "data": [
              "summer_2017"
            ],
            "locale": null,
            "scope": null,
            "attribute_type": "pim_catalog_multiselect"
          }
        ],
        "description": [
          {
            "locale": "en_US",
            "scope": "ecommerce",
            "data": "Biker jacket",
            "attribute_type": "pim_catalog_textarea"
          }
        ]
      },
      "associations": {
        "PACK": {
          "products": [
            "sunglass"
          ],
          "product_models": [],
          "groups": []
        }
      },
      "quantified_associations": {
        "PRODUCT_SET": {
          "products": [
            {
              "identifier": "top",
              "quantity": 2
            },
            {
              "identifier": "cap",
              "quantity": 1
            }
          ],
          "product_models": [
            {
              "identifier": "model-biker-jacket-leather",
              "quantity": 2
            }
          ]
        }
      },
      "quality_scores": [
        {
          "scope": "ecommerce",
          "locale": "en_US",
          "data": "A"
        },
        {
          "scope": "ecommerce",
          "locale": "fr_FR",
          "data": "B"
        },
        {
          "scope": "tablet",
          "locale": "en_US",
          "data": "D"
        },
        {
          "scope": "tablet",
          "locale": "fr_FR",
          "data": "E"
        }
      ],
      "workflow_execution_statuses": [
        {
          "uuid": "8c0fe59f-4d29-4faa-b4c3-d327e7f3cc52",
          "status": "in_progress",
          "started_at": "2024-02-22T17:31:00Z",
          "completed_at": null,
          "workflow": {
            "uuid": "6f37476a-04c2-46c0-b6d0-e18316959068",
            "code": "enrichment_workflow",
            "labels": {
              "en_US": "Enrichment workflow",
              "fr_FR": "Workflow d'enrichissement"
            }
          },
          "tasks": [
            {
              "uuid": "8f6c2d18-fbd4-4f7e-81df-cb3dc368fe07",
              "status": "in_progress",
              "created_at": "2024-02-22T17:31:00Z",
              "step": {
                "uuid": "f626d0e5-84a5-41fc-8215-65508c253edb",
                "code": "review_step",
                "labels": {
                  "en_US": "Marketing review",
                  "fr_FR": "Revue marketing"
                }
              }
            }
          ]
        },
        {
          "uuid": "59169984-6d6c-4fa7-b925-68b8e9d31ddb",
          "status": "completed",
          "started_at": "2024-02-22T17:31:00Z",
          "completed_at": "2024-02-22T17:31:00Z",
          "workflow": {
            "uuid": "b69ee158-a421-4680-bec0-a71bc73b8e31",
            "code": "compliance_workflow",
            "labels": {}
          },
          "tasks": []
        }
      ],
      "created": "2017-10-02T15:03:55+02:00",
      "updated": "2017-10-02T15:03:55+02:00"
    }

RESPONSES

This response indicates that the entity was successfully created. The server has fulfilled the request and created a new resource. The response includes a Location header that contains the URI of the newly created resource.

Headers

Location • URI of the created resource

Body Format application/json

Ø

This response indicates that the request was successful and that there is no content to return. It is typically used in response to a successful update operation where the server does not need to return any data to the client.

Headers

Location • URI of the updated resource

Body Format application/json

Ø

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the server understands the request but cannot process it due to validation errors in the provided data.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

errors (array [object]) : [
        {
         property (string) • Name of the invalid property
         message (string) • Human-readable error message
         attribute (string,null) • Attribute code (if the error is on an attribute)
         locale (string,null) • Locale code involved in the error, if any
         scope (string,null) • Channel code involved in the error, if any
        }
    ]

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Validation failed.",
      "errors": [
        {
          "property": "family",
          "message": "The tshirts family does not exist in your PIM."
        },
        {
          "property": "categories",
          "message": "The \"tvs_projectors\" category does not exist."
        },
        {
          "property": "associations.SUBSTITUTION.groups",
          "message": "You should associate existing groups. The \"promotion\" group does not exist."
        },
        {
          "property": "values",
          "message": "The \"description\" attribute requires a channel.",
          "attribute": "description",
          "locale": "en_US",
          "scope": null
        },
        {
          "property": "values",
          "message": "The \"name\" attribute requires a locale.",
          "attribute": "name",
          "locale": null,
          "scope": null
        }
      ],
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

Delete a product model

This endpoint allows you to delete a given product model. All its children, product models and variant products, will be also deleted. Permissions based on your connection user group are applied to the product model you try to delete.


REQUEST

delete /api/rest/v1/product-models/{code}

Path parameters

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

No content to return. Means that the deletion was successful.

Body Format application/json

Ø

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 404,
      "message": "Resource `my_resource_code` does not exist."
    }

Submit a draft for approval

This endpoint allows you to submit a product model draft for approval


REQUEST

post /api/rest/v1/product-models/{code}/proposal

Path parameters

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

This response indicates that the entity was successfully created. The server has fulfilled the request and created a new resource. The response includes a Location header that contains the URI of the newly created resource.

Headers

Location • URI of the created resource

Body Format application/json

Ø

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the server understands the request but cannot process it due to validation errors in the provided data.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

errors (array [object]) : [
        {
         property (string) • Name of the invalid property
         message (string) • Human-readable error message
         attribute (string,null) • Attribute code (if the error is on an attribute)
         locale (string,null) • Locale code involved in the error, if any
         scope (string,null) • Channel code involved in the error, if any
        }
    ]

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Validation failed.",
      "errors": [
        {
          "property": "family",
          "message": "The tshirts family does not exist in your PIM."
        },
        {
          "property": "categories",
          "message": "The \"tvs_projectors\" category does not exist."
        },
        {
          "property": "associations.SUBSTITUTION.groups",
          "message": "You should associate existing groups. The \"promotion\" group does not exist."
        },
        {
          "property": "values",
          "message": "The \"description\" attribute requires a channel.",
          "attribute": "description",
          "locale": "en_US",
          "scope": null
        },
        {
          "property": "values",
          "message": "The \"name\" attribute requires a locale.",
          "attribute": "name",
          "locale": null,
          "scope": null
        }
      ],
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

Get a draft

This endpoint allows you to get the information about a given product model draft


REQUEST

get /api/rest/v1/product-models/{code}/draft

Path parameters

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Returns the content of the product model in JSON standard format

Body Format application/json

{

code (string) • Product model code

family (string,null)Family code from which the product inherits its attributes and attributes requirements. In the case of variant product, the given family should be the same as the product model family.

family_variant (string) • Family variant code from which the product model inherits its attributes and variant attributes

parent (string,null) • Code of the parent product model when the product is a variant

categories (array [string]) • Codes of the categories in which the product is classified

values (object) • Product attributes values. Each key is an attribute code, and the value is an array of value objects for that attribute. See documentation for details.

associations (object) : {
    {^\w+$} (object) : {
        groups (array[string]) • Array of groups codes with which the product is in relation
        products (array[string]) • Array of product identifiers with which the product is in relation
        product_models (array[string]) • Array of product model codes with which the product is in relation
    }
  }

quantified_associations (object) : {
    {^\w+$} (object) : {
        products (array[object]) • Array of objects containing product identifiers and quantities with which the product is in relation
        product_models (array[object]) • Array of objects containing product model codes and quantities with which the product is in relation
    }
  }

created (string) • Date of creation

updated (string) • Date of the last update

metadata (object) : {
    workflow_status (string) • Status of the product regarding the user permissions
  }

quality_scores (array [object]) : [
        {
         scope (string) • Channel code for which the quality score is calculated
         locale (string) • Locale code for which the quality score is calculated
         data (string) • Quality score value for the given channel/locale combination
        }
    ]

workflow_execution_statuses (array [object]) : [
        {
         uuid (string) • Workflow execution UUID
         status (string) • Status of the workflow execution
         started_at (string) • Date and time when the workflow execution was started
         completed_at (string,null) • Date and time when the workflow execution was completed, null if still in progress
         workflow (object) • Workflow associated with the workflow execution
         tasks (array) • Tasks associated with the workflow execution
        }
    ]

}

Example

{
      "code": "model-biker-jacket-leather",
      "family": "clothing",
      "family_variant": "clothing_material_size",
      "parent": "model-biker-jacket",
      "categories": [
        "summer_collection"
      ],
      "values": {
        "color": [
          {
            "data": "antique_white",
            "locale": null,
            "scope": null,
            "attribute_type": "pim_catalog_simpleselect"
          }
        ],
        "material": [
          {
            "data": "leather",
            "locale": null,
            "scope": null,
            "attribute_type": "pim_catalog_text"
          }
        ],
        "variation_name": [
          {
            "locale": "en_US",
            "data": "Biker jacket leather",
            "scope": null,
            "attribute_type": "pim_catalog_text"
          }
        ],
        "name": [
          {
            "locale": "en_US",
            "data": "Biker jacket",
            "scope": null,
            "attribute_type": "pim_catalog_text"
          }
        ],
        "collection": [
          {
            "data": [
              "summer_2017"
            ],
            "locale": null,
            "scope": null,
            "attribute_type": "pim_catalog_multiselect"
          }
        ],
        "description": [
          {
            "locale": "en_US",
            "scope": "ecommerce",
            "data": "Biker jacket",
            "attribute_type": "pim_catalog_textarea"
          }
        ]
      },
      "associations": {
        "PACK": {
          "products": [
            "sunglass"
          ],
          "product_models": [],
          "groups": []
        }
      },
      "quantified_associations": {
        "PRODUCT_SET": {
          "products": [
            {
              "identifier": "top",
              "quantity": 2
            },
            {
              "identifier": "cap",
              "quantity": 1
            }
          ],
          "product_models": [
            {
              "identifier": "model-biker-jacket-leather",
              "quantity": 2
            }
          ]
        }
      },
      "quality_scores": [
        {
          "scope": "ecommerce",
          "locale": "en_US",
          "data": "A"
        },
        {
          "scope": "ecommerce",
          "locale": "fr_FR",
          "data": "B"
        },
        {
          "scope": "tablet",
          "locale": "en_US",
          "data": "D"
        },
        {
          "scope": "tablet",
          "locale": "fr_FR",
          "data": "E"
        }
      ],
      "workflow_execution_statuses": [
        {
          "uuid": "8c0fe59f-4d29-4faa-b4c3-d327e7f3cc52",
          "status": "in_progress",
          "started_at": "2024-02-22T17:31:00Z",
          "completed_at": null,
          "workflow": {
            "uuid": "6f37476a-04c2-46c0-b6d0-e18316959068",
            "code": "enrichment_workflow",
            "labels": {
              "en_US": "Enrichment workflow",
              "fr_FR": "Workflow d'enrichissement"
            }
          },
          "tasks": [
            {
              "uuid": "8f6c2d18-fbd4-4f7e-81df-cb3dc368fe07",
              "status": "in_progress",
              "created_at": "2024-02-22T17:31:00Z",
              "step": {
                "uuid": "f626d0e5-84a5-41fc-8215-65508c253edb",
                "code": "review_step",
                "labels": {
                  "en_US": "Marketing review",
                  "fr_FR": "Revue marketing"
                }
              }
            }
          ]
        },
        {
          "uuid": "59169984-6d6c-4fa7-b925-68b8e9d31ddb",
          "status": "completed",
          "started_at": "2024-02-22T17:31:00Z",
          "completed_at": "2024-02-22T17:31:00Z",
          "workflow": {
            "uuid": "b69ee158-a421-4680-bec0-a71bc73b8e31",
            "code": "compliance_workflow",
            "labels": {}
          },
          "tasks": []
        }
      ],
      "created": "2017-10-02T15:03:55+02:00",
      "updated": "2017-10-02T15:03:55+02:00"
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 404,
      "message": "Resource `my_resource_code` does not exist."
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Product media file

Get a list of product media files

This endpoint allows you to get a list of media files that are used as attribute values in products or product models


REQUEST

get /api/rest/v1/media-files

Path parameters

Ø

Query parameters

page (integer, 1 by default) • Specify which page of results to retrieve when using pagination. It is useful for navigating through large datasets by breaking them into smaller, manageable pages. See Pagination section for more details.

limit (integer, 10 by default) • Specify the maximum number of results to return per page. It is useful for controlling the amount of data returned in a single request, especially when dealing with large datasets. See Pagination section for more details.

with_count (boolean) • Return the count of items in the response. Be careful with that, on a big catalog, it can decrease performance in a significant way. It is useful for understanding the size of the dataset being returned, especially when dealing with large collections. Use it judiciously to avoid performance issues.

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Return media files paginated. The response is paginated and includes links to navigate through the pages.

Body Format application/json

{

_links (object) : {
    self (object) : {
        href (string) • URI of the current page of resources
    }
    first (object) : {
        href (string) • URI of the first page of resources
    }
    previous (object) : {
        href (string) • URI of the previous page of resources
    }
    next (object) : {
        href (string) • URI of the next page of resources
    }
  }

current_page (integer) • Current page number

items_count (integer) • Total number of items (only if with_count parameter is set to true)

_embedded (object) : {
    items (array) : [
        {
          _links (object) : {
              self (object) : {
                  href (string) • URI of the media file
              }
          }
          _links (object) : {
              download (object) : {
                  href (string) • URI to download the binaries of the media file
              }
          }
          code (string) • Media file code
          original_filename (string) • Original filename of the media file
          mime_type (string) • Mime type of the media file
          size (integer) • Size of the media file
          extension (string) • Extension of the media file
        }
    ]
  }

}

Example

{
      "_links": {
        "self": {
          "href": "https://demo.akeneo.com/api/rest/v1/media-files?page=2&limit=4&with_count=true"
        },
        "first": {
          "href": "https://demo.akeneo.com/api/rest/v1/media-files?page=1&limit=4&with_count=true"
        },
        "previous": {
          "href": "https://demo.akeneo.com/api/rest/v1/media-files?page=1&limit=4&with_count=true"
        },
        "next": {
          "href": "https://demo.akeneo.com/api/rest/v1/media-files?page=2&limit=4&with_count=true"
        }
      },
      "current_page": 2,
      "items_count": 10,
      "_embedded": {
        "items": [
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/media-files/7/5/8/e/758e39d48ea7b42a55091434fd3d8b6cf3189b7f_10806799_1356.jpg/download"
              }
            },
            "code": "7/5/8/e/758e39d48ea7b42a55091434fd3d8b6cf3189b7f_10806799_1356.jpg",
            "original_filename": "10806799-1356.jpg",
            "mime_type": "image/jpeg",
            "size": 16070,
            "extension": "jpg"
          },
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/media-files/d/0/3/2/d032a92d994df3ef67ee6746b7b7a795c2964e7c_10734346_1480.jpg"
              },
              "download": {
                "href": "https://demo.akeneo.com/api/rest/v1/media-files/d/0/3/2/d032a92d994df3ef67ee6746b7b7a795c2964e7c_10734346_1480.jpg/download"
              }
            },
            "code": "d/0/3/2/d032a92d994df3ef67ee6746b7b7a795c2964e7c_10734346_1480.jpg",
            "original_filename": "10734346-1480.jpg",
            "mime_type": "image/jpeg",
            "size": 16454,
            "extension": "jpg"
          },
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/media-files/5/1/d/8/51d81dc778ba1501a8f998f3ab5797569f3b9e25_12431976_8797.jpg"
              },
              "download": {
                "href": "https://demo.akeneo.com/api/rest/v1/media-files/5/1/d/8/51d81dc778ba1501a8f998f3ab5797569f3b9e25_12431976_8797.jpg/download"
              }
            },
            "code": "5/1/d/8/51d81dc778ba1501a8f998f3ab5797569f3b9e25_12431976_8797.jpg",
            "original_filename": "12431976-8797.jpg",
            "mime_type": "image/jpeg",
            "size": 19725,
            "extension": "jpg"
          },
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/media-files/0/c/b/0/0cb0c0e115dedba676f8d1ad8343e6207ab54c7b_107406_9841.jpg"
              },
              "download": {
                "href": "https://demo.akeneo.com/api/rest/v1/media-files/0/c/b/0/0cb0c0e115dedba676f8d1ad8343e6207ab54c7b_107406_9841.jpg/download"
              }
            },
            "code": "0/c/b/0/0cb0c0e115dedba676f8d1ad8343e6207ab54c7b_107406_9841.jpg",
            "original_filename": "107406-9841.jpg",
            "mime_type": "image/jpeg",
            "size": 17639,
            "extension": "jpg"
          }
        ]
      }
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Create a new product media file

This endpoint allows you to create a new media file and associate it to an attribute value of a given product or product model


REQUEST

post /api/rest/v1/media-files

Path parameters

Ø

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/json', no other value allowed

Body

Given as form-data

product (string,null) • The product to which the media file will be associated. It is a JSON string that follows this format '{"identifier":"product_identifier", "attribute":"attribute_code", "scope":"channel_code","locale":"locale_code"}'. You have to either use this field or the product_model field, but not both at the same time.

file (string / binary) • The binaries of the file


RESPONSES

This response indicates that the entity was successfully created. The server has fulfilled the request and created a new resource. The response includes a Location header that contains the URI of the newly created resource.

Headers

Location • URI of the created resource

Body Format application/json

Ø

This response indicates that the server cannot process the request due to a client error, such as malformed request syntax, invalid request message framing, or deceptive request routing. It is typically used when the server cannot understand the request due to invalid JSON or other client-side issues.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 400,
      "message": "Invalid JSON message received"
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the server understands the request but cannot process it due to validation errors in the provided data.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

errors (array [object]) : [
        {
         property (string) • Name of the invalid property
         message (string) • Human-readable error message
         attribute (string,null) • Attribute code (if the error is on an attribute)
         locale (string,null) • Locale code involved in the error, if any
         scope (string,null) • Channel code involved in the error, if any
        }
    ]

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Validation failed.",
      "errors": [
        {
          "property": "family",
          "message": "The tshirts family does not exist in your PIM."
        },
        {
          "property": "categories",
          "message": "The \"tvs_projectors\" category does not exist."
        },
        {
          "property": "associations.SUBSTITUTION.groups",
          "message": "You should associate existing groups. The \"promotion\" group does not exist."
        },
        {
          "property": "values",
          "message": "The \"description\" attribute requires a channel.",
          "attribute": "description",
          "locale": "en_US",
          "scope": null
        },
        {
          "property": "values",
          "message": "The \"name\" attribute requires a locale.",
          "attribute": "name",
          "locale": null,
          "scope": null
        }
      ],
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

Get a product media file

This endpoint allows you to get the information about a given media file that is used as an attribute value of a product or a product model.


REQUEST

get /api/rest/v1/media-files/{code}

Path parameters

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Returns the content of the media file in JSON standard format

Body Format application/json

{

_links (object) : {
    download (object) : {
        href (string) • URI to download the binaries of the media file
    }
  }

code (string) • Media file code

original_filename (string) • Original filename of the media file

mime_type (string) • Mime type of the media file

size (integer) • Size of the media file

extension (string) • Extension of the media file

}

Example

{
      "_links": {
        "download": {
          "href": "https://demo.akeneo.com/api/rest/v1/media-files/7/5/8/e/758e39d48ea7b42a55091434fd3d8b6cf3189b7f_10806799_1356.jpg/download"
        }
      },
      "code": "7/5/8/e/758e39d48ea7b42a55091434fd3d8b6cf3189b7f_10806799_1356.jpg",
      "original_filename": "10806799-1356.jpg",
      "mime_type": "image/jpeg",
      "size": 16070,
      "extension": "jpg"
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 404,
      "message": "Resource `my_resource_code` does not exist."
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Download a product media file

This endpoint allows you to download a given media file that is used as an attribute value of a product or a product model


REQUEST

get /api/rest/v1/media-files/{code}/download

Path parameters

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Body

Ø


RESPONSES

Returns the binary of the media file

Body Format Mime-type of the media file
Media file binary

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format Mime-type of the media file
Media file binary

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format Mime-type of the media file
Media file binary

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format Mime-type of the media file
Media file binary

Jobs

Jobs

Launch export job by code

This endpoint allows you to launch an export job by code


REQUEST

post /api/rest/v1/jobs/export/{code}

Path parameters

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/json', no other value allowed

Body

Follow the standard format of the entity

{

is_dry_run (boolean) • Whether to run the export in dry-run mode

}

Example


RESPONSES

Returns the execution ID for the launched job

Body Format application/json

{

job_execution_id (integer) • The ID of the job execution that was launched

}

Example

{
      "job_execution_id": 12345
    }

This response indicates that the server cannot process the request due to a client error, such as malformed request syntax, invalid request message framing, or deceptive request routing. It is typically used when the server cannot understand the request due to invalid JSON or other client-side issues.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 400,
      "message": "Invalid JSON message received"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 404,
      "message": "Resource `my_resource_code` does not exist."
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the server understands the request but cannot process it due to validation errors in the provided data.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

errors (array [object]) : [
        {
         property (string) • Name of the invalid property
         message (string) • Human-readable error message
         attribute (string,null) • Attribute code (if the error is on an attribute)
         locale (string,null) • Locale code involved in the error, if any
         scope (string,null) • Channel code involved in the error, if any
        }
    ]

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Validation failed.",
      "errors": [
        {
          "property": "family",
          "message": "The tshirts family does not exist in your PIM."
        },
        {
          "property": "categories",
          "message": "The \"tvs_projectors\" category does not exist."
        },
        {
          "property": "associations.SUBSTITUTION.groups",
          "message": "You should associate existing groups. The \"promotion\" group does not exist."
        },
        {
          "property": "values",
          "message": "The \"description\" attribute requires a channel.",
          "attribute": "description",
          "locale": "en_US",
          "scope": null
        },
        {
          "property": "values",
          "message": "The \"name\" attribute requires a locale.",
          "attribute": "name",
          "locale": null,
          "scope": null
        }
      ],
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

Launch import job by code

This endpoint allows you to launch an import job by code


REQUEST

post /api/rest/v1/jobs/import/{code}

Path parameters

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/json', no other value allowed

Body

Follow the standard format of the entity

{

import_mode (string) • Change the import mode for this job by overriding the profile value. Available values are: create_only, update_only and create_or_update.

is_dry_run (boolean) • Whether to run the import in dry-run mode

}

Example


RESPONSES

Returns the execution ID for the launched job

Body Format application/json

{

job_execution_id (integer) • The ID of the job execution that was launched

}

Example

{
      "job_execution_id": 12345
    }

This response indicates that the server cannot process the request due to a client error, such as malformed request syntax, invalid request message framing, or deceptive request routing. It is typically used when the server cannot understand the request due to invalid JSON or other client-side issues.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 400,
      "message": "Invalid JSON message received"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 404,
      "message": "Resource `my_resource_code` does not exist."
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the server understands the request but cannot process it due to validation errors in the provided data.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

errors (array [object]) : [
        {
         property (string) • Name of the invalid property
         message (string) • Human-readable error message
         attribute (string,null) • Attribute code (if the error is on an attribute)
         locale (string,null) • Locale code involved in the error, if any
         scope (string,null) • Channel code involved in the error, if any
        }
    ]

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Validation failed.",
      "errors": [
        {
          "property": "family",
          "message": "The tshirts family does not exist in your PIM."
        },
        {
          "property": "categories",
          "message": "The \"tvs_projectors\" category does not exist."
        },
        {
          "property": "associations.SUBSTITUTION.groups",
          "message": "You should associate existing groups. The \"promotion\" group does not exist."
        },
        {
          "property": "values",
          "message": "The \"description\" attribute requires a channel.",
          "attribute": "description",
          "locale": "en_US",
          "scope": null
        },
        {
          "property": "values",
          "message": "The \"name\" attribute requires a locale.",
          "attribute": "name",
          "locale": null,
          "scope": null
        }
      ],
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

Catalog structure

Family

Get list of families

This endpoint allows you to get a list of families. Families are paginated and sorted by code.


REQUEST

get /api/rest/v1/families

Path parameters

Ø

Query parameters

search (string) • The search query parameter allows you to filter families based on specific criteria. For more details see the Filters section.

page (integer, 1 by default) • Specify which page of results to retrieve when using pagination. It is useful for navigating through large datasets by breaking them into smaller, manageable pages. See Pagination section for more details.

limit (integer, 10 by default) • Specify the maximum number of results to return per page. It is useful for controlling the amount of data returned in a single request, especially when dealing with large datasets. See Pagination section for more details.

with_count (boolean) • Return the count of items in the response. Be careful with that, on a big catalog, it can decrease performance in a significant way. It is useful for understanding the size of the dataset being returned, especially when dealing with large collections. Use it judiciously to avoid performance issues.

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Return family variants paginated. The response is paginated and includes links to navigate through the pages.

Body Format application/json

{

_links (object) : {
    self (object) : {
        href (string) • URI of the current page of resources
    }
    first (object) : {
        href (string) • URI of the first page of resources
    }
    previous (object) : {
        href (string) • URI of the previous page of resources
    }
    next (object) : {
        href (string) • URI of the next page of resources
    }
  }

current_page (integer) • Current page number

items_count (integer) • Total number of items (only if with_count parameter is set to true)

_embedded (object) : {
    items (array) : [
        {
          _links (object) : {
              self (object) : {
                  href (string) • URI of the resource
              }
          }
          code (string) • Family code
          attribute_as_label (string) • Attribute code used as label
          attribute_as_image (string,null) • Attribute code used as the main picture in the user interface
          attributes (array [string]) • Attribute codes that compose the family • Attribute codes that compose the family
          attribute_requirements (object) • Attribute codes of the family that are required for the completeness calculation for each channel
          labels (object) : {
              {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Family label for the specified locale
          }
          parent (string,null) • The parent family code. If the family has no parent, this field is null
        }
    ]
  }

}

Example

{
      "_links": {
        "self": {
          "href": "https://demo.akeneo.com/api/rest/v1/families?page=2&limit=2&with_count=true"
        },
        "first": {
          "href": "https://demo.akeneo.com/api/rest/v1/families?page=1&limit=2&with_count=true"
        },
        "previous": {
          "href": "https://demo.akeneo.com/api/rest/v1/families?page=1&limit=2&with_count=true"
        },
        "next": {
          "href": "https://demo.akeneo.com/api/rest/v1/families?page=3&limit=2&with_count=true"
        }
      },
      "current_page": 2,
      "items_count": 10,
      "_embedded": {
        "items": [
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/families/tshirt"
              }
            },
            "code": "tshirt",
            "attributes": [
              "sku",
              "name",
              "description",
              "price",
              "size",
              "color",
              "picture"
            ],
            "attribute_as_label": "name",
            "attribute_as_image": "picture",
            "attribute_requirements": {
              "ecommerce": [
                "sku",
                "name",
                "description",
                "price",
                "size",
                "color"
              ],
              "tablet": [
                "sku",
                "name",
                "description",
                "price"
              ]
            },
            "labels": {
              "en_US": "Tshirt",
              "fr_FR": "Tshirt"
            },
            "parent": null
          },
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/families/caps"
              }
            },
            "code": "caps",
            "attributes": [
              "sku",
              "name",
              "description",
              "price",
              "color",
              "picture"
            ],
            "attribute_as_label": "name",
            "attribute_as_image": "picture",
            "attribute_requirements": {
              "ecommerce": [
                "sku",
                "name",
                "description",
                "price",
                "color"
              ],
              "tablet": [
                "sku",
                "name",
                "description",
                "price"
              ]
            },
            "labels": {
              "en_US": "Caps",
              "fr_FR": "Casquettes"
            },
            "parent": "accessories"
          }
        ]
      }
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Create a new family

This endpoint allows you to create a new family


REQUEST

post /api/rest/v1/families

Path parameters

Ø

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-Type • This header indicates the media type of the resource being sent to the server. It is used to specify the format of the request body, allowing the server to correctly interpret the data being sent. Equal to 'application/json' or 'application/x-www-form-urlencoded', no other value allowed.

Body

Follow the standard format of the entity

{

code (string) • Family code

attribute_as_label (string) • Attribute code used as label

attribute_as_image (string,null) • Attribute code used as the main picture in the user interface

attributes (array[string]) • Attribute codes that compose the family. Each string in the array must be an existing attribute code

attribute_requirements (object) • Attribute codes of the family that are required for the completeness calculation for each channel

labels (object, [] by default) : {
        {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Family label for the specified locale.
    }

parent (string,null) • The code of the parent family. If not provided, the family is a root family

}

Example

{
      "code": "caps",
      "attributes": [
        "sku",
        "name",
        "description",
        "price",
        "color",
        "picture",
        "material"
      ],
      "attribute_as_label": "name",
      "attribute_as_image": "picture,",
      "attribute_requirements": {
        "ecommerce": [
          "sku",
          "name",
          "description",
          "price",
          "color"
        ],
        "tablet": [
          "sku",
          "name",
          "description",
          "price"
        ]
      },
      "labels": {
        "en_US": "Caps",
        "fr_FR": "Casquettes"
      },
      "parent": null
    }

RESPONSES

This response indicates that the entity was successfully created. The server has fulfilled the request and created a new resource. The response includes a Location header that contains the URI of the newly created resource.

Headers

Location • URI of the created resource

Body Format application/json

Ø

This response indicates that the server cannot process the request due to a client error, such as malformed request syntax, invalid request message framing, or deceptive request routing. It is typically used when the server cannot understand the request due to invalid JSON or other client-side issues.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 400,
      "message": "Invalid JSON message received"
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the data provided does not meet the required format or constraints defined by the API, and includes a link to the documentation for reference.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Property \\\"labels\\\" expects an array as data, \\\"NULL\\\" given. Check the API reference documentation.",
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

Update/create several families

This endpoint allows you to update and/or create several families at once


REQUEST

patch /api/rest/v1/families

Path parameters

Ø

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/vnd.akeneo.collection+json', no other value allowed

Body

Contains several lines, each line is a family in JSON standard format

{

code (string) • Family code

attribute_as_label (string) • Attribute code used as label

attribute_as_image (string,null) • Attribute code used as the main picture in the user interface

attributes (array[string]) • Attribute codes that compose the family. Each string in the array must be an existing attribute code

attribute_requirements (object) • Attribute codes of the family that are required for the completeness calculation for each channel

labels (object, [] by default) : {
        {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Family label for the specified locale.
    }

parent (string,null) • The code of the parent family. If not provided, the family is a root family

}

Example

{ "code": "tshirt","attribute_as_label": "description","attributes": [ "description","size" ] }
    { "code": "cap","attribute_as_label": "descripion" }
    { "code": "mug","attributes": [ "description","short_description" ] }
    

RESPONSES

Returns a plain text response whose lines are JSON containing the status of each update or creation

Body Format application/json

{

line (integer) • Line number

code (string) • Resource code

status_code (integer) • HTTP status code, see Client errors to understand the meaning of each code

message (string) • Message explaining the error

}

Example

{"line":1,"code":"camcorders","status_code":201}
    {"line":2,"code":"cap","status_code":422,"message":"Attribute \"descripion\" does not exist."}
    {"line":3,"code":"clothes","status_code":204}
    

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the request entity is larger than the server is willing or able to process. It can occur when the number of resources in a batch request exceeds the maximum allowed limit.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 413,
      "message": "Too many resources to process, 100 is the maximum allowed."
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

Get a family

This endpoint allows you to get the information about a given family


REQUEST

get /api/rest/v1/families/{code}

Path parameters

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Returns the content of the family in JSON standard format

Body Format application/json

{

code (string) • Family code

attribute_as_label (string) • Attribute code used as label

attribute_as_image (string,null) • Attribute code used as the main picture in the user interface

attributes (array [string]) • Attribute codes that compose the family

attribute_requirements (object) • Attribute codes of the family that are required for the completeness calculation for each channel

labels (object) : {
    {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Family label for the specified locale
  }

parent (string,null) • The parent family code. If the family has no parent, this field is null

}

Example

{
      "code": "caps",
      "attributes": [
        "sku",
        "name",
        "description",
        "price",
        "color",
        "picture",
        "material"
      ],
      "attribute_as_label": "name",
      "attribute_as_image": "picture,",
      "attribute_requirements": {
        "ecommerce": [
          "sku",
          "name",
          "description",
          "price",
          "color"
        ],
        "tablet": [
          "sku",
          "name",
          "description",
          "price"
        ]
      },
      "labels": {
        "en_US": "Caps",
        "fr_FR": "Casquettes"
      },
      "parent": null
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 404,
      "message": "Resource `my_resource_code` does not exist."
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Update/create a family

This endpoint allows you to update a given family. Know more about Update behavior. Note that if no family exists for the given code, it creates it.


REQUEST

patch /api/rest/v1/families/{code}

Path parameters

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-Type • This header indicates the media type of the resource being sent to the server. It is used to specify the format of the request body, allowing the server to correctly interpret the data being sent. Equal to 'application/json' or 'application/x-www-form-urlencoded', no other value allowed.

Body

Follow the standard format of the entity

{

code (string) • Family code

attribute_as_label (string) • Attribute code used as label

attribute_as_image (string,null) • Attribute code used as the main picture in the user interface

attributes (array[string]) • Attribute codes that compose the family. Each string in the array must be an existing attribute code

attribute_requirements (object) • Attribute codes of the family that are required for the completeness calculation for each channel

labels (object, [] by default) : {
        {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Family label for the specified locale.
    }

parent (string,null) • The code of the parent family. If not provided, the family is a root family

}

Example

{
      "code": "caps",
      "attributes": [
        "sku",
        "name",
        "description",
        "price",
        "color",
        "picture",
        "material"
      ],
      "attribute_as_label": "name",
      "attribute_as_image": "picture,",
      "attribute_requirements": {
        "ecommerce": [
          "sku",
          "name",
          "description",
          "price",
          "color"
        ],
        "tablet": [
          "sku",
          "name",
          "description",
          "price"
        ]
      },
      "labels": {
        "en_US": "Caps",
        "fr_FR": "Casquettes"
      },
      "parent": null
    }

RESPONSES

This response indicates that the entity was successfully created. The server has fulfilled the request and created a new resource. The response includes a Location header that contains the URI of the newly created resource.

Headers

Location • URI of the created resource

Body Format application/json

Ø

Successfully patched, response with empty body

Body Format application/json

Ø

This response indicates that the server cannot process the request due to a client error, such as malformed request syntax, invalid request message framing, or deceptive request routing. It is typically used when the server cannot understand the request due to invalid JSON or other client-side issues.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 400,
      "message": "Invalid JSON message received"
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the data provided does not meet the required format or constraints defined by the API, and includes a link to the documentation for reference.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Property \\\"labels\\\" expects an array as data, \\\"NULL\\\" given. Check the API reference documentation.",
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

Family variant

Get list of family variants

This endpoint allows you to get a list of family variants. Family variants are paginated and sorted by code.


REQUEST

get /api/rest/v1/families/{family_code}/variants

Path parameters

family_code (string) • This path parameter is used to specify the unique identifier of the family you want to retrieve or manipulate. It is essential for identifying the specific family in the API requests. Ensure that the family code is correctly formatted and corresponds to an existing family in the system.

Query parameters

page (integer, 1 by default) • Specify which page of results to retrieve when using pagination. It is useful for navigating through large datasets by breaking them into smaller, manageable pages. See Pagination section for more details.

limit (integer, 10 by default) • Specify the maximum number of results to return per page. It is useful for controlling the amount of data returned in a single request, especially when dealing with large datasets. See Pagination section for more details.

with_count (boolean) • Return the count of items in the response. Be careful with that, on a big catalog, it can decrease performance in a significant way. It is useful for understanding the size of the dataset being returned, especially when dealing with large collections. Use it judiciously to avoid performance issues.

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Return family variants paginated. The response is paginated and includes links to navigate through the pages.

Body Format application/json

{

_links (object) : {
    self (object) : {
        href (string) • URI of the current page of resources
    }
    first (object) : {
        href (string) • URI of the first page of resources
    }
    previous (object) : {
        href (string) • URI of the previous page of resources
    }
    next (object) : {
        href (string) • URI of the next page of resources
    }
  }

current_page (integer) • Current page number

items_count (integer) • Total number of items (only if with_count parameter is set to true)

_embedded (object) : {
    items (array) : [
        {
          _links (object) : {
              self (object) : {
                  href (string) • URI of the resource
              }
          }
          code (string) • Family variant code
          common_attributes (array [string]) • Codes of attributes that are common to all variants (not specific to any enrichment level) • Codes of attributes that are common to all variants (not specific to any enrichment level)
          variant_attribute_sets (array [object]) : [
              {
                  level (integer) • Enrichment level
                  axes (array [string]) • Codes of attributes used as variant axes
                  attributes (array [string]) • Codes of attributes bind to this enrichment level
              }
          ]
          labels (object) : {
              {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Family variant label for the specified locale
          }
        }
    ]
  }

}

Example

{
      "_links": {
        "self": {
          "href": "https://demo.akeneo.com/api/rest/v1/families/familyA/variants?page=2&limit=10&with_count=true"
        },
        "first": {
          "href": "https://demo.akeneo.com/api/rest/v1/families/familyA/variants?page=1&limit=10&with_count=true"
        },
        "previous": {
          "href": "https://demo.akeneo.com/api/rest/v1/families/familyA/variants?page=1&limit=10&with_count=true"
        },
        "next": {
          "href": "https://demo.akeneo.com/api/rest/v1/families/familyA/variants?page=3&limit=10&with_count=true"
        }
      },
      "current_page": 1,
      "items_count": 10,
      "_embedded": {
        "items": [
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/families/familyA/variants/shoesVariant"
              }
            },
            "code": "shoesVariant",
            "labels": {
              "en_US": "Shoes variant",
              "fr_FR": "Variante de chaussures"
            },
            "common_attributes": [
              "name",
              "description",
              "image"
            ],
            "variant_attribute_sets": [
              {
                "level": 1,
                "axes": [
                  "color"
                ],
                "attributes": [
                  "color",
                  "material"
                ]
              },
              {
                "level": 2,
                "axes": [
                  "size"
                ],
                "attributes": [
                  "sku",
                  "size"
                ]
              }
            ]
          }
        ]
      }
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Create a new family variant

This endpoint allows you to create a family variant


REQUEST

post /api/rest/v1/families/{family_code}/variants

Path parameters

family_code (string) • This path parameter is used to specify the unique identifier of the family you want to retrieve or manipulate. It is essential for identifying the specific family in the API requests. Ensure that the family code is correctly formatted and corresponds to an existing family in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/json', no other value allowed

Body

Follow the standard format of the entity

{

code (string) • Family variant code

variant_attribute_sets (array[object]) : [
        {
           level (integer) • Enrichment level
           axes (array[string]) • Codes of attributes used as variant axes
           attributes (array[string]) • Codes of attributes bind to this enrichment level
        }
    ]

labels (object, [] by default) : {
        {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Family variant label for the specified locale
    }

}

Example

{
      "code": "shoesVariant",
      "labels": {
        "en_US": "Shoes variant",
        "fr_FR": "Variante de chaussures"
      },
      "variant_attribute_sets": [
        {
          "level": 1,
          "attributes": [
            "color",
            "material"
          ],
          "axes": [
            "color"
          ]
        },
        {
          "level": 2,
          "attributes": [
            "sku",
            "size"
          ],
          "axes": [
            "size"
          ]
        }
      ]
    }

RESPONSES

This response indicates that the entity was successfully created. The server has fulfilled the request and created a new resource. The response includes a Location header that contains the URI of the newly created resource.

Headers

Location • URI of the created resource

Body Format application/json

Ø

This response indicates that the server cannot process the request due to a client error, such as malformed request syntax, invalid request message framing, or deceptive request routing. It is typically used when the server cannot understand the request due to invalid JSON or other client-side issues.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 400,
      "message": "Invalid JSON message received"
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the server understands the request but cannot process it due to validation errors in the provided data.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

errors (array [object]) : [
        {
         property (string) • Name of the invalid property
         message (string) • Human-readable error message
         attribute (string,null) • Attribute code (if the error is on an attribute)
         locale (string,null) • Locale code involved in the error, if any
         scope (string,null) • Channel code involved in the error, if any
        }
    ]

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Validation failed.",
      "errors": [
        {
          "property": "family",
          "message": "The tshirts family does not exist in your PIM."
        },
        {
          "property": "categories",
          "message": "The \"tvs_projectors\" category does not exist."
        },
        {
          "property": "associations.SUBSTITUTION.groups",
          "message": "You should associate existing groups. The \"promotion\" group does not exist."
        },
        {
          "property": "values",
          "message": "The \"description\" attribute requires a channel.",
          "attribute": "description",
          "locale": "en_US",
          "scope": null
        },
        {
          "property": "values",
          "message": "The \"name\" attribute requires a locale.",
          "attribute": "name",
          "locale": null,
          "scope": null
        }
      ],
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

Update/create several family variants

This endpoint allows you to update and/or create several family variants at once


REQUEST

patch /api/rest/v1/families/{family_code}/variants

Path parameters

family_code (string) • This path parameter is used to specify the unique identifier of the family you want to retrieve or manipulate. It is essential for identifying the specific family in the API requests. Ensure that the family code is correctly formatted and corresponds to an existing family in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/vnd.akeneo.collection+json', no other value allowed

Body

Contains several lines, each line is a family in JSON standard format

{

code (string) • Family variant code

variant_attribute_sets (array[object]) : [
        {
           level (integer) • Enrichment level
           axes (array[string]) • Codes of attributes used as variant axes
           attributes (array[string]) • Codes of attributes bind to this enrichment level
        }
    ]

labels (object, [] by default) : {
        {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Family variant label for the specified locale
    }

}

Example

{"code": "shoes_by_size", "variant_attribute_sets": [{"level": 1, "axes": ["size"], "attributes": ["color"]}]}
    {"code": "shoes_by_color","labels": {"en_US": "Shoes by color"}}
    {"code": "shoes_without_axes", "variant_attribute_sets": [{"level": 1, "axes": [], "attributes": ["color"]}]}
    

RESPONSES

Returns a plain text response whose lines are JSON containing the status of each update or creation

Body Format application/json

{

line (integer) • Line number

code (string) • Resource code

status_code (integer) • HTTP status code, see Client errors to understand the meaning of each code

message (string) • Message explaining the error

}

Example

{"line":1,"code":"shoes_by_size","status_code":201}
    {"line":2,"code":"shoes_by_color","status_code":204}
    {"line":3,"code":"mug","status_code":422, "message":"There should be at least one attribute defined as axis for the attribute set for level \"1\""}
    

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the request entity is larger than the server is willing or able to process. It can occur when the number of resources in a batch request exceeds the maximum allowed limit.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 413,
      "message": "Too many resources to process, 100 is the maximum allowed."
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

Get a family variant

This endpoint allows you to get the information about a given family variant


REQUEST

get /api/rest/v1/families/{family_code}/variants/{code}

Path parameters

family_code (string) • This path parameter is used to specify the unique identifier of the family you want to retrieve or manipulate. It is essential for identifying the specific family in the API requests. Ensure that the family code is correctly formatted and corresponds to an existing family in the system.

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Returns the content of the family variant in JSON standard format

Body Format application/json

{

code (string) • Family variant code

common_attributes (array [string]) • Codes of attributes that are common to all variants (not specific to any enrichment level)

variant_attribute_sets (array [object]) : [
        {
         level (integer) • Enrichment level
         axes (array) • Codes of attributes used as variant axes
         attributes (array) • Codes of attributes bind to this enrichment level
        }
    ]

labels (object) : {
    {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Family variant label for the specified locale
  }

}

Example

{
      "code": "shoesVariant",
      "labels": {
        "en_US": "Shoes variant",
        "fr_FR": "Variante de chaussures"
      },
      "common_attributes": [
        "name",
        "description"
      ],
      "variant_attribute_sets": [
        {
          "level": 1,
          "attributes": [
            "color",
            "material"
          ],
          "axes": [
            "color"
          ]
        },
        {
          "level": 2,
          "attributes": [
            "sku",
            "size"
          ],
          "axes": [
            "size"
          ]
        }
      ]
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 404,
      "message": "Resource `my_resource_code` does not exist."
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Update/create a family variant

This endpoint allows you to update a given family variant. Know more about Update behavior. Note that if no family variant exists for the given code, it creates it.


REQUEST

patch /api/rest/v1/families/{family_code}/variants/{code}

Path parameters

family_code (string) • This path parameter is used to specify the unique identifier of the family you want to retrieve or manipulate. It is essential for identifying the specific family in the API requests. Ensure that the family code is correctly formatted and corresponds to an existing family in the system.

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/json', no other value allowed

Body

Follow the standard format of the entity

{

code (string) • Family variant code

variant_attribute_sets (array[object]) : [
        {
           level (integer) • Enrichment level
           axes (array[string]) • Codes of attributes used as variant axes
           attributes (array[string]) • Codes of attributes bind to this enrichment level
        }
    ]

labels (object, [] by default) : {
        {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Family variant label for the specified locale
    }

}

Example

{
      "code": "shoesVariant",
      "labels": {
        "en_US": "Shoes variant",
        "fr_FR": "Variante de chaussures"
      },
      "variant_attribute_sets": [
        {
          "level": 1,
          "attributes": [
            "color",
            "material"
          ],
          "axes": [
            "color"
          ]
        },
        {
          "level": 2,
          "attributes": [
            "sku",
            "size"
          ],
          "axes": [
            "size"
          ]
        }
      ]
    }

RESPONSES

This response indicates that the entity was successfully created. The server has fulfilled the request and created a new resource. The response includes a Location header that contains the URI of the newly created resource.

Headers

Location • URI of the created resource

Body Format application/json

Ø

Successfully patched, response with empty body

Body Format application/json

Ø

This response indicates that the server cannot process the request due to a client error, such as malformed request syntax, invalid request message framing, or deceptive request routing. It is typically used when the server cannot understand the request due to invalid JSON or other client-side issues.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 400,
      "message": "Invalid JSON message received"
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the server understands the request but cannot process it due to validation errors in the provided data.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

errors (array [object]) : [
        {
         property (string) • Name of the invalid property
         message (string) • Human-readable error message
         attribute (string,null) • Attribute code (if the error is on an attribute)
         locale (string,null) • Locale code involved in the error, if any
         scope (string,null) • Channel code involved in the error, if any
        }
    ]

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Validation failed.",
      "errors": [
        {
          "property": "family",
          "message": "The tshirts family does not exist in your PIM."
        },
        {
          "property": "categories",
          "message": "The \"tvs_projectors\" category does not exist."
        },
        {
          "property": "associations.SUBSTITUTION.groups",
          "message": "You should associate existing groups. The \"promotion\" group does not exist."
        },
        {
          "property": "values",
          "message": "The \"description\" attribute requires a channel.",
          "attribute": "description",
          "locale": "en_US",
          "scope": null
        },
        {
          "property": "values",
          "message": "The \"name\" attribute requires a locale.",
          "attribute": "name",
          "locale": null,
          "scope": null
        }
      ],
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

Attribute

Get list of attributes

This endpoint allows you to get a list of attributes. Attributes are paginated and sorted by code.


REQUEST

get /api/rest/v1/attributes

Path parameters

Ø

Query parameters

search (string) • Filter attributes, for more details see the Filters section.

page (integer, 1 by default) • Specify which page of results to retrieve when using pagination. It is useful for navigating through large datasets by breaking them into smaller, manageable pages. See Pagination section for more details.

limit (integer, 10 by default) • Specify the maximum number of results to return per page. It is useful for controlling the amount of data returned in a single request, especially when dealing with large datasets. See Pagination section for more details.

with_count (boolean) • Return the count of items in the response. Be careful with that, on a big catalog, it can decrease performance in a significant way. It is useful for understanding the size of the dataset being returned, especially when dealing with large collections. Use it judiciously to avoid performance issues.

with_table_select_options (boolean) • Return the options of 'select' column types (of a table attribute) in the response. When set to true, the response will include all available options for select-type columns in table attributes. This is useful for retrieving all available options for select-type columns in table attributes, which is essential for form rendering and data validation. If set to false, the response will not include select options, which can improve performance.

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Return attributes paginated. The response is paginated and includes links to navigate through the pages.

Body Format application/json

{

_links (object) : {
    self (object) : {
        href (string) • URI of the current page of resources
    }
    first (object) : {
        href (string) • URI of the first page of resources
    }
    previous (object) : {
        href (string) • URI of the previous page of resources
    }
    next (object) : {
        href (string) • URI of the next page of resources
    }
  }

current_page (integer) • Current page number

items_count (integer) • Total number of items (only if with_count parameter is set to true)

_embedded (object) : {
    items (array) : [
        {
          _links (object) : {
              self (object) : {
                  href (string) • URI of the resource
              }
          }
          code (string) • Attribute code
          type (string) • Attribute type. See type section for more details.
          labels (object) : {
              {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Attribute label for the specified locale
          }
          group (string) • Attribute group
          group_labels (object) : {
              {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Group label for the specified locale
          }
          sort_order (integer) • Order of the attribute in its group
          localizable (boolean) • Whether the attribute is localizable, i.e. can have one value by locale
          scopable (boolean) • Whether the attribute is scopable, i.e. can have one value by channel
          available_locales (array [string]) • To make the attribute locale specfic, specify here for which locales it is specific • To make the attribute locale specfic, specify here for which locales it is specific
          unique (boolean) • Whether two values for the attribute cannot be the same
          useable_as_grid_filter (boolean) • Whether the attribute can be used as a filter for the product grid in the PIM user interface
          max_characters (integer,null) • Number maximum of characters allowed for the value of the attribute when the attribute type is pim_catalog_text, pim_catalog_textarea or pim_catalog_identifier
          validation_rule (string,null) • Validation rule type used to validate any attribute value when the attribute type is pim_catalog_text or pim_catalog_identifier
          validation_regexp (string,null) • Regexp expression used to validate any attribute value when the attribute type is pim_catalog_text or pim_catalog_identifier
          wysiwyg_enabled (boolean,null) • Whether the WYSIWYG interface is shown when the attribute type is pim_catalog_textarea
          number_min (string,null) • Minimum integer value allowed when the attribute type is pim_catalog_metric, pim_catalog_price or pim_catalog_number
          number_max (string,null) • Maximum integer value allowed when the attribute type is pim_catalog_metric, pim_catalog_price or pim_catalog_number
          decimals_allowed (boolean,null) • Whether decimals are allowed when the attribute type is pim_catalog_metric, pim_catalog_price or pim_catalog_number
          negative_allowed (boolean,null) • Whether negative values are allowed when the attribute type is pim_catalog_metric or pim_catalog_number
          metric_family (string,null) • Metric family when the attribute type is pim_catalog_metric
          default_metric_unit (string,null) • Default metric unit when the attribute type is pim_catalog_metric
          date_min (string,null) • Minimum date allowed when the attribute type is pim_catalog_date
          date_max (string,null) • Maximum date allowed when the attribute type is pim_catalog_date
          allowed_extensions (array [string]) • Extensions allowed when the attribute type is pim_catalog_file or pim_catalog_image • Extensions allowed when the attribute type is pim_catalog_file or pim_catalog_image
          max_file_size (string,null) • Max file size in MB when the attribute type is pim_catalog_file or pim_catalog_image
          reference_data_name (string,null) • Reference entity code when the attribute type is akeneo_reference_entity or akeneo_reference_entity_collection OR Asset family code when the attribute type is pim_catalog_asset_collection
          default_value (boolean) • Default value for a Yes/No attribute, applied when creating a new product or product model
          table_configuration (array [object]) : [
              {
                  code (string) • Column code
                  data_type (string) • Column data type
                  validations (object) • User defined validation constraints on the cell content
                  labels (object) • Column labels for each locale
                  is_required_for_completeness (boolean) • Defines if the column should be entirely filled for the attribute to be considered complete
              }
          ]
          is_main_identifier (boolean) • Is this attribute main identifier when attribute type is pim_catalog_identifier
          is_mandatory (boolean) • This attribute must be enriched from the moment a product is created. It will be mandatory across all families.
          decimal_places_strategy (string,null) • Defines the decimal places strategy. Available options are round, forbid and trim.
          decimal_places (number,null) • Defines the number of decimal places when decimal places strategy is round or forbid
          enable_option_creation_during_import (boolean,null) • Whether new attribute options can be created automatically during product or product model import (CSV, XLSX), when the attribute type is pim_catalog_simpleselect or pim_catalog_multiselect
          max_items_count (number,null) • Maximum number of items allowed in an asset collection when the attribute type is pim_catalog_asset_collection
        }
    ]
  }

}

Example

{
      "_links": {
        "self": {
          "href": "https://demo.akeneo.com/api/rest/v1/attributes?page=3&limit=3&with_count=true"
        },
        "first": {
          "href": "https://demo.akeneo.com/api/rest/v1/attributes?page=1&limit=3&with_count=true"
        },
        "previous": {
          "href": "https://demo.akeneo.com/api/rest/v1/attributes?page=2&limit=3&with_count=true"
        },
        "next": {
          "href": "https://demo.akeneo.com/api/rest/v1/attributes?page=4&limit=3&with_count=true"
        }
      },
      "current_page": 3,
      "items_count": 10,
      "_embedded": {
        "items": [
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/attributes/sku"
              }
            },
            "code": "sku",
            "type": "pim_catalog_identifier",
            "group": "other",
            "unique": true,
            "useable_as_grid_filter": true,
            "allowed_extensions": [],
            "metric_family": null,
            "default_metric_unit": null,
            "reference_data_name": null,
            "available_locales": [],
            "max_characters": null,
            "validation_rule": null,
            "validation_regexp": null,
            "wysiwyg_enabled": false,
            "number_min": null,
            "number_max": null,
            "decimals_allowed": false,
            "negative_allowed": false,
            "date_min": null,
            "date_max": null,
            "max_file_size": null,
            "minimum_input_length": null,
            "sort_order": 1,
            "localizable": false,
            "scopable": false,
            "labels": {
              "en_US": "Identifier",
              "fr_FR": "Identifiant"
            },
            "guidelines": {},
            "auto_option_sorting": null,
            "default_value": null,
            "is_mandatory": false,
            "decimal_places": null,
            "decimal_places_strategy": null,
            "is_read_only": null,
            "enable_option_creation_during_import": false,
            "max_items_count": null,
            "group_labels": {
              "en_US": "Other",
              "fr_FR": "Autre"
            }
          },
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/attributes/release_date"
              }
            },
            "code": "release_date",
            "type": "pim_catalog_date",
            "group": "marketing",
            "unique": false,
            "useable_as_grid_filter": true,
            "allowed_extensions": [],
            "metric_family": null,
            "default_metric_unit": null,
            "reference_data_name": null,
            "available_locales": [],
            "max_characters": null,
            "validation_rule": null,
            "validation_regexp": null,
            "wysiwyg_enabled": false,
            "number_min": null,
            "number_max": null,
            "decimals_allowed": false,
            "negative_allowed": false,
            "date_min": "2017-06-28T08:00:00",
            "date_max": "2017-08-08T22:00:00",
            "max_file_size": null,
            "minimum_input_length": null,
            "sort_order": 1,
            "localizable": false,
            "scopable": false,
            "labels": {
              "en_US": "Sale date",
              "fr_FR": "Date des soldes"
            },
            "guidelines": {},
            "auto_option_sorting": null,
            "default_value": null,
            "is_mandatory": false,
            "decimal_places": null,
            "decimal_places_strategy": null,
            "is_read_only": null,
            "enable_option_creation_during_import": false,
            "max_items_count": null,
            "group_labels": {
              "en_US": "Marketing",
              "fr_FR": "Marketing"
            }
          },
          {
            "_links": {
              "self": {
                "href": "http://demo.akeneo.com/api/rest/v1/attributes/food_composition"
              }
            },
            "code": "food_composition",
            "type": "pim_catalog_table",
            "group": "product",
            "unique": false,
            "useable_as_grid_filter": false,
            "allowed_extensions": [],
            "metric_family": null,
            "default_metric_unit": null,
            "reference_data_name": null,
            "available_locales": [],
            "max_characters": null,
            "validation_rule": null,
            "validation_regexp": null,
            "wysiwyg_enabled": null,
            "number_min": null,
            "number_max": null,
            "decimals_allowed": null,
            "negative_allowed": null,
            "date_min": null,
            "date_max": null,
            "max_file_size": null,
            "minimum_input_length": null,
            "sort_order": 0,
            "localizable": false,
            "scopable": false,
            "labels": {
              "en_US": "Composition",
              "fr_FR": "Composition"
            },
            "guidelines": {},
            "auto_option_sorting": null,
            "default_value": null,
            "is_mandatory": false,
            "decimal_places": null,
            "decimal_places_strategy": null,
            "is_read_only": null,
            "enable_option_creation_during_import": false,
            "max_items_count": null,
            "table_configuration": [
              {
                "code": "ingredient",
                "data_type": "select",
                "labels": {
                  "en_US": "Ingredient",
                  "fr_FR": "Ingrédient"
                },
                "validations": {},
                "is_required_for_completeness": true
              },
              {
                "code": "percentage",
                "data_type": "number",
                "labels": {
                  "en_US": "%",
                  "fr_FR": "%"
                },
                "validations": {
                  "max": 100,
                  "min": 0,
                  "decimals_allowed": true
                },
                "is_required_for_completeness": true
              },
              {
                "code": "allergen",
                "data_type": "boolean",
                "labels": {
                  "en_US": "Allergen",
                  "fr_FR": "Allergène"
                },
                "validations": {},
                "is_required_for_completeness": false
              }
            ],
            "group_labels": {
              "en_US": "Product",
              "fr_FR": "Produit"
            }
          }
        ]
      }
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Create a new attribute

This endpoint allows you to create a new attribute.


REQUEST

post /api/rest/v1/attributes

Path parameters

Ø

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/json', no other value allowed

Body

Follow the standard format of the entity

{

code (string) • Attribute code

type (string) • Attribute type. See type section for more details.

labels (object, [] by default) : {
        {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Attribute label for the specified locale
    }

group (string) • Attribute group

group_labels (object, [] by default) : {
        {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Group label for the specified locale
    }

sort_order (integer, 0 by default) • Order of the attribute in its group

localizable (boolean, false by default) • Whether the attribute is localizable, i.e. can have one value by locale

scopable (boolean, false by default) • Whether the attribute is scopable, i.e. can have one value by channel

available_locales (array[string]) • To make the attribute locale specfic, specify here for which locales it is specific

unique (boolean) • Whether two values for the attribute cannot be the same

useable_as_grid_filter (boolean) • Whether the attribute can be used as a filter for the product grid in the PIM user interface

max_characters (integer,null) • Number maximum of characters allowed for the value of the attribute when the attribute type is pim_catalog_text, pim_catalog_textarea or pim_catalog_identifier

validation_rule (string,null) • Validation rule type used to validate any attribute value when the attribute type is pim_catalog_text or pim_catalog_identifier

validation_regexp (string,null) • Regexp expression used to validate any attribute value when the attribute type is pim_catalog_text or pim_catalog_identifier

wysiwyg_enabled (boolean,null) • Whether the WYSIWYG interface is shown when the attribute type is pim_catalog_textarea

number_min (string,null) • Minimum integer value allowed when the attribute type is pim_catalog_metric, pim_catalog_price or pim_catalog_number

number_max (string,null) • Maximum integer value allowed when the attribute type is pim_catalog_metric, pim_catalog_price or pim_catalog_number

decimals_allowed (boolean,null) • Whether decimals are allowed when the attribute type is pim_catalog_metric, pim_catalog_price or pim_catalog_number

negative_allowed (boolean,null) • Whether negative values are allowed when the attribute type is pim_catalog_metric or pim_catalog_number

metric_family (string,null) • Metric family when the attribute type is pim_catalog_metric

default_metric_unit (string,null) • Default metric unit when the attribute type is pim_catalog_metric

date_min (string,null) • Minimum date allowed when the attribute type is pim_catalog_date

date_max (string,null) • Maximum date allowed when the attribute type is pim_catalog_date

allowed_extensions (array[string]) • Extensions allowed when the attribute type is pim_catalog_file or pim_catalog_image

max_file_size (string,null) • Max file size in MB when the attribute type is pim_catalog_file or pim_catalog_image

reference_data_name (string,null) • Reference entity code when the attribute type is akeneo_reference_entity or akeneo_reference_entity_collection OR Asset family code when the attribute type is pim_catalog_asset_collection

default_value (boolean) • Default value for a Yes/No attribute, applied when creating a new product or product model

table_configuration (array[object]) : [
        {
           code (string) • Column code
           data_type (string) • Column data type
           validations (object) • User defined validation constraints on the cell content
           labels (object) • Column labels for each locale
           is_required_for_completeness (boolean) • Defines if the column should be entirely filled for the attribute to be considered complete
        }
    ]

is_main_identifier (boolean) • Is this attribute main identifier when attribute type is pim_catalog_identifier

is_mandatory (boolean) • This attribute must be enriched from the moment a product is created. It will be mandatory across all families.

decimal_places_strategy (string,null) • Defines the decimal places strategy. Available options are round, forbid and trim.

decimal_places (number,null) • Defines the number of decimal places when decimal places strategy is round or forbid

enable_option_creation_during_import (boolean,null) • Whether new attribute options can be created automatically during product or product model import (CSV, XLSX), when the attribute type is pim_catalog_simpleselect or pim_catalog_multiselect

max_items_count (number,null) • Maximum number of items allowed in an asset collection when the attribute type is pim_catalog_asset_collection

}

Example

{
      "code": "release_date",
      "type": "pim_catalog_date",
      "group": "marketing",
      "group_labels": {
        "en_US": "Marketing",
        "fr_FR": "Marketing"
      },
      "unique": false,
      "useable_as_grid_filter": true,
      "allowed_extensions": [],
      "metric_family": null,
      "default_metric_unit": null,
      "reference_data_name": null,
      "available_locales": [],
      "max_characters": null,
      "validation_rule": null,
      "validation_regexp": null,
      "wysiwyg_enabled": null,
      "number_min": null,
      "number_max": null,
      "decimals_allowed": null,
      "negative_allowed": null,
      "date_min": "2017-06-28T08:00:00",
      "date_max": "2017-08-08T22:00:00",
      "max_file_size": null,
      "minimum_input_length": null,
      "sort_order": 1,
      "localizable": false,
      "scopable": false,
      "default_value": null,
      "labels": {
        "en_US": "Sale date",
        "fr_FR": "Date des soldes"
      },
      "is_mandatory": false,
      "decimal_places_strategy": null,
      "decimal_places": null,
      "enable_option_creation_during_import": false,
      "max_items_count": null
    }

RESPONSES

Successfully created attribute, returns empty body

Body Format application/json

Ø

This response indicates that the server cannot process the request due to a client error, such as malformed request syntax, invalid request message framing, or deceptive request routing. It is typically used when the server cannot understand the request due to invalid JSON or other client-side issues.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 400,
      "message": "Invalid JSON message received"
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the server understands the request but cannot process it due to validation errors in the provided data.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

errors (array [object]) : [
        {
         property (string) • Name of the invalid property
         message (string) • Human-readable error message
         attribute (string,null) • Attribute code (if the error is on an attribute)
         locale (string,null) • Locale code involved in the error, if any
         scope (string,null) • Channel code involved in the error, if any
        }
    ]

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Validation failed.",
      "errors": [
        {
          "property": "family",
          "message": "The tshirts family does not exist in your PIM."
        },
        {
          "property": "categories",
          "message": "The \"tvs_projectors\" category does not exist."
        },
        {
          "property": "associations.SUBSTITUTION.groups",
          "message": "You should associate existing groups. The \"promotion\" group does not exist."
        },
        {
          "property": "values",
          "message": "The \"description\" attribute requires a channel.",
          "attribute": "description",
          "locale": "en_US",
          "scope": null
        },
        {
          "property": "values",
          "message": "The \"name\" attribute requires a locale.",
          "attribute": "name",
          "locale": null,
          "scope": null
        }
      ],
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

Update/create several attributes

This endpoint allows you to update and/or create several attributes at once


REQUEST

patch /api/rest/v1/attributes

Path parameters

Ø

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/vnd.akeneo.collection+json', no other value allowed

Body

Contains several lines, each line is an attribute in JSON standard format

{

code (string) • Attribute code

type (string) • Attribute type. See type section for more details.

labels (object, [] by default) : {
        {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Attribute label for the specified locale
    }

group (string) • Attribute group

group_labels (object, [] by default) : {
        {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Group label for the specified locale
    }

sort_order (integer, 0 by default) • Order of the attribute in its group

localizable (boolean, false by default) • Whether the attribute is localizable, i.e. can have one value by locale

scopable (boolean, false by default) • Whether the attribute is scopable, i.e. can have one value by channel

available_locales (array[string]) • To make the attribute locale specfic, specify here for which locales it is specific

unique (boolean) • Whether two values for the attribute cannot be the same

useable_as_grid_filter (boolean) • Whether the attribute can be used as a filter for the product grid in the PIM user interface

max_characters (integer,null) • Number maximum of characters allowed for the value of the attribute when the attribute type is pim_catalog_text, pim_catalog_textarea or pim_catalog_identifier

validation_rule (string,null) • Validation rule type used to validate any attribute value when the attribute type is pim_catalog_text or pim_catalog_identifier

validation_regexp (string,null) • Regexp expression used to validate any attribute value when the attribute type is pim_catalog_text or pim_catalog_identifier

wysiwyg_enabled (boolean,null) • Whether the WYSIWYG interface is shown when the attribute type is pim_catalog_textarea

number_min (string,null) • Minimum integer value allowed when the attribute type is pim_catalog_metric, pim_catalog_price or pim_catalog_number

number_max (string,null) • Maximum integer value allowed when the attribute type is pim_catalog_metric, pim_catalog_price or pim_catalog_number

decimals_allowed (boolean,null) • Whether decimals are allowed when the attribute type is pim_catalog_metric, pim_catalog_price or pim_catalog_number

negative_allowed (boolean,null) • Whether negative values are allowed when the attribute type is pim_catalog_metric or pim_catalog_number

metric_family (string,null) • Metric family when the attribute type is pim_catalog_metric

default_metric_unit (string,null) • Default metric unit when the attribute type is pim_catalog_metric

date_min (string,null) • Minimum date allowed when the attribute type is pim_catalog_date

date_max (string,null) • Maximum date allowed when the attribute type is pim_catalog_date

allowed_extensions (array[string]) • Extensions allowed when the attribute type is pim_catalog_file or pim_catalog_image

max_file_size (string,null) • Max file size in MB when the attribute type is pim_catalog_file or pim_catalog_image

reference_data_name (string,null) • Reference entity code when the attribute type is akeneo_reference_entity or akeneo_reference_entity_collection OR Asset family code when the attribute type is pim_catalog_asset_collection

default_value (boolean) • Default value for a Yes/No attribute, applied when creating a new product or product model

table_configuration (array[object]) : [
        {
           code (string) • Column code
           data_type (string) • Column data type
           validations (object) • User defined validation constraints on the cell content
           labels (object) • Column labels for each locale
           is_required_for_completeness (boolean) • Defines if the column should be entirely filled for the attribute to be considered complete
        }
    ]

is_main_identifier (boolean) • Is this attribute main identifier when attribute type is pim_catalog_identifier

is_mandatory (boolean) • This attribute must be enriched from the moment a product is created. It will be mandatory across all families.

decimal_places_strategy (string,null) • Defines the decimal places strategy. Available options are round, forbid and trim.

decimal_places (number,null) • Defines the number of decimal places when decimal places strategy is round or forbid

enable_option_creation_during_import (boolean,null) • Whether new attribute options can be created automatically during product or product model import (CSV, XLSX), when the attribute type is pim_catalog_simpleselect or pim_catalog_multiselect

max_items_count (number,null) • Maximum number of items allowed in an asset collection when the attribute type is pim_catalog_asset_collection

}

Example

{"code":"description","useable_as_grid_filter":true}
    {"code":"short_description","group":"marketig"}
    {"code":"release_date","date_min":"2017-06-28T08:00:00"}
    

RESPONSES

Returns a plain text response whose lines are JSON containing the status of each update or creation

Body Format application/json

{

line (integer) • Line number

code (string) • Resource code

status_code (integer) • HTTP status code, see Client errors to understand the meaning of each code

message (string) • Message explaining the error

}

Example

{"line":1,"code":"description","status_code":201}
    {"line":2,"code":"short_description","status_code":422,"message":"Group \"marketig\" does not exist."}
    {"line":3,"code":"release_date","status_code":204}
    

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the request entity is larger than the server is willing or able to process. It can occur when the number of resources in a batch request exceeds the maximum allowed limit.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 413,
      "message": "Too many resources to process, 100 is the maximum allowed."
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

Get an attribute

This endpoint allows you to get the information about a given attribute


REQUEST

get /api/rest/v1/attributes/{code}

Path parameters

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

with_table_select_options (boolean) • Return the options of 'select' column types (of a table attribute) in the response. When set to true, the response will include all available options for select-type columns in table attributes. This is useful for retrieving all available options for select-type columns in table attributes, which is essential for form rendering and data validation. If set to false, the response will not include select options, which can improve performance.

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Returns the content of the attribute in JSON standard format

Body Format application/json

{

code (string) • Attribute code

type (string) • Attribute type. See type section for more details.

labels (object) : {
    {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Attribute label for the specified locale
  }

group (string) • Attribute group

group_labels (object) : {
    {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Group label for the specified locale
  }

sort_order (integer) • Order of the attribute in its group

localizable (boolean) • Whether the attribute is localizable, i.e. can have one value by locale

scopable (boolean) • Whether the attribute is scopable, i.e. can have one value by channel

available_locales (array [string]) • To make the attribute locale specfic, specify here for which locales it is specific

unique (boolean) • Whether two values for the attribute cannot be the same

useable_as_grid_filter (boolean) • Whether the attribute can be used as a filter for the product grid in the PIM user interface

max_characters (integer,null) • Number maximum of characters allowed for the value of the attribute when the attribute type is pim_catalog_text, pim_catalog_textarea or pim_catalog_identifier

validation_rule (string,null) • Validation rule type used to validate any attribute value when the attribute type is pim_catalog_text or pim_catalog_identifier

validation_regexp (string,null) • Regexp expression used to validate any attribute value when the attribute type is pim_catalog_text or pim_catalog_identifier

wysiwyg_enabled (boolean,null) • Whether the WYSIWYG interface is shown when the attribute type is pim_catalog_textarea

number_min (string,null) • Minimum integer value allowed when the attribute type is pim_catalog_metric, pim_catalog_price or pim_catalog_number

number_max (string,null) • Maximum integer value allowed when the attribute type is pim_catalog_metric, pim_catalog_price or pim_catalog_number

decimals_allowed (boolean,null) • Whether decimals are allowed when the attribute type is pim_catalog_metric, pim_catalog_price or pim_catalog_number

negative_allowed (boolean,null) • Whether negative values are allowed when the attribute type is pim_catalog_metric or pim_catalog_number

metric_family (string,null) • Metric family when the attribute type is pim_catalog_metric

default_metric_unit (string,null) • Default metric unit when the attribute type is pim_catalog_metric

date_min (string,null) • Minimum date allowed when the attribute type is pim_catalog_date

date_max (string,null) • Maximum date allowed when the attribute type is pim_catalog_date

allowed_extensions (array [string]) • Extensions allowed when the attribute type is pim_catalog_file or pim_catalog_image

max_file_size (string,null) • Max file size in MB when the attribute type is pim_catalog_file or pim_catalog_image

reference_data_name (string,null) • Reference entity code when the attribute type is akeneo_reference_entity or akeneo_reference_entity_collection OR Asset family code when the attribute type is pim_catalog_asset_collection

default_value (boolean) • Default value for a Yes/No attribute, applied when creating a new product or product model

table_configuration (array [object]) : [
        {
         code (string) • Column code
         data_type (string) • Column data type
         validations (object) • User defined validation constraints on the cell content
         labels (object) • Column labels for each locale
         is_required_for_completeness (boolean) • Defines if the column should be entirely filled for the attribute to be considered complete
        }
    ]

is_main_identifier (boolean) • Is this attribute main identifier when attribute type is pim_catalog_identifier

is_mandatory (boolean) • This attribute must be enriched from the moment a product is created. It will be mandatory across all families.

decimal_places_strategy (string,null) • Defines the decimal places strategy. Available options are round, forbid and trim.

decimal_places (number,null) • Defines the number of decimal places when decimal places strategy is round or forbid

enable_option_creation_during_import (boolean,null) • Whether new attribute options can be created automatically during product or product model import (CSV, XLSX), when the attribute type is pim_catalog_simpleselect or pim_catalog_multiselect

max_items_count (number,null) • Maximum number of items allowed in an asset collection when the attribute type is pim_catalog_asset_collection

}

Example

{
      "code": "release_date",
      "type": "pim_catalog_date",
      "group": "marketing",
      "group_labels": {
        "en_US": "Marketing",
        "fr_FR": "Marketing"
      },
      "unique": false,
      "useable_as_grid_filter": true,
      "allowed_extensions": [],
      "metric_family": null,
      "default_metric_unit": null,
      "reference_data_name": null,
      "available_locales": [],
      "max_characters": null,
      "validation_rule": null,
      "validation_regexp": null,
      "wysiwyg_enabled": null,
      "number_min": null,
      "number_max": null,
      "decimals_allowed": null,
      "negative_allowed": null,
      "date_min": "2017-06-28T08:00:00",
      "date_max": "2017-08-08T22:00:00",
      "max_file_size": null,
      "minimum_input_length": null,
      "sort_order": 1,
      "localizable": false,
      "scopable": false,
      "default_value": null,
      "labels": {
        "en_US": "Sale date",
        "fr_FR": "Date des soldes"
      },
      "is_mandatory": false,
      "decimal_places_strategy": null,
      "decimal_places": null,
      "enable_option_creation_during_import": false,
      "max_items_count": null
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 404,
      "message": "Resource `my_resource_code` does not exist."
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Update/create an attribute

This endpoint allows you to update a given attribute. Know more about Update behavior. Note that if no attribute exists for the given code, it creates it.


REQUEST

patch /api/rest/v1/attributes/{code}

Path parameters

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/json', no other value allowed

Body

Follow the standard format of the entity

{

code (string) • Attribute code

type (string) • Attribute type. See type section for more details.

labels (object, [] by default) : {
        {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Attribute label for the specified locale
    }

group (string) • Attribute group

group_labels (object, [] by default) : {
        {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Group label for the specified locale
    }

sort_order (integer, 0 by default) • Order of the attribute in its group

localizable (boolean, false by default) • Whether the attribute is localizable, i.e. can have one value by locale

scopable (boolean, false by default) • Whether the attribute is scopable, i.e. can have one value by channel

available_locales (array[string]) • To make the attribute locale specfic, specify here for which locales it is specific

unique (boolean) • Whether two values for the attribute cannot be the same

useable_as_grid_filter (boolean) • Whether the attribute can be used as a filter for the product grid in the PIM user interface

max_characters (integer,null) • Number maximum of characters allowed for the value of the attribute when the attribute type is pim_catalog_text, pim_catalog_textarea or pim_catalog_identifier

validation_rule (string,null) • Validation rule type used to validate any attribute value when the attribute type is pim_catalog_text or pim_catalog_identifier

validation_regexp (string,null) • Regexp expression used to validate any attribute value when the attribute type is pim_catalog_text or pim_catalog_identifier

wysiwyg_enabled (boolean,null) • Whether the WYSIWYG interface is shown when the attribute type is pim_catalog_textarea

number_min (string,null) • Minimum integer value allowed when the attribute type is pim_catalog_metric, pim_catalog_price or pim_catalog_number

number_max (string,null) • Maximum integer value allowed when the attribute type is pim_catalog_metric, pim_catalog_price or pim_catalog_number

decimals_allowed (boolean,null) • Whether decimals are allowed when the attribute type is pim_catalog_metric, pim_catalog_price or pim_catalog_number

negative_allowed (boolean,null) • Whether negative values are allowed when the attribute type is pim_catalog_metric or pim_catalog_number

metric_family (string,null) • Metric family when the attribute type is pim_catalog_metric

default_metric_unit (string,null) • Default metric unit when the attribute type is pim_catalog_metric

date_min (string,null) • Minimum date allowed when the attribute type is pim_catalog_date

date_max (string,null) • Maximum date allowed when the attribute type is pim_catalog_date

allowed_extensions (array[string]) • Extensions allowed when the attribute type is pim_catalog_file or pim_catalog_image

max_file_size (string,null) • Max file size in MB when the attribute type is pim_catalog_file or pim_catalog_image

reference_data_name (string,null) • Reference entity code when the attribute type is akeneo_reference_entity or akeneo_reference_entity_collection OR Asset family code when the attribute type is pim_catalog_asset_collection

default_value (boolean) • Default value for a Yes/No attribute, applied when creating a new product or product model

table_configuration (array[object]) : [
        {
           code (string) • Column code
           data_type (string) • Column data type
           validations (object) • User defined validation constraints on the cell content
           labels (object) • Column labels for each locale
           is_required_for_completeness (boolean) • Defines if the column should be entirely filled for the attribute to be considered complete
        }
    ]

is_main_identifier (boolean) • Is this attribute main identifier when attribute type is pim_catalog_identifier

is_mandatory (boolean) • This attribute must be enriched from the moment a product is created. It will be mandatory across all families.

decimal_places_strategy (string,null) • Defines the decimal places strategy. Available options are round, forbid and trim.

decimal_places (number,null) • Defines the number of decimal places when decimal places strategy is round or forbid

enable_option_creation_during_import (boolean,null) • Whether new attribute options can be created automatically during product or product model import (CSV, XLSX), when the attribute type is pim_catalog_simpleselect or pim_catalog_multiselect

max_items_count (number,null) • Maximum number of items allowed in an asset collection when the attribute type is pim_catalog_asset_collection

}

Example

{
      "code": "release_date",
      "type": "pim_catalog_date",
      "group": "marketing",
      "group_labels": {
        "en_US": "Marketing",
        "fr_FR": "Marketing"
      },
      "unique": false,
      "useable_as_grid_filter": true,
      "allowed_extensions": [],
      "metric_family": null,
      "default_metric_unit": null,
      "reference_data_name": null,
      "available_locales": [],
      "max_characters": null,
      "validation_rule": null,
      "validation_regexp": null,
      "wysiwyg_enabled": null,
      "number_min": null,
      "number_max": null,
      "decimals_allowed": null,
      "negative_allowed": null,
      "date_min": "2017-06-28T08:00:00",
      "date_max": "2017-08-08T22:00:00",
      "max_file_size": null,
      "minimum_input_length": null,
      "sort_order": 1,
      "localizable": false,
      "scopable": false,
      "default_value": null,
      "labels": {
        "en_US": "Sale date",
        "fr_FR": "Date des soldes"
      },
      "is_mandatory": false,
      "decimal_places_strategy": null,
      "decimal_places": null,
      "enable_option_creation_during_import": false,
      "max_items_count": null
    }

RESPONSES

Successfully created or updated, empty response body

Body Format application/json

Ø

Successfully patched, response with empty body

Body Format application/json

Ø

This response indicates that the server cannot process the request due to a client error, such as malformed request syntax, invalid request message framing, or deceptive request routing. It is typically used when the server cannot understand the request due to invalid JSON or other client-side issues.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 400,
      "message": "Invalid JSON message received"
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the server understands the request but cannot process it due to validation errors in the provided data.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

errors (array [object]) : [
        {
         property (string) • Name of the invalid property
         message (string) • Human-readable error message
         attribute (string,null) • Attribute code (if the error is on an attribute)
         locale (string,null) • Locale code involved in the error, if any
         scope (string,null) • Channel code involved in the error, if any
        }
    ]

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Validation failed.",
      "errors": [
        {
          "property": "family",
          "message": "The tshirts family does not exist in your PIM."
        },
        {
          "property": "categories",
          "message": "The \"tvs_projectors\" category does not exist."
        },
        {
          "property": "associations.SUBSTITUTION.groups",
          "message": "You should associate existing groups. The \"promotion\" group does not exist."
        },
        {
          "property": "values",
          "message": "The \"description\" attribute requires a channel.",
          "attribute": "description",
          "locale": "en_US",
          "scope": null
        },
        {
          "property": "values",
          "message": "The \"name\" attribute requires a locale.",
          "attribute": "name",
          "locale": null,
          "scope": null
        }
      ],
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

Attribute option

Get list of attribute options

This endpoint allows you to get a list of attribute options. Attribute options are paginated and sorted by code.


REQUEST

get /api/rest/v1/attributes/{attribute_code}/options

Path parameters

attribute_code (string) • This path parameter is used to specify the unique identifier of the attribute you want to retrieve or manipulate. It is essential for identifying the specific attribute in the API requests. Ensure that the attribute code is correctly formatted and corresponds to an existing attribute in the system.

Query parameters

page (integer, 1 by default) • Specify which page of results to retrieve when using pagination. It is useful for navigating through large datasets by breaking them into smaller, manageable pages. See Pagination section for more details.

limit (integer, 10 by default) • Specify the maximum number of results to return per page. It is useful for controlling the amount of data returned in a single request, especially when dealing with large datasets. See Pagination section for more details.

with_count (boolean) • Return the count of items in the response. Be careful with that, on a big catalog, it can decrease performance in a significant way. It is useful for understanding the size of the dataset being returned, especially when dealing with large collections. Use it judiciously to avoid performance issues.

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Return attribute options paginated. The response is paginated and includes links to navigate through the pages.

Body Format application/json

{

_links (object) : {
    self (object) : {
        href (string) • URI of the current page of resources
    }
    first (object) : {
        href (string) • URI of the first page of resources
    }
    previous (object) : {
        href (string) • URI of the previous page of resources
    }
    next (object) : {
        href (string) • URI of the next page of resources
    }
  }

current_page (integer) • Current page number

items_count (integer) • Total number of items (only if with_count parameter is set to true)

_embedded (object) : {
    items (array) : [
        {
          _links (object) : {
              self (object) : {
                  href (string) • URI of the resource
              }
          }
          code (string) • Code of option
          attribute (string) • Code of attribute related to the attribute option
          sort_order (integer) • Order of attribute option
          labels (object) : {
              {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Attribute option label for the specified locale
          }
        }
    ]
  }

}

Example

{
      "_links": {
        "self": {
          "href": "https://demo.akeneo.com/api/rest/v1/attributes/color/options?page=3&limit=3&with_count=true"
        },
        "first": {
          "href": "https://demo.akeneo.com/api/rest/v1/attributes/color/options?page=1&limit=3&with_count=true"
        },
        "previous": {
          "href": "https://demo.akeneo.com/api/rest/v1/attributes/color/options?page=2&limit=3&with_count=true"
        },
        "next": {
          "href": "https://demo.akeneo.com/api/rest/v1/attributes/color/options?page=4&limit=3&with_count=true"
        }
      },
      "current_page": 3,
      "items_count": 10,
      "_embedded": {
        "items": [
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/attributes/color/options/red"
              }
            },
            "code": "red",
            "attribute": "a_simple_select",
            "sort_order": 1,
            "labels": {
              "en_US": "Red",
              "fr_FR": "Rouge"
            }
          },
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/attributes/color/options/black"
              }
            },
            "code": "black",
            "attribute": "a_simple_select",
            "sort_order": 2,
            "labels": {
              "en_US": "Black",
              "fr_FR": "Noir"
            }
          },
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/attributes/color/options/purple"
              }
            },
            "code": "purple",
            "attribute": "a_simple_select",
            "sort_order": 3,
            "labels": {
              "en_US": "Purple",
              "fr_FR": "Violet"
            }
          }
        ]
      }
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Create a new attribute option

This endpoint allows you to create a new attribute option


REQUEST

post /api/rest/v1/attributes/{attribute_code}/options

Path parameters

attribute_code (string) • This path parameter is used to specify the unique identifier of the attribute you want to retrieve or manipulate. It is essential for identifying the specific attribute in the API requests. Ensure that the attribute code is correctly formatted and corresponds to an existing attribute in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/json', no other value allowed

Body

Follow the standard format of the entity

{

code (string) • Code of option

attribute (string) • Code of attribute related to the attribute option

sort_order (integer) • Order of attribute option

labels (object, [] by default) : {
        {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Attribute option label for the specified locale
    }

}

Example

{
      "code": "black",
      "attribute": "a_simple_select",
      "sort_order": 2,
      "labels": {
        "en_US": "Black",
        "fr_FR": "Noir"
      }
    }

RESPONSES

This response indicates that the entity was successfully created. The server has fulfilled the request and created a new resource. The response includes a Location header that contains the URI of the newly created resource.

Headers

Location • URI of the created resource

Body Format application/json

Ø

This response indicates that the server cannot process the request due to a client error, such as malformed request syntax, invalid request message framing, or deceptive request routing. It is typically used when the server cannot understand the request due to invalid JSON or other client-side issues.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 400,
      "message": "Invalid JSON message received"
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the server understands the request but cannot process it due to validation errors in the provided data.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

errors (array [object]) : [
        {
         property (string) • Name of the invalid property
         message (string) • Human-readable error message
         attribute (string,null) • Attribute code (if the error is on an attribute)
         locale (string,null) • Locale code involved in the error, if any
         scope (string,null) • Channel code involved in the error, if any
        }
    ]

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Validation failed.",
      "errors": [
        {
          "property": "family",
          "message": "The tshirts family does not exist in your PIM."
        },
        {
          "property": "categories",
          "message": "The \"tvs_projectors\" category does not exist."
        },
        {
          "property": "associations.SUBSTITUTION.groups",
          "message": "You should associate existing groups. The \"promotion\" group does not exist."
        },
        {
          "property": "values",
          "message": "The \"description\" attribute requires a channel.",
          "attribute": "description",
          "locale": "en_US",
          "scope": null
        },
        {
          "property": "values",
          "message": "The \"name\" attribute requires a locale.",
          "attribute": "name",
          "locale": null,
          "scope": null
        }
      ],
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

Update/create several attribute options

This endpoint allows you to update and/or create several attribute options at once


REQUEST

patch /api/rest/v1/attributes/{attribute_code}/options

Path parameters

attribute_code (string) • This path parameter is used to specify the unique identifier of the attribute you want to retrieve or manipulate. It is essential for identifying the specific attribute in the API requests. Ensure that the attribute code is correctly formatted and corresponds to an existing attribute in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/vnd.akeneo.collection+json', no other value allowed

Body

Contains several lines, each line is an attribute option in JSON standard format

{

code (string) • Code of option

attribute (string) • Code of attribute related to the attribute option

sort_order (integer) • Order of attribute option

labels (object, [] by default) : {
        {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Attribute option label for the specified locale
    }

}

Example

{"code":"black","attribute":"a_simple_select","labels":{"en_US":"Black","fr_FR":"Noir"}}
    {"code":"red","label":{"en_US": "Red","fr_FR": "Rouge"}}
    {"code":"yellow","labels":{"en_US": "Yellow","fr_FR": "Jaune"}}
    

RESPONSES

Returns a plain text response whose lines are JSON containing the status of each update or creation

Body Format application/json

{

line (integer) • Line number

code (string) • Resource code

status_code (integer) • HTTP status code, see Client errors to understand the meaning of each code

message (string) • Message explaining the error

}

Example

{"line":1,"code":"black","status_code":201}
    {"line":2,"code":"red","status_code":422,"message":"Property \"label\" does not exist. Check the API format documentation."}
    {"line":3,"code":"yellow","status_code":204}
    

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the request entity is larger than the server is willing or able to process. It can occur when the number of resources in a batch request exceeds the maximum allowed limit.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 413,
      "message": "Too many resources to process, 100 is the maximum allowed."
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

This response indicates that the user has sent too many requests in a given amount of time. It occurs when the rate limit for API requests has been exceeded, and the client should wait before making additional requests.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 429,
      "message": "You have exceeded the limit of API requests per second."
    }

Get an attribute option

This endpoint allows you to get the information about a given attribute option


REQUEST

get /api/rest/v1/attributes/{attribute_code}/options/{code}

Path parameters

attribute_code (string) • This path parameter is used to specify the unique identifier of the attribute you want to retrieve or manipulate. It is essential for identifying the specific attribute in the API requests. Ensure that the attribute code is correctly formatted and corresponds to an existing attribute in the system.

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Returns the content of the attribute option in JSON standard format

Body Format application/json

{

code (string) • Code of option

attribute (string) • Code of attribute related to the attribute option

sort_order (integer) • Order of attribute option

labels (object) : {
    {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Attribute option label for the specified locale
  }

}

Example

{
      "code": "black",
      "attribute": "a_simple_select",
      "sort_order": 2,
      "labels": {
        "en_US": "Black",
        "fr_FR": "Noir"
      }
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 404,
      "message": "Resource `my_resource_code` does not exist."
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Update/create an attribute option

This endpoint allows you to update a given attribute option. Know more about Update behavior. Note that if no attribute option exists for the given code, it creates it. Please note that this endpoint applies a rate limit of 3 concurrent API requests per second.


REQUEST

patch /api/rest/v1/attributes/{attribute_code}/options/{code}

Path parameters

attribute_code (string) • This path parameter is used to specify the unique identifier of the attribute you want to retrieve or manipulate. It is essential for identifying the specific attribute in the API requests. Ensure that the attribute code is correctly formatted and corresponds to an existing attribute in the system.

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/json', no other value allowed

Body

Follow the standard format of the entity

{

code (string) • Code of option

attribute (string) • Code of attribute related to the attribute option

sort_order (integer) • Order of attribute option

labels (object, [] by default) : {
        {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Attribute option label for the specified locale
    }

}

Example

{
      "code": "black",
      "attribute": "a_simple_select",
      "sort_order": 2,
      "labels": {
        "en_US": "Black",
        "fr_FR": "Noir"
      }
    }

RESPONSES

This response indicates that the entity was successfully created. The server has fulfilled the request and created a new resource. The response includes a Location header that contains the URI of the newly created resource.

Headers

Location • URI of the created resource

Body Format application/json

Ø

This response indicates that the request was successful and that there is no content to return. It is typically used in response to a successful update operation where the server does not need to return any data to the client.

Headers

Location • URI of the updated resource

Body Format application/json

Ø

This response indicates that the server cannot process the request due to a client error, such as malformed request syntax, invalid request message framing, or deceptive request routing. It is typically used when the server cannot understand the request due to invalid JSON or other client-side issues.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 400,
      "message": "Invalid JSON message received"
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the server understands the request but cannot process it due to validation errors in the provided data.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

errors (array [object]) : [
        {
         property (string) • Name of the invalid property
         message (string) • Human-readable error message
         attribute (string,null) • Attribute code (if the error is on an attribute)
         locale (string,null) • Locale code involved in the error, if any
         scope (string,null) • Channel code involved in the error, if any
        }
    ]

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Validation failed.",
      "errors": [
        {
          "property": "family",
          "message": "The tshirts family does not exist in your PIM."
        },
        {
          "property": "categories",
          "message": "The \"tvs_projectors\" category does not exist."
        },
        {
          "property": "associations.SUBSTITUTION.groups",
          "message": "You should associate existing groups. The \"promotion\" group does not exist."
        },
        {
          "property": "values",
          "message": "The \"description\" attribute requires a channel.",
          "attribute": "description",
          "locale": "en_US",
          "scope": null
        },
        {
          "property": "values",
          "message": "The \"name\" attribute requires a locale.",
          "attribute": "name",
          "locale": null,
          "scope": null
        }
      ],
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

This response indicates that the user has sent too many requests in a given amount of time. It occurs when the rate limit for API requests has been exceeded, and the client should wait before making additional requests.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 429,
      "message": "You have exceeded the limit of API requests per second."
    }

Attribute group

Get list of attribute groups

This endpoint allows you to get a list of attribute groups. Attribute groups are paginated and sorted by code.


REQUEST

get /api/rest/v1/attribute-groups

Path parameters

Ø

Query parameters

search (string) • Filter attribute groups, for more details see the Filters section.

page (integer, 1 by default) • Specify which page of results to retrieve when using pagination. It is useful for navigating through large datasets by breaking them into smaller, manageable pages. See Pagination section for more details.

limit (integer, 10 by default) • Specify the maximum number of results to return per page. It is useful for controlling the amount of data returned in a single request, especially when dealing with large datasets. See Pagination section for more details.

with_count (boolean) • Return the count of items in the response. Be careful with that, on a big catalog, it can decrease performance in a significant way. It is useful for understanding the size of the dataset being returned, especially when dealing with large collections. Use it judiciously to avoid performance issues.

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Return attribute groups paginated. The response is paginated and includes links to navigate through the pages.

Body Format application/json

{

_links (object) : {
    self (object) : {
        href (string) • URI of the current page of resources
    }
    first (object) : {
        href (string) • URI of the first page of resources
    }
    previous (object) : {
        href (string) • URI of the previous page of resources
    }
    next (object) : {
        href (string) • URI of the next page of resources
    }
  }

current_page (integer) • Current page number

items_count (integer) • Total number of items (only if with_count parameter is set to true)

_embedded (object) : {
    items (array) : [
        {
          _links (object) : {
              self (object) : {
                  href (string) • URI of the resource
              }
          }
          code (string) • Attribute group code
          sort_order (integer) • Attribute group order among other attribute groups
          attributes (array [string]) • Attribute codes that compose the attribute group • Attribute codes that compose the attribute group
          labels (object) : {
              {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Attribute group label for the locale
          }
        }
    ]
  }

}

Example

{
      "_links": {
        "self": {
          "href": "https://demo.akeneo.com/api/rest/v1/attribute-groups?page=3&limit=2&with_count=true"
        },
        "first": {
          "href": "https://demo.akeneo.com/api/rest/v1/attribute-groups?page=1&limit=2&with_count=true"
        },
        "previous": {
          "href": "https://demo.akeneo.com/api/rest/v1/attribute-groups?page=2&limit=2&with_count=true"
        },
        "next": {
          "href": "https://demo.akeneo.com/api/rest/v1/attribute-groups?page=4&limit=2&with_count=true"
        }
      },
      "current_page": 3,
      "items_count": 10,
      "_embedded": {
        "items": [
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/attribute-groups/marketing"
              }
            },
            "code": "marketing",
            "sort_order": 4,
            "attributes": [
              "sku",
              "name",
              "description",
              "response_time",
              "release_date",
              "price"
            ],
            "labels": {
              "en_US": "Marketing",
              "fr_FR": "Marketing"
            }
          },
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/attribute-groups/technical"
              }
            },
            "code": "technical",
            "sort_order": 5,
            "attributes": [
              "weight",
              "maximum_scan_size",
              "color_scanning",
              "power_requirements",
              "maximum_print_size",
              "sensor_type",
              "total_megapixels",
              "optical_zoom",
              "camera_type"
            ],
            "labels": {
              "en_US": "Technical",
              "fr_FR": "Technique"
            }
          }
        ]
      }
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Create a new attribute group

This endpoint allows you to create a new attribute group.


REQUEST

post /api/rest/v1/attribute-groups

Path parameters

Ø

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/json', no other value allowed

Body

Follow the standard format of the entity

{

code (string) • Attribute group code

sort_order (integer, 0 by default) • Attribute group order among other attribute groups

attributes (array[string], [] by default) • Attribute codes that compose the attribute group

labels (object, [] by default) : {
        {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Attribute group label for the locale
    }

}

Example

{
      "code": "marketing",
      "sort_order": 4,
      "attributes": [
        "sku",
        "name",
        "description",
        "response_time",
        "release_date",
        "price"
      ],
      "labels": {
        "en_US": "Marketing",
        "fr_FR": "Marketing"
      }
    }

RESPONSES

successfully created, response with empty body

Body Format application/json

Ø

This response indicates that the server cannot process the request due to a client error, such as malformed request syntax, invalid request message framing, or deceptive request routing. It is typically used when the server cannot understand the request due to invalid JSON or other client-side issues.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 400,
      "message": "Invalid JSON message received"
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the server understands the request but cannot process it due to validation errors in the provided data.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

errors (array [object]) : [
        {
         property (string) • Name of the invalid property
         message (string) • Human-readable error message
         attribute (string,null) • Attribute code (if the error is on an attribute)
         locale (string,null) • Locale code involved in the error, if any
         scope (string,null) • Channel code involved in the error, if any
        }
    ]

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Validation failed.",
      "errors": [
        {
          "property": "family",
          "message": "The tshirts family does not exist in your PIM."
        },
        {
          "property": "categories",
          "message": "The \"tvs_projectors\" category does not exist."
        },
        {
          "property": "associations.SUBSTITUTION.groups",
          "message": "You should associate existing groups. The \"promotion\" group does not exist."
        },
        {
          "property": "values",
          "message": "The \"description\" attribute requires a channel.",
          "attribute": "description",
          "locale": "en_US",
          "scope": null
        },
        {
          "property": "values",
          "message": "The \"name\" attribute requires a locale.",
          "attribute": "name",
          "locale": null,
          "scope": null
        }
      ],
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

Update/create several attribute groups

This endpoint allows you to update and/or create several attribute groups at once


REQUEST

patch /api/rest/v1/attribute-groups

Path parameters

Ø

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/vnd.akeneo.collection+json', no other value allowed

Body

Contains several lines, each line is an attribute group in JSON standard format

{

code (string) • Attribute group code

sort_order (integer, 0 by default) • Attribute group order among other attribute groups

attributes (array[string], [] by default) • Attribute codes that compose the attribute group

labels (object, [] by default) : {
        {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Attribute group label for the locale
    }

}

Example

{"code":"technical","labels":{"en_US": "Technical", "fr_FR": "Technique"}}
    {"code":"marketing","type":"bar"}
    {"code":"design","sort_order":7}
    

RESPONSES

Returns a plain text response whose lines are JSON containing the status of each update or creation

Body Format application/json

{

line (integer) • Line number

code (string) • Resource code

status_code (integer) • HTTP status code, see Client errors to understand the meaning of each code

message (string) • Message explaining the error

}

Example

{"line":1,"code":"technical","status_code":201}
    {"line":2,"code":"marketing","status_code":422,"message":"Property \"type\" does not exist. Check the standard format documentation.","_links":{"documentation":{"href":"http:\/\/api.akeneo.com\/api-reference.html#patch_attribute_groups__code_"}}}
    {"line":3,"code":"design","status_code":204}
    

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the request entity is larger than the server is willing or able to process. It can occur when the number of resources in a batch request exceeds the maximum allowed limit.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 413,
      "message": "Too many resources to process, 100 is the maximum allowed."
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

Get an attribute group

This endpoint allows you to get the information about a given attribute group


REQUEST

get /api/rest/v1/attribute-groups/{code}

Path parameters

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Returns the content of the attribute group in JSON standard format

Body Format application/json

{

code (string) • Attribute group code

sort_order (integer) • Attribute group order among other attribute groups

attributes (array [string]) • Attribute codes that compose the attribute group

labels (object) : {
    {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Attribute group label for the locale
  }

}

Example

{
      "code": "marketing",
      "sort_order": 4,
      "attributes": [
        "sku",
        "name",
        "description",
        "response_time",
        "release_date",
        "price"
      ],
      "labels": {
        "en_US": "Marketing",
        "fr_FR": "Marketing"
      }
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 404,
      "message": "Resource `my_resource_code` does not exist."
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Update/create an attribute group

This endpoint allows you to update a given attribute group. Know more about Update behavior. Note that if no attribute group exists for the given code, it creates it.


REQUEST

patch /api/rest/v1/attribute-groups/{code}

Path parameters

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/json', no other value allowed

Body

Follow the standard format of the entity

{

code (string) • Attribute group code

sort_order (integer, 0 by default) • Attribute group order among other attribute groups

attributes (array[string], [] by default) • Attribute codes that compose the attribute group

labels (object, [] by default) : {
        {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Attribute group label for the locale
    }

}

Example

{
      "code": "marketing",
      "sort_order": 4,
      "attributes": [
        "sku",
        "name",
        "description",
        "response_time",
        "release_date",
        "price"
      ],
      "labels": {
        "en_US": "Marketing",
        "fr_FR": "Marketing"
      }
    }

RESPONSES

This response indicates that the entity was successfully created. The server has fulfilled the request and created a new resource. The response includes a Location header that contains the URI of the newly created resource.

Headers

Location • URI of the created resource

Body Format application/json

Ø

Successfully patched, response with empty body

Body Format application/json

Ø

This response indicates that the server cannot process the request due to a client error, such as malformed request syntax, invalid request message framing, or deceptive request routing. It is typically used when the server cannot understand the request due to invalid JSON or other client-side issues.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 400,
      "message": "Invalid JSON message received"
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the server understands the request but cannot process it due to validation errors in the provided data.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

errors (array [object]) : [
        {
         property (string) • Name of the invalid property
         message (string) • Human-readable error message
         attribute (string,null) • Attribute code (if the error is on an attribute)
         locale (string,null) • Locale code involved in the error, if any
         scope (string,null) • Channel code involved in the error, if any
        }
    ]

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Validation failed.",
      "errors": [
        {
          "property": "family",
          "message": "The tshirts family does not exist in your PIM."
        },
        {
          "property": "categories",
          "message": "The \"tvs_projectors\" category does not exist."
        },
        {
          "property": "associations.SUBSTITUTION.groups",
          "message": "You should associate existing groups. The \"promotion\" group does not exist."
        },
        {
          "property": "values",
          "message": "The \"description\" attribute requires a channel.",
          "attribute": "description",
          "locale": "en_US",
          "scope": null
        },
        {
          "property": "values",
          "message": "The \"name\" attribute requires a locale.",
          "attribute": "name",
          "locale": null,
          "scope": null
        }
      ],
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

Association type

Get a list of association types

This endpoint allows you to get a list of association types. Association types are paginated and sorted by code.


REQUEST

get /api/rest/v1/association-types

Path parameters

Ø

Query parameters

page (integer, 1 by default) • Specify which page of results to retrieve when using pagination. It is useful for navigating through large datasets by breaking them into smaller, manageable pages. See Pagination section for more details.

limit (integer, 10 by default) • Specify the maximum number of results to return per page. It is useful for controlling the amount of data returned in a single request, especially when dealing with large datasets. See Pagination section for more details.

with_count (boolean) • Return the count of items in the response. Be careful with that, on a big catalog, it can decrease performance in a significant way. It is useful for understanding the size of the dataset being returned, especially when dealing with large collections. Use it judiciously to avoid performance issues.

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Return association types paginated. The response is paginated and includes links to navigate through the pages.

Body Format application/json

{

_links (object) : {
    self (object) : {
        href (string) • URI of the current page of resources
    }
    first (object) : {
        href (string) • URI of the first page of resources
    }
    previous (object) : {
        href (string) • URI of the previous page of resources
    }
    next (object) : {
        href (string) • URI of the next page of resources
    }
  }

current_page (integer) • Current page number

items_count (integer) • Total number of items (only if with_count parameter is set to true)

_embedded (object) : {
    items (array) : [
        {
          _links (object) : {
              self (object) : {
                  href (string) • URI of the resource
              }
          }
          code (string) • Association type code
          labels (object) : {
              {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Association type label for the locale
          }
          is_quantified (boolean) • When true, the association is a quantified association
          is_two_way (boolean) • When true, the association is a bidirectional association
        }
    ]
  }

}

Example

{
      "_links": {
        "self": {
          "href": "https://demo.akeneo.com/api/rest/v1/association-types?page=2&limit=3&with_count=true"
        },
        "first": {
          "href": "https://demo.akeneo.com/api/rest/v1/association-types?page=1&limit=3&with_count=true"
        },
        "previous": {
          "href": "https://demo.akeneo.com/api/rest/v1/association-types?page=1&limit=3&with_count=true"
        },
        "next": {
          "href": "https://demo.akeneo.com/api/rest/v1/association-types?page=3&limit=3&with_count=true"
        }
      },
      "current_page": 2,
      "items_count": 10,
      "_embedded": {
        "items": [
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/association-types/X_SELL"
              }
            },
            "code": "X_SELL",
            "labels": {
              "en_US": "Cross sell",
              "fr_FR": "Vente croisée"
            },
            "is_quantified": false,
            "is_two_way": false
          },
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/association-types/UPSELL"
              }
            },
            "code": "UPSELL",
            "labels": {
              "en_US": "Upsell",
              "fr_FR": "Vente incitative"
            },
            "is_quantified": false,
            "is_two_way": false
          },
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/association-types/SUBSTITUTION"
              }
            },
            "code": "SUBSTITUTION",
            "labels": {
              "en_US": "Substitution",
              "fr_FR": "Remplacement"
            },
            "is_quantified": false,
            "is_two_way": false
          }
        ]
      }
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Create a new association type

This endpoint allows you to create a new association type


REQUEST

post /api/rest/v1/association-types

Path parameters

Ø

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/json', no other value allowed

Body

Follow the standard format of the entity

{

code (string) • Association type code

labels (object, [] by default) : {
        {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Association type label for the locale
    }

is_quantified (boolean, false by default) • When true, the association is a quantified association

is_two_way (boolean, false by default) • When true, the association is a bidirectional association

}

Example

{
      "code": "upsell",
      "labels": {
        "en_US": "Upsell",
        "fr_FR": "Vente incitative"
      },
      "is_quantified": false,
      "is_two_way": false
    }

RESPONSES

Successfully created association type, empty response body

Body Format application/json

Ø

This response indicates that the server cannot process the request due to a client error, such as malformed request syntax, invalid request message framing, or deceptive request routing. It is typically used when the server cannot understand the request due to invalid JSON or other client-side issues.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 400,
      "message": "Invalid JSON message received"
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the server understands the request but cannot process it due to validation errors in the provided data.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

errors (array [object]) : [
        {
         property (string) • Name of the invalid property
         message (string) • Human-readable error message
         attribute (string,null) • Attribute code (if the error is on an attribute)
         locale (string,null) • Locale code involved in the error, if any
         scope (string,null) • Channel code involved in the error, if any
        }
    ]

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Validation failed.",
      "errors": [
        {
          "property": "family",
          "message": "The tshirts family does not exist in your PIM."
        },
        {
          "property": "categories",
          "message": "The \"tvs_projectors\" category does not exist."
        },
        {
          "property": "associations.SUBSTITUTION.groups",
          "message": "You should associate existing groups. The \"promotion\" group does not exist."
        },
        {
          "property": "values",
          "message": "The \"description\" attribute requires a channel.",
          "attribute": "description",
          "locale": "en_US",
          "scope": null
        },
        {
          "property": "values",
          "message": "The \"name\" attribute requires a locale.",
          "attribute": "name",
          "locale": null,
          "scope": null
        }
      ],
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

Update/create several association types

This endpoint allows you to update and/or create several association types at once


REQUEST

patch /api/rest/v1/association-types

Path parameters

Ø

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/vnd.akeneo.collection+json', no other value allowed

Body

Contains several lines, each line is an association type in JSON standard format

{

code (string) • Association type code

labels (object, [] by default) : {
        {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Association type label for the locale
    }

is_quantified (boolean, false by default) • When true, the association is a quantified association

is_two_way (boolean, false by default) • When true, the association is a bidirectional association

}

Example

{"code":"new_sell"}
    {"code":"substitution", "type":"bar"}
    {"code":"x_cross_sell", "is_two_way": true, "is_quantified": false}
    

RESPONSES

Returns a plain text response whose lines are JSON containing the status of each update or creation

Body Format application/json

{

line (integer) • Line number

code (string) • Resource code

status_code (integer) • HTTP status code, see Client errors to understand the meaning of each code

message (string) • Message explaining the error

}

Example

{"line":1,"code":"new_sell","status_code":201}
    {"line":2,"code":"substitution","status_code":422,"message":"Property \"type\" does not exist. Check the standard format documentation.","_links":{"documentation":{"href":"https:\/\/api.akeneo.com\/api-reference.html#patch_association_types__code_"}}}
    {"line":3,"code":"x_cross_sell","status_code":204}
    

This response indicates that the server cannot process the request due to a client error, such as malformed request syntax, invalid request message framing, or deceptive request routing. It is typically used when the server cannot understand the request due to invalid JSON or other client-side issues.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 400,
      "message": "Invalid JSON message received"
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the request entity is larger than the server is willing or able to process. It can occur when the number of resources in a batch request exceeds the maximum allowed limit.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 413,
      "message": "Too many resources to process, 100 is the maximum allowed."
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

Get an association type

This endpoint allows you to get the information about a given association type


REQUEST

get /api/rest/v1/association-types/{code}

Path parameters

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Returns the content of the association type in JSON standard format

Body Format application/json

{

code (string) • Association type code

labels (object) : {
    {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Association type label for the locale
  }

is_quantified (boolean) • When true, the association is a quantified association

is_two_way (boolean) • When true, the association is a bidirectional association

}

Example

{
      "code": "upsell",
      "labels": {
        "en_US": "Upsell",
        "fr_FR": "Vente incitative"
      },
      "is_quantified": false,
      "is_two_way": false
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 404,
      "message": "Resource `my_resource_code` does not exist."
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Update/create an association type

This endpoint allows you to update a given association type. Know more about Update behavior. Note that if no association type exists for the given code, it creates it.


REQUEST

patch /api/rest/v1/association-types/{code}

Path parameters

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/json', no other value allowed

Body

Follow the standard format of the entity

{

code (string) • Association type code

labels (object, [] by default) : {
        {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Association type label for the locale
    }

is_quantified (boolean, false by default) • When true, the association is a quantified association

is_two_way (boolean, false by default) • When true, the association is a bidirectional association

}

Example

{
      "code": "upsell",
      "labels": {
        "en_US": "Upsell",
        "fr_FR": "Vente incitative"
      },
      "is_quantified": false,
      "is_two_way": false
    }

RESPONSES

Successfully created association type, empty response body

Body Format application/json

Ø

Successfully updated association type, empty response body

Body Format application/json

Ø

This response indicates that the server cannot process the request due to a client error, such as malformed request syntax, invalid request message framing, or deceptive request routing. It is typically used when the server cannot understand the request due to invalid JSON or other client-side issues.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 400,
      "message": "Invalid JSON message received"
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the server understands the request but cannot process it due to validation errors in the provided data.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

errors (array [object]) : [
        {
         property (string) • Name of the invalid property
         message (string) • Human-readable error message
         attribute (string,null) • Attribute code (if the error is on an attribute)
         locale (string,null) • Locale code involved in the error, if any
         scope (string,null) • Channel code involved in the error, if any
        }
    ]

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Validation failed.",
      "errors": [
        {
          "property": "family",
          "message": "The tshirts family does not exist in your PIM."
        },
        {
          "property": "categories",
          "message": "The \"tvs_projectors\" category does not exist."
        },
        {
          "property": "associations.SUBSTITUTION.groups",
          "message": "You should associate existing groups. The \"promotion\" group does not exist."
        },
        {
          "property": "values",
          "message": "The \"description\" attribute requires a channel.",
          "attribute": "description",
          "locale": "en_US",
          "scope": null
        },
        {
          "property": "values",
          "message": "The \"name\" attribute requires a locale.",
          "attribute": "name",
          "locale": null,
          "scope": null
        }
      ],
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

Category

Get the list of categories

This endpoint allows you to get a list of categories. Categories are paginated and sorted by root/left. You can filter the categories by using the search query parameter, which supports searching by category code or label. The response includes the category's code, parent code, labels, values, and channel requirements. You can also specify the with_position query parameter to include the position of the category in its level. The with_enriched_attributes query parameter allows you to include enriched attributes.


REQUEST

get /api/rest/v1/categories

Path parameters

Ø

Query parameters

search (string) • The search query parameter allows you to filter categories based on specific criteria. For more details see the Filters section.

page (integer, 1 by default) • Specify which page of results to retrieve when using pagination. It is useful for navigating through large datasets by breaking them into smaller, manageable pages. See Pagination section for more details.

limit (integer, 10 by default) • Specify the maximum number of results to return per page. It is useful for controlling the amount of data returned in a single request, especially when dealing with large datasets. See Pagination section for more details.

with_count (boolean) • Return the count of items in the response. Be careful with that, on a big catalog, it can decrease performance in a significant way. It is useful for understanding the size of the dataset being returned, especially when dealing with large collections. Use it judiciously to avoid performance issues.

with_position (boolean) • Return information about the category's position within its category tree. When set to true, the response will include the position of the category in its level, which can be useful for understanding the hierarchy and order of categories. If set to false, the response will not include this information, which can improve performance.

with_enriched_attributes (boolean) • Return the attribute values of the category. When set to true, the response will include the values of all attributes associated with the category. This is useful for retrieving detailed information about the category's attributes, such as their values and configurations. If set to false, the response will not include attribute values, which can improve performance

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Return categories paginated. The response is paginated and includes links to navigate through the pages.

Body Format application/json

{

_links (object) : {
    self (object) : {
        href (string) • URI of the current page of resources
    }
    first (object) : {
        href (string) • URI of the first page of resources
    }
    previous (object) : {
        href (string) • URI of the previous page of resources
    }
    next (object) : {
        href (string) • URI of the next page of resources
    }
  }

current_page (integer) • Current page number

items_count (integer) • Total number of items (only if with_count parameter is set to true)

_embedded (object) : {
    items (array) : [
        {
          _links (object) : {
              self (object) : {
                  href (string) • URI of the resource
              }
          }
          code (string) • Category code
          parent (string,null) • Category code of the parent's category
          updated (string) • Date of the last update
          position (integer) • Position of the category in its level, start from 1 (only available when query parameter with_position is set to true)
          labels (object) : {
              {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Category label for the specified locale
          }
          channel_requirements (array [string]) • List of Channel codes on which the category is required for products completeness. Only category trees can be required, not child categories. • List of Channel codes on which the category is required for products completeness. Only category trees can be required, not child categories.
          values (object) : {
              {attributeCode|attributeUuid|channel|locale} (object) : {
                  type (string) • The attribute type
                  locale (string,null)Locale code of the attribute value
                  channel (string,null)Channel code of the attribute value
                  attribute_code (string) • The attribute code with its uuid (attributeCode|attributeUuid)
                  data (string) • Attribute value
              }
          }
          validations (object) : {
              max_categories_per_product (integer) • Set maximum number of categories per product
              only_leaves (boolean) • Restrict categorization to the lowest level
              is_mandatory (boolean) • Set category as mandatory for every product
          }
        }
    ]
  }

}

Example

{
      "_links": {
        "self": {
          "href": "https://demo.akeneo.com/api/rest/v1/categories?page=2&limit=5&with_count=true"
        },
        "first": {
          "href": "https://demo.akeneo.com/api/rest/v1/categories?page=1&limit=5&with_count=true"
        },
        "previous": {
          "href": "https://demo.akeneo.com/api/rest/v1/categories?page=1&limit=5&with_count=true"
        },
        "next": {
          "href": "https://demo.akeneo.com/api/rest/v1/categories?page=3&limit=5&with_count=true"
        }
      },
      "current_page": 2,
      "items_count": 10,
      "_embedded": {
        "items": [
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/categories/winter_collection"
              }
            },
            "code": "winter_collection",
            "parent": null,
            "updated": "2021-05-21T11:32:00+02:00",
            "position": 1,
            "labels": {
              "en_US": "Winter collection",
              "fr_FR": "Collection hiver",
              "de_DE": "Winter-Kollektion"
            },
            "values": {
              "description|96b88bf4-c2b7-4b64-a1f9-5d4876c02c26|ecommerce|en_US": {
                "data": "<p>Winter collection description</p>\\n",
                "type": "textarea",
                "channel": "ecommerce",
                "locale": "en_US",
                "attribute_code": "description|96b88bf4-c2b7-4b64-a1f9-5d4876c02c26"
              },
              "image_1|871b8686-79b5-415c-9c6f-a38f8732dfb7|ecommerce|en_US": {
                "data": {
                  "size": 1401359,
                  "extension": "jpg",
                  "file_path": "2/d/c/7/2dc791671d726e7438219d5dc7fd51a53d6bf2bb_IMG_7860.jpg",
                  "mime_type": "image/jpeg",
                  "original_filename": "IMG_7860.jpg"
                },
                "type": "image",
                "channel": "ecommerce",
                "locale": "en_US",
                "attribute_code": "image_1|871b8686-79b5-415c-9c6f-a38f8732dfb7"
              }
            },
            "channel_requirements": [
              "ecommerce",
              "mobile"
            ]
          },
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/categories/woman"
              }
            },
            "code": "woman",
            "parent": "winter_collection",
            "updated": "2021-04-21T10:41:02+02:00",
            "position": 1,
            "labels": {
              "en_US": "Woman",
              "fr_FR": "Femme",
              "de_DE": "Damen"
            },
            "values": {},
            "channel_requirements": [
              "ecommerce",
              "mobile"
            ]
          },
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/categories/man"
              }
            },
            "code": "man",
            "parent": "winter_collection",
            "updated": "2021-03-02T12:59:59+02:00",
            "position": 2,
            "labels": {
              "en_US": "Man",
              "fr_FR": "Homme",
              "de_DE": "Herren"
            },
            "values": {},
            "channel_requirements": []
          },
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/categories/kids"
              }
            },
            "code": "kids",
            "parent": "winter_collection",
            "updated": "2021-01-03T12:40:00+02:00",
            "position": 3,
            "labels": {
              "en_US": "kids",
              "fr_FR": "Enfant",
              "de_DE": "Kinder"
            },
            "values": {},
            "channel_requirements": []
          },
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/categories/summer_collection"
              }
            },
            "code": "summer_collection",
            "parent": null,
            "updated": "2021-04-04T09:42:00+02:00",
            "position": 1,
            "labels": {
              "en_US": "Summer collection",
              "fr_FR": "Collection été",
              "de_DE": "Sommer-Kollektion"
            },
            "values": {},
            "channel_requirements": [
              "print"
            ]
          }
        ]
      }
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Create a new category

This endpoint allows you to create a new category. You can specify the category's code, parent category, labels, values, validations, and channel requirements. The request body should be in JSON format and include the necessary fields for the category.


REQUEST

post /api/rest/v1/categories

Path parameters

Ø

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/json', no other value allowed

Body

Follow the standard format of the entity

{

code (string) • Category code

parent (string,null) • Category code of the parent's category

updated (string) • Date of the last update

position (integer) • Position of the category in its level, start from 1 (only available when query parameter with_position is set to true)

labels (object, [] by default) : {
        {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Category label for the specified locale
    }

channel_requirements (array[string], [] by default) • List of Channel codes on which the category is required for products completeness. Only category trees can be required, not child categories.

values (array[object], [] by default) : [
        {
           locale (string,null)Locale code of the attribute value
           channel (string,null)Channel code of the attribute value
           attribute_code (string) • The attribute code with its uuid (attributeCode|attributeUuid)
           data (string) • Attribute value. It should be a string for Text and Text Area attributes, a boolean for Yes/No attribute and for Image attribute use the create category media file endpoint. It can also be null to remove the value.
        }
    ]

validations (object, [] by default) : {
        max_categories_per_product (integer) • Set maximum number of categories per product
        only_leaves (boolean) • Restrict categorization to the lowest level
        is_mandatory (boolean) • Set category as mandatory for every product
    }

}

Example

{
      "code": "winter_collection",
      "parent": null,
      "labels": {
        "en_US": "Winter collection",
        "fr_FR": "Collection hiver"
      },
      "values": [
        {
          "data": "<p>Winter collection description</p>",
          "channel": "ecommerce",
          "locale": "en_US",
          "attribute_code": "a_text_area_attribute"
        },
        {
          "data": true,
          "channel": "ecommerce",
          "locale": "en_US",
          "attribute_code": "a_boolean_attribute"
        }
      ],
      "validations": {
        "max_categories_per_product": 42,
        "only_leaves": false,
        "is_mandatory": true
      },
      "channel_requirements": [
        "ecommerce",
        "mobile"
      ]
    }

RESPONSES

This response indicates that the entity was successfully created. The server has fulfilled the request and created a new resource. The response includes a Location header that contains the URI of the newly created resource.

Headers

Location • URI of the created resource

Body Format application/json

Ø

This response indicates that the server cannot process the request due to a client error, such as malformed request syntax, invalid request message framing, or deceptive request routing. It is typically used when the server cannot understand the request due to invalid JSON or other client-side issues.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 400,
      "message": "Invalid JSON message received"
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the data provided does not meet the required format or constraints defined by the API, and includes a link to the documentation for reference.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Property \\\"labels\\\" expects an array as data, \\\"NULL\\\" given. Check the API reference documentation.",
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

Create or update several categories

This endpoint allows you to update and/or create several categories at once.


REQUEST

patch /api/rest/v1/categories

Path parameters

Ø

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/vnd.akeneo.collection+json', no other value allowed

Body

Contains several lines, each line is a category in JSON standard format

{

code (string) • Category code

parent (string,null) • Category code of the parent's category

updated (string) • Date of the last update

position (integer) • Position of the category in its level, start from 1 (only available when query parameter with_position is set to true)

labels (object, [] by default) : {
        {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Category label for the specified locale
    }

channel_requirements (array[string], [] by default) • List of Channel codes on which the category is required for products completeness. Only category trees can be required, not child categories.

values (array[object], [] by default) : [
        {
           locale (string,null)Locale code of the attribute value
           channel (string,null)Channel code of the attribute value
           attribute_code (string) • The attribute code with its uuid (attributeCode|attributeUuid)
           data (string) • Attribute value. It should be a string for Text and Text Area attributes, a boolean for Yes/No attribute and for Image attribute use the create category media file endpoint. It can also be null to remove the value.
        }
    ]

validations (object, [] by default) : {
        max_categories_per_product (integer) • Set maximum number of categories per product
        only_leaves (boolean) • Restrict categorization to the lowest level
        is_mandatory (boolean) • Set category as mandatory for every product
    }

}

Example

{"code":"spring_collection","parent":null}
    {"code":"woman","parent":"spring_collectionn"}
    {"code":"man","parent":"spring_collection"}
    

RESPONSES

Returns a plain text response whose lines are JSON containing the status of each update or creation

Body Format application/json

{

line (integer) • Line number

code (string) • Resource code

status_code (integer) • HTTP status code, see Client errors to understand the meaning of each code

message (string) • Message explaining the error

}

Example

{"line":1,"code":"spring_collection","status_code":201}
    {"line":2,"code":"woman","status_code":422,"message":"Category \"spring_collectionn\" does not exist."}
    {"line":3,"code":"man","status_code":204}
    

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the request entity is larger than the server is willing or able to process. It can occur when the number of resources in a batch request exceeds the maximum allowed limit.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 413,
      "message": "Too many resources to process, 100 is the maximum allowed."
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

Get a category

This endpoint allows you to retrieve a category by its code. The response includes the category's details such as its labels, values, and channel requirements. You can also specify the with_position query parameter to include the position of the category in its level. The with_enriched_attributes query parameter allows you to include enriched attributes.


REQUEST

get /api/rest/v1/categories/{code}

Path parameters

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

with_position (boolean) • Return information about the category's position within its category tree. When set to true, the response will include the position of the category in its level, which can be useful for understanding the hierarchy and order of categories. If set to false, the response will not include this information, which can improve performance.

with_enriched_attributes (boolean) • Return the attribute values of the category. When set to true, the response will include the values of all attributes associated with the category. This is useful for retrieving detailed information about the category's attributes, such as their values and configurations. If set to false, the response will not include attribute values, which can improve performance

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

This endpoint allows you to retrieve a category by its code. The response includes the category's details such as its labels, values, and channel requirements. You can also specify the with_position query parameter to include the position of the category in its level.

Body Format application/json

{

code (string) • Category code

parent (string,null) • Category code of the parent's category

updated (string) • Date of the last update

position (integer) • Position of the category in its level, start from 1 (only available when query parameter with_position is set to true)

labels (object) : {
    {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Category label for the specified locale
  }

channel_requirements (array [string]) • List of Channel codes on which the category is required for products completeness. Only category trees can be required, not child categories.

values (object) : {
    {attributeCode|attributeUuid|channel|locale} (object) : {
        type (string) • The attribute type
        locale (string,null)Locale code of the attribute value
        channel (string,null)Channel code of the attribute value
        attribute_code (string) • The attribute code with its uuid (attributeCode|attributeUuid)
        data (string) • Attribute value
    }
  }

validations (object) : {
    max_categories_per_product (integer) • Set maximum number of categories per product
    only_leaves (boolean) • Restrict categorization to the lowest level
    is_mandatory (boolean) • Set category as mandatory for every product
  }

}

Example

{
      "code": "winter_collection",
      "parent": null,
      "updated": "2021-05-22T12:48:00+02:00",
      "position": 1,
      "labels": {
        "en_US": "Winter collection",
        "fr_FR": "Collection hiver"
      },
      "values": {
        "description|96b88bf4-c2b7-4b64-a1f9-5d4876c02c26|ecommerce|en_US": {
          "data": "<p>Winter collection description</p>",
          "type": "textarea",
          "channel": "ecommerce",
          "locale": "en_US",
          "attribute_code": "description|96b88bf4-c2b7-4b64-a1f9-5d4876c02c26"
        },
        "image_1|871b8686-79b5-415c-9c6f-a38f8732dfb7|ecommerce|en_US": {
          "data": {
            "size": 1401359,
            "extension": "jpg",
            "file_path": "2/d/c/7/2dc791671d726e7438219d5dc7fd51a53d6bf2bb_IMG_7860.jpg",
            "mime_type": "image/jpeg",
            "original_filename": "IMG_7860.jpg"
          },
          "type": "image",
          "channel": "ecommerce",
          "locale": "en_US",
          "attribute_code": "image_1|871b8686-79b5-415c-9c6f-a38f8732dfb7"
        }
      },
      "channel_requirements": [
        "ecommerce",
        "mobile"
      ]
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 404,
      "message": "Resource `my_resource_code` does not exist."
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Create or update a category

This endpoint allows you to update a given category. Note that if no category exists for the given code, it creates it. You can specify the category's code, parent category, labels, values, validations, and channel requirements. The request body should be in JSON format and include the necessary fields for the category.


REQUEST

patch /api/rest/v1/categories/{code}

Path parameters

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/json', no other value allowed

Body

Follow the standard format of the entity

{

code (string) • Category code

parent (string,null) • Category code of the parent's category

updated (string) • Date of the last update

position (integer) • Position of the category in its level, start from 1 (only available when query parameter with_position is set to true)

labels (object, [] by default) : {
        {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Category label for the specified locale
    }

channel_requirements (array[string], [] by default) • List of Channel codes on which the category is required for products completeness. Only category trees can be required, not child categories.

values (array[object], [] by default) : [
        {
           locale (string,null)Locale code of the attribute value
           channel (string,null)Channel code of the attribute value
           attribute_code (string) • The attribute code with its uuid (attributeCode|attributeUuid)
           data (string) • Attribute value. It should be a string for Text and Text Area attributes, a boolean for Yes/No attribute and for Image attribute use the create category media file endpoint. It can also be null to remove the value.
        }
    ]

validations (object, [] by default) : {
        max_categories_per_product (integer) • Set maximum number of categories per product
        only_leaves (boolean) • Restrict categorization to the lowest level
        is_mandatory (boolean) • Set category as mandatory for every product
    }

}

Example

{
      "code": "winter_collection",
      "parent": null,
      "labels": {
        "en_US": "Winter collection",
        "fr_FR": "Collection hiver"
      },
      "values": [
        {
          "data": "<p>Winter collection description</p>",
          "channel": "ecommerce",
          "locale": "en_US",
          "attribute_code": "a_text_area_attribute"
        },
        {
          "data": true,
          "channel": "ecommerce",
          "locale": "en_US",
          "attribute_code": "a_boolean_attribute"
        }
      ],
      "validations": {
        "max_categories_per_product": 42,
        "only_leaves": false,
        "is_mandatory": true
      },
      "channel_requirements": [
        "ecommerce",
        "mobile"
      ]
    }

RESPONSES

This response indicates that the entity was successfully created. The server has fulfilled the request and created a new resource. The response includes a Location header that contains the URI of the newly created resource.

Headers

Location • URI of the created resource

Body Format application/json

Ø

This response indicates that the request was successful and that there is no content to return. It is typically used in response to a successful update operation where the server does not need to return any data to the client.

Headers

Location • URI of the updated resource

Body Format application/json

Ø

This response indicates that the server cannot process the request due to a client error, such as malformed request syntax, invalid request message framing, or deceptive request routing. It is typically used when the server cannot understand the request due to invalid JSON or other client-side issues.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 400,
      "message": "Invalid JSON message received"
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the data provided does not meet the required format or constraints defined by the API, and includes a link to the documentation for reference.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Property \\\"labels\\\" expects an array as data, \\\"NULL\\\" given. Check the API reference documentation.",
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

Create a category media file

This endpoint allows you to create a new media file and associate it to anattribute value of a given enriched category. It is used to upload media files that are linked to categories, such as images or documents. The request body should include the category information and the binary file data.


REQUEST

post /api/rest/v1/category-media-files

Path parameters

Ø

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/json', no other value allowed

Body

Given as form-data

category (string) • The category to which the media file will be associated. It is a JSON string that follows this format: '{"code":"category code", "attribute_code":"attribute code", "channel":"channel code or null", "locale":"locale code or null"}'.

file (string / binary) • The media file to be uploaded. It should be provided as a binary file. Ensure that the file format is supported by the system.


RESPONSES

This response indicates that the entity was successfully created. The server has fulfilled the request and created a new resource. The response includes a Location header that contains the URI of the newly created resource.

Headers

Location • URI of the created resource

Body Format application/json

Ø

This response indicates that the server cannot process the request due to a client error, such as malformed request syntax, invalid request message framing, or deceptive request routing. It is typically used when the server cannot understand the request due to invalid JSON or other client-side issues.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 400,
      "message": "Invalid JSON message received"
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the data provided does not meet the required format or constraints defined by the API, and includes a link to the documentation for reference.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Property \\\"labels\\\" expects an array as data, \\\"NULL\\\" given. Check the API reference documentation.",
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

Download a category media file

This endpoint allows you to download a given media file that is used as an attribute value of a enriched category. The media file is identified by its path, which is provided in the request.


REQUEST

get /api/rest/v1/category-media-files/{file_path}/download

Path parameters

file_path (string) • This path parameter is used to specify the unique identifier of the media file you want to download. It is essential for identifying the specific media file in the API requests. Ensure that the file path is correctly formatted and corresponds to an existing media file in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Body

Ø


RESPONSES

Returns the binary of the media file

Body Format Mime-type of the media file
Media file binary

Ø

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format Mime-type of the media file
Media file binary

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format Mime-type of the media file
Media file binary

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format Mime-type of the media file
Media file binary

Target market settings

Channel

Get a list of channels

This endpoint allows you to get a list of channels. Channels are paginated and sorted by code.


REQUEST

get /api/rest/v1/channels

Path parameters

Ø

Query parameters

page (integer, 1 by default) • Specify which page of results to retrieve when using pagination. It is useful for navigating through large datasets by breaking them into smaller, manageable pages. See Pagination section for more details.

limit (integer, 10 by default) • Specify the maximum number of results to return per page. It is useful for controlling the amount of data returned in a single request, especially when dealing with large datasets. See Pagination section for more details.

with_count (boolean) • Return the count of items in the response. Be careful with that, on a big catalog, it can decrease performance in a significant way. It is useful for understanding the size of the dataset being returned, especially when dealing with large collections. Use it judiciously to avoid performance issues.

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Return channels paginated. The response is paginated and includes links to navigate through the pages.

Body Format application/json

{

_links (object) : {
    self (object) : {
        href (string) • URI of the current page of resources
    }
    first (object) : {
        href (string) • URI of the first page of resources
    }
    previous (object) : {
        href (string) • URI of the previous page of resources
    }
    next (object) : {
        href (string) • URI of the next page of resources
    }
  }

current_page (integer) • Current page number

items_count (integer) • Total number of items (only if with_count parameter is set to true)

_embedded (object) : {
    items (array) : [
        {
          _links (object) : {
              self (object) : {
                  href (string) • URI of the resource
              }
          }
          code (string) • Channel code
          locales (array [string]) • Codes of activated locales for the channel • Codes of activated locales for the channel
          currencies (array [string]) • Codes of activated currencies for the channel • Codes of activated currencies for the channel
          category_tree (string) • Code of the category tree linked to the channel
          conversion_units (object) : {
              attributeCode (string) • Conversion unit code used to convert the values of the attribute attributeCode when exporting via the channel
          }
          labels (object) : {
              {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Channel label for the specified locale
          }
        }
    ]
  }

}

Example

{
      "_links": {
        "self": {
          "href": "https://demo.akeneo.com/api/rest/v1/channels?page=2&limit=3&with_count=true"
        },
        "first": {
          "href": "https://demo.akeneo.com/api/rest/v1/channels?page=1&limit=3&with_count=true"
        },
        "previous": {
          "href": "https://demo.akeneo.com/api/rest/v1/channels?page=1&limit=3&with_count=true"
        },
        "next": {
          "href": "https://demo.akeneo.com/api/rest/v1/channels?page=3&limit=3&with_count=true"
        }
      },
      "current_page": 1,
      "items_count": 10,
      "_embedded": {
        "items": [
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/channels/ecommerce"
              }
            },
            "code": "ecommerce",
            "currencies": [
              "USD",
              "EUR"
            ],
            "locales": [
              "en_US",
              "fr_FR",
              "de_DE"
            ],
            "category_tree": "master",
            "conversion_units": {
              "a_metric": "KILOWATT",
              "a_metric_negative": "CELSIUS",
              "a_metric_to_not_convert": null
            },
            "labels": {
              "en_US": "Ecommerce",
              "fr_FR": "E-commerce",
              "de_DE": "E-commerce"
            }
          },
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/channels/mobile"
              }
            },
            "code": "mobile",
            "currencies": [
              "USD",
              "EUR"
            ],
            "locales": [
              "en_US",
              "fr_FR",
              "de_DE"
            ],
            "category_tree": "master",
            "conversion_units": {
              "a_metric": "KILOWATT",
              "a_metric_negative": "CELSIUS",
              "a_metric_to_not_convert": null
            },
            "labels": {
              "en_US": "Mobile",
              "fr_FR": "Mobile",
              "de_DE": "Mobile"
            }
          },
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/channels/print"
              }
            },
            "code": "print",
            "currencies": [
              "USD",
              "EUR"
            ],
            "locales": [
              "en_US",
              "fr_FR",
              "de_DE"
            ],
            "category_tree": "master",
            "conversion_units": {},
            "labels": {
              "en_US": "Print",
              "fr_FR": "Print",
              "de_DE": "Print"
            }
          }
        ]
      }
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Create a new channel

This endpoint allows you to create a new channel.


REQUEST

post /api/rest/v1/channels

Path parameters

Ø

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/json', no other value allowed

Body

Follow the standard format of the entity

{

code (string) • Channel code

locales (array[string]) • Codes of activated locales for the channel

currencies (array[string]) • Codes of activated currencies for the channel

category_tree (string) • Code of the category tree linked to the channel

conversion_units (object) : {
        attributeCode (string) • Conversion unit code used to convert the values of the attribute attributeCode when exporting via the channel
    }

labels (object, [] by default) : {
        {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Channel label for the specified locale
    }

}

Example

{
      "code": "ecommerce",
      "currencies": [
        "USD",
        "EUR"
      ],
      "locales": [
        "de_DE",
        "en_US",
        "fr_FR"
      ],
      "category_tree": "master",
      "conversion_units": {
        "weight": "KILOGRAM"
      },
      "labels": {
        "en_US": "Ecommerce",
        "de_DE": "Ecommerce",
        "fr_FR": "Ecommerce"
      }
    }

RESPONSES

This response indicates that the entity was successfully created. The server has fulfilled the request and created a new resource. The response includes a Location header that contains the URI of the newly created resource.

Headers

Location • URI of the created resource

Body Format application/json

Ø

This response indicates that the server cannot process the request due to a client error, such as malformed request syntax, invalid request message framing, or deceptive request routing. It is typically used when the server cannot understand the request due to invalid JSON or other client-side issues.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 400,
      "message": "Invalid JSON message received"
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the data provided does not meet the required format or constraints defined by the API, and includes a link to the documentation for reference.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Property \\\"labels\\\" expects an array as data, \\\"NULL\\\" given. Check the API reference documentation.",
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

Update/create several channels

This endpoint allows you to update and/or create several channels at once.


REQUEST

patch /api/rest/v1/channels

Path parameters

Ø

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/vnd.akeneo.collection+json', no other value allowed

Body

Contains several lines, each line is a channel in JSON standard format

{

code (string) • Channel code

locales (array[string]) • Codes of activated locales for the channel

currencies (array[string]) • Codes of activated currencies for the channel

category_tree (string) • Code of the category tree linked to the channel

conversion_units (object) : {
        attributeCode (string) • Conversion unit code used to convert the values of the attribute attributeCode when exporting via the channel
    }

labels (object, [] by default) : {
        {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Channel label for the specified locale
    }

}

Example

{"code":"ecommerce_fr", "category_tree": "master", "currencies":["EUR"], "locales": ["fr_FR"], "labels":{"fr_FR": "Ecommerce Fr"}}
    {"code":"ecommerce_ch", "type":"bar"}
    {"code":"tablet", "labels":{"en_US": "Tablet", "fr_FR": "Tablette"}}
    

RESPONSES

Returns a plain text response whose lines are JSON containing the status of each update or creation

Body Format application/json

{

line (integer) • Line number

code (string) • Resource code

status_code (integer) • HTTP status code, see Client errors to understand the meaning of each code

message (string) • Message explaining the error

}

Example

{"line":1,"code":"ecommerce_fr","status_code":201}
    {"line":2,"code":"ecommerce_ch","status_code":422,"message":"Property \"type\" does not exist. Check the standard format documentation.","_links":{"documentation":{"href":"https:\/\/api.akeneo.com\/api-reference.html#patch_channels__code_"}}}
    {"line":3,"code":"tablet","status_code":204}
    

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the request entity is larger than the server is willing or able to process. It can occur when the number of resources in a batch request exceeds the maximum allowed limit.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 413,
      "message": "Too many resources to process, 100 is the maximum allowed."
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

Get a channel

This endpoint allows you to get the information about a given channel


REQUEST

get /api/rest/v1/channels/{code}

Path parameters

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Returns the content of the channel in JSON standard format

Body Format application/json

{

code (string) • Channel code

locales (array [string]) • Codes of activated locales for the channel

currencies (array [string]) • Codes of activated currencies for the channel

category_tree (string) • Code of the category tree linked to the channel

conversion_units (object) : {
    attributeCode (string) • Conversion unit code used to convert the values of the attribute attributeCode when exporting via the channel
  }

labels (object) : {
    {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Channel label for the specified locale
  }

}

Example

{
      "code": "ecommerce",
      "currencies": [
        "USD",
        "EUR"
      ],
      "locales": [
        "de_DE",
        "en_US",
        "fr_FR"
      ],
      "category_tree": "master",
      "conversion_units": {
        "weight": "KILOGRAM"
      },
      "labels": {
        "en_US": "Ecommerce",
        "de_DE": "Ecommerce",
        "fr_FR": "Ecommerce"
      }
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 404,
      "message": "Resource `my_resource_code` does not exist."
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Update/create a channel

This endpoint allows you to update a given channel. Know more about Update behavior. Note that if no channel exists for the given code, it creates it.


REQUEST

patch /api/rest/v1/channels/{code}

Path parameters

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/json', no other value allowed

Body

Follow the standard format of the entity

{

code (string) • Channel code

locales (array[string]) • Codes of activated locales for the channel

currencies (array[string]) • Codes of activated currencies for the channel

category_tree (string) • Code of the category tree linked to the channel

conversion_units (object) : {
        attributeCode (string) • Conversion unit code used to convert the values of the attribute attributeCode when exporting via the channel
    }

labels (object, [] by default) : {
        {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Channel label for the specified locale
    }

}

Example

{
      "code": "ecommerce",
      "currencies": [
        "USD",
        "EUR"
      ],
      "locales": [
        "de_DE",
        "en_US",
        "fr_FR"
      ],
      "category_tree": "master",
      "conversion_units": {
        "weight": "KILOGRAM"
      },
      "labels": {
        "en_US": "Ecommerce",
        "de_DE": "Ecommerce",
        "fr_FR": "Ecommerce"
      }
    }

RESPONSES

This response indicates that the entity was successfully created. The server has fulfilled the request and created a new resource. The response includes a Location header that contains the URI of the newly created resource.

Headers

Location • URI of the created resource

Body Format application/json

Ø

This response indicates that the request was successful and that there is no content to return. It is typically used in response to a successful update operation where the server does not need to return any data to the client.

Headers

Location • URI of the updated resource

Body Format application/json

Ø

This response indicates that the server cannot process the request due to a client error, such as malformed request syntax, invalid request message framing, or deceptive request routing. It is typically used when the server cannot understand the request due to invalid JSON or other client-side issues.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 400,
      "message": "Invalid JSON message received"
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the server understands the request but cannot process it due to validation errors in the provided data.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

errors (array [object]) : [
        {
         property (string) • Name of the invalid property
         message (string) • Human-readable error message
         attribute (string,null) • Attribute code (if the error is on an attribute)
         locale (string,null) • Locale code involved in the error, if any
         scope (string,null) • Channel code involved in the error, if any
        }
    ]

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Validation failed.",
      "errors": [
        {
          "property": "family",
          "message": "The tshirts family does not exist in your PIM."
        },
        {
          "property": "categories",
          "message": "The \"tvs_projectors\" category does not exist."
        },
        {
          "property": "associations.SUBSTITUTION.groups",
          "message": "You should associate existing groups. The \"promotion\" group does not exist."
        },
        {
          "property": "values",
          "message": "The \"description\" attribute requires a channel.",
          "attribute": "description",
          "locale": "en_US",
          "scope": null
        },
        {
          "property": "values",
          "message": "The \"name\" attribute requires a locale.",
          "attribute": "name",
          "locale": null,
          "scope": null
        }
      ],
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

Locale

Get a list of locales

This endpoint allows you to retrieve a list of locales available in the system. Locales are paginated and can be filtered using the search query parameter. The response includes the locale code and whether it is enabled. You can also specify pagination parameters such as page, limit, and with_count.


REQUEST

get /api/rest/v1/locales

Path parameters

Ø

Query parameters

search (string) • The search query parameter allows you to filter locales based on specific criteria. For more details see the Filters section.

page (integer, 1 by default) • Specify which page of results to retrieve when using pagination. It is useful for navigating through large datasets by breaking them into smaller, manageable pages. See Pagination section for more details.

limit (integer, 10 by default) • Specify the maximum number of results to return per page. It is useful for controlling the amount of data returned in a single request, especially when dealing with large datasets. See Pagination section for more details.

with_count (boolean) • Return the count of items in the response. Be careful with that, on a big catalog, it can decrease performance in a significant way. It is useful for understanding the size of the dataset being returned, especially when dealing with large collections. Use it judiciously to avoid performance issues.

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Return locales paginated. The response is paginated and includes links to navigate through the pages.

Body Format application/json

{

_links (object) : {
    self (object) : {
        href (string) • URI of the current page of resources
    }
    first (object) : {
        href (string) • URI of the first page of resources
    }
    previous (object) : {
        href (string) • URI of the previous page of resources
    }
    next (object) : {
        href (string) • URI of the next page of resources
    }
  }

current_page (integer) • Current page number

items_count (integer) • Total number of items (only if with_count parameter is set to true)

_embedded (object) : {
    items (array) : [
        {
          _links (object) : {
              self (object) : {
                  href (string) • URI of the resource
              }
          }
          code (string) • Locale code
          enabled (boolean) • Whether the locale is enabled
        }
    ]
  }

}

Example

{
      "_links": {
        "self": {
          "href": "https://demo.akeneo.com/api/rest/v1/locales?page=2&limit=5&with_count=true"
        },
        "first": {
          "href": "https://demo.akeneo.com/api/rest/v1/locales?page=1&limit=5&with_count=true"
        },
        "previous": {
          "href": "https://demo.akeneo.com/api/rest/v1/locales?page=1&limit=5&with_count=true"
        },
        "next": {
          "href": "https://demo.akeneo.com/api/rest/v1/locales?page=3&limit=5&with_count=true"
        }
      },
      "current_page": 2,
      "items_count": 10,
      "_embedded": {
        "items": [
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/locales/en_US"
              }
            },
            "code": "en_US",
            "enabled": true
          },
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/locales/fr_FR"
              }
            },
            "code": "fr_FR",
            "enabled": true
          },
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/locales/de_DE"
              }
            },
            "code": "de_DE",
            "enabled": true
          },
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/locales/af_ZA"
              }
            },
            "code": "af_ZA",
            "enabled": false
          }
        ]
      }
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 404,
      "message": "Resource `my_resource_code` does not exist."
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Get a locale

This endpoint allows you to get the information about a given locale. You can retrieve details such as the locale code and whether it is enabled. The response will be in JSON format.


REQUEST

get /api/rest/v1/locales/{code}

Path parameters

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Get the details of a specific locale by its code. The response will include whether the locale is enabled or not. The response will be in JSON format

Body Format application/json

{

code (string) • Locale code

enabled (boolean) • Whether the locale is enabled

}

Example

{
      "code": "en_US",
      "enabled": true
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 404,
      "message": "Resource `my_resource_code` does not exist."
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Currency

Get a list of currencies

This endpoint allows you to retrieve a list of currencies available in the system. Currencies are paginated and can be filtered using the search query parameter. The response includes the currency code, whether it is enabled, and its label. You can also specify pagination parameters such as page, limit, and with_count.


REQUEST

get /api/rest/v1/currencies

Path parameters

Ø

Query parameters

search (string) • The search query parameter allows you to filter currencies based on specific criteria. For more details see the Filters section.

page (integer, 1 by default) • Specify which page of results to retrieve when using pagination. It is useful for navigating through large datasets by breaking them into smaller, manageable pages. See Pagination section for more details.

limit (integer, 10 by default) • Specify the maximum number of results to return per page. It is useful for controlling the amount of data returned in a single request, especially when dealing with large datasets. See Pagination section for more details.

with_count (boolean) • Return the count of items in the response. Be careful with that, on a big catalog, it can decrease performance in a significant way. It is useful for understanding the size of the dataset being returned, especially when dealing with large collections. Use it judiciously to avoid performance issues.

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Return currencies paginated. The response is paginated and includes links to navigate through the pages.

Body Format application/json

{

_links (object) : {
    self (object) : {
        href (string) • URI of the current page of resources
    }
    first (object) : {
        href (string) • URI of the first page of resources
    }
    previous (object) : {
        href (string) • URI of the previous page of resources
    }
    next (object) : {
        href (string) • URI of the next page of resources
    }
  }

current_page (integer) • Current page number

items_count (integer) • Total number of items (only if with_count parameter is set to true)

_embedded (object) : {
    items (array) : [
        {
          _links (object) : {
              self (object) : {
                  href (string) • URI of the resource
              }
          }
          code (string) • Currency code
          enabled (boolean) • Whether the currency is enabled
          label (string) • Currency label
        }
    ]
  }

}

Example

{
      "_links": {
        "self": {
          "href": "https://demo.akeneo.com/api/rest/v1/currencies?page=1&limit=3&with_count=true"
        },
        "first": {
          "href": "https://demo.akeneo.com/api/rest/v1/currencies?page=2&limit=3&with_count=true"
        },
        "previous": {
          "href": "https://demo.akeneo.com/api/rest/v1/currencies?page=1&limit=3&with_count=true"
        },
        "next": {
          "href": "https://demo.akeneo.com/api/rest/v1/currencies?page=3&limit=3&with_count=true"
        }
      },
      "current_page": 1,
      "items_count": 10,
      "_embedded": {
        "items": [
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/currencies/ADP"
              }
            },
            "code": "ADP",
            "enabled": true,
            "label": "ADP (Andorran Peseta)"
          },
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/currencies/AED"
              }
            },
            "code": "AED",
            "enabled": true,
            "label": "AED (United Arab Emirates Dirham)"
          },
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/currencies/AFA"
              }
            },
            "code": "AFA",
            "enabled": false,
            "label": "AFA (Afghan Afghani (1927–2002))"
          }
        ]
      }
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Get a currency

This endpoint allows you to get the information about a given currency. You can retrieve details such as the currency code, whether it is enabled, and its label. The response will be in JSON format.


REQUEST

get /api/rest/v1/currencies/{code}

Path parameters

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Returns the content of the currency in JSON standard format

Body Format application/json

{

code (string) • Currency code

enabled (boolean) • Whether the currency is enabled

label (string) • Currency label

}

Example

{
      "code": "EUR",
      "enabled": true,
      "label": "EUR (Euro)"
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 404,
      "message": "Resource `my_resource_code` does not exist."
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Measurement family

Get list of measurement families

This endpoint allows you to get a list of measurement families


REQUEST

get /api/rest/v1/measurement-families

Path parameters

Ø

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

A list of measurement families

Body Format application/json

[
    {

       code (string) • Measurement family code

       labels (object) : {
           {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Measurement family label for the specified locale
        }

       standard_unit_code (string) • Unit code used as the standard unit for this measurement family

       units (object) • Measurement units for this family with their conversion operations. More details here
    }
]

Example

[
      {
        "code": "AREA",
        "labels": {
          "en_US": "Area",
          "fr_FR": "Surface"
        },
        "standard_unit_code": "SQUARE_METER",
        "units": {
          "SQUARE_MILLIMETER": {
            "code": "SQUARE_MILLIMETER",
            "labels": {
              "en_US": "Square millimeter",
              "fr_FR": "Millimètre carré"
            },
            "convert_from_standard": [
              {
                "operator": "mul",
                "value": "0.000001"
              }
            ],
            "symbol": "mm²"
          },
          "SQUARE_CENTIMETER": {
            "code": "SQUARE_CENTIMETER",
            "labels": {
              "en_US": "Square centimeter",
              "fr_FR": "Centimètre carré"
            },
            "convert_from_standard": [
              {
                "operator": "mul",
                "value": "0.0001"
              }
            ],
            "symbol": "cm²"
          },
          "SQUARE_METER": {
            "code": "SQUARE_METER",
            "labels": {
              "en_US": "Square meter",
              "fr_FR": "Mètre carré"
            },
            "convert_from_standard": [
              {
                "operator": "mul",
                "value": "1"
              }
            ],
            "symbol": "m²"
          }
        }
      }
    ]

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Update/create several measurement families

This endpoint allows you to update and/or create several measurement families at once


REQUEST

patch /api/rest/v1/measurement-families

Path parameters

Ø

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/json', no other value allowed

Body

Follow the standard format of the entity

{

   [

       code (string) • Measurement family code

       labels (object{{^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} : string,null}, [] by default) • Measurement family labels for each locale

       standard_unit_code (string) • Unit code used as the standard unit for this measurement family

       units (object) • Measurement units for this family with their conversion operations. More details here

   ]

}

Example

[
      {
        "code": "AREA",
        "labels": {
          "en_US": "Area",
          "fr_FR": "Surface"
        },
        "standard_unit_code": "SQUARE_METER",
        "units": {
          "SQUARE_MILLIMETER": {
            "code": "SQUARE_MILLIMETER",
            "labels": {
              "en_US": "Square millimeter",
              "fr_FR": "Millimètre carré"
            },
            "convert_from_standard": [
              {
                "operator": "mul",
                "value": "0.000001"
              }
            ],
            "symbol": "mm²"
          },
          "SQUARE_CENTIMETER": {
            "code": "SQUARE_CENTIMETER",
            "labels": {
              "en_US": "Square centimeter",
              "fr_FR": "Centimètre carré"
            },
            "convert_from_standard": [
              {
                "operator": "mul",
                "value": "0.0001"
              }
            ],
            "symbol": "cm²"
          },
          "SQUARE_METER": {
            "code": "SQUARE_METER",
            "labels": {
              "en_US": "Square meter",
              "fr_FR": "Mètre carré"
            },
            "convert_from_standard": [
              {
                "operator": "mul",
                "value": "1"
              }
            ],
            "symbol": "m²"
          }
        }
      }
    ]

RESPONSES

OK. Returns a JSON array containing the status of each update or creation

Body Format application/json

[
    {

       code (string) • Resource code

       status_code (integer) • HTTP status code. See the documentation for client errors to understand the meaning of each code

       message (string) • Message explaining the error, if any

       errors (array [object]) : [
        {
         property (string)
         message (string)
        }
    ]
    }
]

Example

[
      {
        "code": "Angle",
        "status_code": 201
      },
      {
        "code": "Force",
        "status_code": 204
      },
      {
        "code": "Area",
        "status_code": 422,
        "message": "The measurement family has data that does not comply with the business rules.",
        "errors": [
          {
            "property": "standard_unit_code",
            "message": "The standard unit code of the \"Angle\" measurement family cannot be changed"
          }
        ]
      }
    ]

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the request entity is larger than the server is willing or able to process. It can occur when the number of resources in a batch request exceeds the maximum allowed limit.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 413,
      "message": "Too many resources to process, 100 is the maximum allowed."
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

Reference entities

Reference entity

Get list of reference entities

This endpoint allows you to get a list of reference entities. Reference entities are paginated.


REQUEST

get /api/rest/v1/reference-entities

Path parameters

Ø

Query parameters

search_after (string, cursor to the first page by default) • Cursor when using the search_after pagination method type. It is essential for navigating through pages in cursor-based pagination, providing more efficient pagination for large datasets. Should never be set manually, see Pagination section for more details.

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Return reference entities paginated. The response is paginated and includes links to navigate through the pages. Only search_after pagination is used.

Body Format application/json

{

_links (object) : {
    self (object) : {
        href (string) • URI of the current page of resources
    }
    first (object) : {
        href (string) • URI of the first page of resources
    }
    previous (object) : {
        href (string) • URI of the previous page of resources
    }
    next (object) : {
        href (string) • URI of the next page of resources
    }
  }

_embedded (object) : {
    items (array) : [
        {
          _links (object) : {
              self (object) : {
                  href (string) • URI of the resource
              }
              image_download (object) : {
                  href (string) • URI to download the binaries of the reference entity image file
              }
          }
          code (string) • Reference entity code
          labels (object) : {
              {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Reference entity label for the locale
          }
          image (string,null) • Code of the reference entity image
        }
    ]
  }

}

Example

{
      "_links": {
        "self": {
          "href": "https://demo.akeneo.com/api/rest/v1/reference-entities"
        },
        "first": {
          "href": "https://demo.akeneo.com/api/rest/v1/reference-entities"
        },
        "next": {
          "href": "https://demo.akeneo.com/api/rest/v1/reference-entities?search_after=colors"
        }
      },
      "_embedded": {
        "items": [
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/reference-entities/brands"
              },
              "image_download": {
                "href": "https://demo.akeneo.com/api/rest/v1/reference-entities-media-files/0/2/d/6/54d81dc888ba1501a8g765f3ab5797569f3bv756c_ref_img.png"
              }
            },
            "code": "brands",
            "labels": {
              "en_US": "Brands",
              "fr_FR": "Marques"
            },
            "image": "0/2/d/6/54d81dc888ba1501a8g765f3ab5797569f3bv756c_ref_img.png"
          },
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/reference-entities/designers"
              }
            },
            "code": "designers",
            "labels": {
              "en_US": "Designers",
              "fr_FR": "Designers"
            },
            "image": null
          },
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/reference-entities/colors"
              }
            },
            "code": "colors",
            "labels": {
              "en_US": "Colors",
              "fr_FR": "Couleurs"
            },
            "image": null
          }
        ]
      }
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Get a reference entity

This endpoint allows you to get the information about a given reference entity


REQUEST

get /api/rest/v1/reference-entities/{code}

Path parameters

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Returns the content of the reference entity in JSON format

Body Format application/json

{

_links (object) : {
    image_download (object) : {
        href (string) • URI to download the binaries of the reference entity image file
    }
  }

code (string) • Reference entity code

labels (object) : {
    {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Reference entity label for the locale
  }

image (string,null) • Code of the reference entity image

}

Example

{
      "_links": {
        "image_download": {
          "href": "https://demo.akeneo.com/api/rest/v1/reference-entities-media-files/0/2/d/6/54d81dc888ba1501a8g765f3ab5797569f3bv756c_ref_img.png"
        }
      },
      "code": "brands",
      "labels": {
        "en_US": "Brands",
        "fr_FR": "Marques"
      },
      "image": "0/2/d/6/54d81dc888ba1501a8g765f3ab5797569f3bv756c_ref_img.png"
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 404,
      "message": "Resource `my_resource_code` does not exist."
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Update/create a reference entity

This endpoint allows you to update a given reference entity. Note that if the reference entity does not already exist, it creates it.


REQUEST

patch /api/rest/v1/reference-entities/{code}

Path parameters

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/json', no other value allowed

Body

Follow the standard format of the entity

{

code (string) • Reference entity code

labels (object, [] by default) : {
        {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Reference entity label for the locale
    }

image (string,null, null by default) • Code of the reference entity image

}

Example

{
      "code": "brands",
      "labels": {
        "en_US": "Brands",
        "fr_FR": "Marques"
      },
      "image": "0/2/d/6/54d81dc888ba1501a8g765f3ab5797569f3bv756c_ref_img.png"
    }

RESPONSES

This response indicates that the entity was successfully created. The server has fulfilled the request and created a new resource. The response includes a Location header that contains the URI of the newly created resource.

Headers

Location • URI of the created resource

Body Format application/json

Ø

This response indicates that the request was successful and that there is no content to return. It is typically used in response to a successful update operation where the server does not need to return any data to the client.

Headers

Location • URI of the updated resource

Body Format application/json

Ø

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the server understands the request but cannot process it due to validation errors in the provided data.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Description of the validation error

}

Example

{
      "code": 422,
      "message": "The code of the reference entity provided in the URI must be the same as the one provided in the request body."
    }

Reference entity attribute

Get the list of attributes of a given reference entity

This endpoint allows you to get the list of attributes of a given reference entity


REQUEST

get /api/rest/v1/reference-entities/{reference_entity_code}/attributes

Path parameters

reference_entity_code (string) • This path parameter is used to specify the unique identifier of the reference entity you want to retrieve or manipulate. It is essential for identifying the specific reference entity in the API requests. Ensure that the reference entity code is correctly formatted and corresponds to an existing reference entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Return the attributes of the given reference entity

Body Format application/json

[
    {

       code (string) • Attribute code

       labels (object) : {
           {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Attribute label for the specified locale
        }

       type (string) • Attribute type. See type section for more details.

       value_per_locale (boolean) • Whether the attribute is localizable, i.e. can have one value by locale

       value_per_channel (boolean) • Whether the attribute is scopable, i.e. can have one value by channel

       is_required_for_completeness (boolean) • Whether the attribute should be part of the record's completeness calculation

       max_characters (integer,null) • Maximum number of characters allowed for the value of the attribute when the attribute type is text

       is_textarea (boolean) • Whether the UI should display a text area instead of a simple field when the attribute type is text

       is_rich_text_editor (boolean) • Whether the UI should display a rich text editor instead of a simple text area when the attribute type is text

       validation_rule (string,null) • Validation rule type used to validate the attribute value when the attribute type is text

       validation_regexp (string,null) • Regexp expression used to validate the attribute value when the attribute type is text

       allowed_extensions (array [string]) • Extensions allowed when the attribute type is image

       max_file_size (string,null) • Max file size in MB when the attribute type is image

       reference_entity_code (string,null) • Code of the linked reference entity when the attribute type is reference_entity_single_link or reference_entity_multiple_links

       asset_family_identifier (string,null) • Code of the linked asset family when the attribute type is asset_collection

       decimals_allowed (boolean) • Whether decimals are allowed when the attribute type is number

       min_value (string,null) • Minimum value allowed when the attribute type is number

       max_value (string,null) • Maximum value allowed when the attribute type is number
    }
]

Example

[
      {
        "code": "description",
        "labels": {
          "en_US": "Description",
          "fr_FR": "Description"
        },
        "type": "text",
        "value_per_locale": true,
        "value_per_channel": false,
        "is_required_for_completeness": true,
        "max_characters": null,
        "is_textarea": true,
        "is_rich_text_editor": true,
        "validation_rule": "none",
        "validation_regexp": null
      },
      {
        "code": "country",
        "labels": {
          "en_US": "Country",
          "fr_FR": "Pays"
        },
        "type": "text",
        "value_per_locale": false,
        "value_per_channel": false,
        "is_required_for_completeness": false
      },
      {
        "code": "creation_year",
        "labels": {
          "en_US": "Creation year",
          "fr_FR": "Année de création"
        },
        "type": "number",
        "value_per_locale": false,
        "value_per_channel": false,
        "is_required_for_completeness": false,
        "decimals_allowed": false,
        "min_value": "1800",
        "max_value": "2100"
      },
      {
        "code": "collection_overview",
        "labels": {
          "en_US": "Collection overview",
          "fr_FR": "Aperçu de la collection"
        },
        "type": "image",
        "value_per_locale": true,
        "value_per_channel": false,
        "is_required_for_completeness": true,
        "allowed_extensions": [
          "png"
        ],
        "max_file_size": "1000"
      }
    ]

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Get an attribute of a given reference entity

This endpoint allows you to get the information about a given attribute for a given reference entity


REQUEST

get /api/rest/v1/reference-entities/{reference_entity_code}/attributes/{code}

Path parameters

reference_entity_code (string) • This path parameter is used to specify the unique identifier of the reference entity you want to retrieve or manipulate. It is essential for identifying the specific reference entity in the API requests. Ensure that the reference entity code is correctly formatted and corresponds to an existing reference entity in the system.

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Returns the content of the reference entity attribute in JSON format

Body Format application/json

{

code (string) • Attribute code

labels (object) : {
    {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Attribute label for the specified locale
  }

type (string) • Attribute type. See type section for more details.

value_per_locale (boolean) • Whether the attribute is localizable, i.e. can have one value by locale

value_per_channel (boolean) • Whether the attribute is scopable, i.e. can have one value by channel

is_required_for_completeness (boolean) • Whether the attribute should be part of the record's completeness calculation

max_characters (integer,null) • Maximum number of characters allowed for the value of the attribute when the attribute type is text

is_textarea (boolean) • Whether the UI should display a text area instead of a simple field when the attribute type is text

is_rich_text_editor (boolean) • Whether the UI should display a rich text editor instead of a simple text area when the attribute type is text

validation_rule (string,null) • Validation rule type used to validate the attribute value when the attribute type is text

validation_regexp (string,null) • Regexp expression used to validate the attribute value when the attribute type is text

allowed_extensions (array [string]) • Extensions allowed when the attribute type is image

max_file_size (string,null) • Max file size in MB when the attribute type is image

reference_entity_code (string,null) • Code of the linked reference entity when the attribute type is reference_entity_single_link or reference_entity_multiple_links

asset_family_identifier (string,null) • Code of the linked asset family when the attribute type is asset_collection

decimals_allowed (boolean) • Whether decimals are allowed when the attribute type is number

min_value (string,null) • Minimum value allowed when the attribute type is number

max_value (string,null) • Maximum value allowed when the attribute type is number

}

Example

{
      "code": "description",
      "labels": {
        "en_US": "Description",
        "fr_FR": "Description"
      },
      "type": "text",
      "value_per_locale": true,
      "value_per_channel": false,
      "is_required_for_completeness": true,
      "is_textarea": true,
      "is_rich_text_editor": true,
      "validation_rule": "none"
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 404,
      "message": "Resource `my_resource_code` does not exist."
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Update/create an attribute of a given reference entity

This endpoint allows you to update a given attribute for a given reference entity. Note that if the attribute does not already exist for the given reference entity, it creates it.


REQUEST

patch /api/rest/v1/reference-entities/{reference_entity_code}/attributes/{code}

Path parameters

reference_entity_code (string) • This path parameter is used to specify the unique identifier of the reference entity you want to retrieve or manipulate. It is essential for identifying the specific reference entity in the API requests. Ensure that the reference entity code is correctly formatted and corresponds to an existing reference entity in the system.

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/json', no other value allowed

Body

Follow the standard format of the entity

{

code (string) • Attribute code

labels (object, [] by default) : {
        {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Attribute label for the specified locale
    }

type (string) • Attribute type. See type section for more details.

value_per_locale (boolean, false by default) • Whether the attribute is localizable, i.e. can have one value by locale

value_per_channel (boolean, false by default) • Whether the attribute is scopable, i.e. can have one value by channel

is_required_for_completeness (boolean, false by default) • Whether the attribute should be part of the record's completeness calculation

max_characters (integer,null) • Maximum number of characters allowed for the value of the attribute when the attribute type is text

is_textarea (boolean, false by default) • Whether the UI should display a text area instead of a simple field when the attribute type is text

is_rich_text_editor (boolean, false by default) • Whether the UI should display a rich text editor instead of a simple text area when the attribute type is text

validation_rule (string, none by default) • Validation rule type used to validate the attribute value when the attribute type is text

validation_regexp (string,null) • Regexp expression used to validate the attribute value when the attribute type is text

allowed_extensions (array[string], [] by default) • Extensions allowed when the attribute type is image

max_file_size (string,null) • Max file size in MB when the attribute type is image

decimals_allowed (boolean, false by default) • Whether decimals are allowed when the attribute type is number

min_value (string,null) • Minimum value allowed when the attribute type is number

max_value (string,null) • Maximum value allowed when the attribute type is number

}

Example

{
      "code": "description",
      "labels": {
        "en_US": "Description",
        "fr_FR": "Description"
      },
      "type": "text",
      "value_per_locale": true,
      "value_per_channel": false,
      "is_required_for_completeness": true,
      "is_textarea": true,
      "is_rich_text_editor": true,
      "validation_rule": "none"
    }

RESPONSES

This response indicates that the entity was successfully created. The server has fulfilled the request and created a new resource. The response includes a Location header that contains the URI of the newly created resource.

Headers

Location • URI of the created resource

Body Format application/json

Ø

This response indicates that the request was successful and that there is no content to return. It is typically used in response to a successful update operation where the server does not need to return any data to the client.

Headers

Location • URI of the updated resource

Body Format application/json

Ø

This response indicates that the server cannot process the request due to a client error, such as malformed request syntax, invalid request message framing, or deceptive request routing. It is typically used when the server cannot understand the request due to invalid JSON or other client-side issues.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 400,
      "message": "Invalid JSON message received"
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the server understands the request but cannot process it due to validation errors in the provided data.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

errors (array [object]) : [
        {
         property (string) • Name of the invalid property
         message (string) • Human-readable error message
         attribute (string,null) • Attribute code (if the error is on an attribute)
         locale (string,null) • Locale code involved in the error, if any
         scope (string,null) • Channel code involved in the error, if any
        }
    ]

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Validation failed.",
      "errors": [
        {
          "property": "family",
          "message": "The tshirts family does not exist in your PIM."
        },
        {
          "property": "categories",
          "message": "The \"tvs_projectors\" category does not exist."
        },
        {
          "property": "associations.SUBSTITUTION.groups",
          "message": "You should associate existing groups. The \"promotion\" group does not exist."
        },
        {
          "property": "values",
          "message": "The \"description\" attribute requires a channel.",
          "attribute": "description",
          "locale": "en_US",
          "scope": null
        },
        {
          "property": "values",
          "message": "The \"name\" attribute requires a locale.",
          "attribute": "name",
          "locale": null,
          "scope": null
        }
      ],
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

Reference entity attribute option

Get a list of attribute options of a given attribute for a given reference entity

This endpoint allows you to get a list of attribute options for a given reference entity


REQUEST

get /api/rest/v1/reference-entities/{reference_entity_code}/attributes/{attribute_code}/options

Path parameters

reference_entity_code (string) • This path parameter is used to specify the unique identifier of the reference entity you want to retrieve or manipulate. It is essential for identifying the specific reference entity in the API requests. Ensure that the reference entity code is correctly formatted and corresponds to an existing reference entity in the system.

attribute_code (string) • This path parameter is used to specify the unique identifier of the attribute you want to retrieve or manipulate. It is essential for identifying the specific attribute in the API requests. Ensure that the attribute code is correctly formatted and corresponds to an existing attribute in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Return the options of the given attributes of the given reference entity

Body Format application/json

[
    {

       code (string) • Attribute's option code

       labels (object) : {
           {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Attribute label for the specified locale
        }
    }
]

Example

[
      {
        "code": "woodland_retreat",
        "labels": {
          "en_US": "Woodland Retreat",
          "fr_FR": "Retraite dans les Bois"
        }
      },
      {
        "code": "new_nordic",
        "labels": {
          "en_US": "New Nordic",
          "fr_FR": "Renouveau Scandinave"
        }
      },
      {
        "code": "global_nomad",
        "labels": {
          "en_US": "Global Nomad",
          "fr_FR": "Nomade du Monde"
        }
      }
    ]

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

The attribute does not support options

Body Format application/json

{

code (integer)

message (string)

}

Example

{
      "code": 404,
      "message": "Attribute \"description\" does not support options."
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Get an attribute option for a given attribute of a given reference entity

This endpoint allows you to get the information about a given attribute option


REQUEST

get /api/rest/v1/reference-entities/{reference_entity_code}/attributes/{attribute_code}/options/{code}

Path parameters

reference_entity_code (string) • This path parameter is used to specify the unique identifier of the reference entity you want to retrieve or manipulate. It is essential for identifying the specific reference entity in the API requests. Ensure that the reference entity code is correctly formatted and corresponds to an existing reference entity in the system.

attribute_code (string) • This path parameter is used to specify the unique identifier of the attribute you want to retrieve or manipulate. It is essential for identifying the specific attribute in the API requests. Ensure that the attribute code is correctly formatted and corresponds to an existing attribute in the system.

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Returns the content of the reference entity attribute option in JSON format

Body Format application/json

{

code (string) • Attribute's option code

labels (object) : {
    {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Attribute label for the specified locale
  }

}

Example

{
      "code": "global_nomad",
      "labels": {
        "en_US": "Global Nomad",
        "fr_FR": "Nomade du Monde"
      }
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 404,
      "message": "Resource `my_resource_code` does not exist."
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Update/create a reference entity attribute option

This endpoint allows you to update a given option for a given attribute and a given reference entity. Learn more about Update behavior. Note that if the option does not already exist for the given attribute of the given reference entity, it creates it.


REQUEST

patch /api/rest/v1/reference-entities/{reference_entity_code}/attributes/{attribute_code}/options/{code}

Path parameters

reference_entity_code (string) • This path parameter is used to specify the unique identifier of the reference entity you want to retrieve or manipulate. It is essential for identifying the specific reference entity in the API requests. Ensure that the reference entity code is correctly formatted and corresponds to an existing reference entity in the system.

attribute_code (string) • This path parameter is used to specify the unique identifier of the attribute you want to retrieve or manipulate. It is essential for identifying the specific attribute in the API requests. Ensure that the attribute code is correctly formatted and corresponds to an existing attribute in the system.

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/json', no other value allowed

Body

Follow the standard format of the entity

{

code (string) • Attribute's option code

labels (object, [] by default) : {
        {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Attribute label for the specified locale
    }

}

Example

{
      "code": "global_nomad",
      "labels": {
        "en_US": "Global Nomad",
        "fr_FR": "Nomade du Monde"
      }
    }

RESPONSES

This response indicates that the entity was successfully created. The server has fulfilled the request and created a new resource. The response includes a Location header that contains the URI of the newly created resource.

Headers

Location • URI of the created resource

Body Format application/json

Ø

This response indicates that the request was successful and that there is no content to return. It is typically used in response to a successful update operation where the server does not need to return any data to the client.

Headers

Location • URI of the updated resource

Body Format application/json

Ø

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the data provided does not meet the required format or constraints defined by the API, and includes a link to the documentation for reference.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Property \\\"labels\\\" expects an array as data, \\\"NULL\\\" given. Check the API reference documentation.",
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

Reference entity record

Get the list of the records of a reference entity

This endpoint allows you to get a list of records of a given reference entity. Records are paginated and can be filtered.


REQUEST

get /api/rest/v1/reference-entities/{reference_entity_code}/records

Path parameters

reference_entity_code (string) • This path parameter is used to specify the unique identifier of the reference entity you want to retrieve or manipulate. It is essential for identifying the specific reference entity in the API requests. Ensure that the reference entity code is correctly formatted and corresponds to an existing reference entity in the system.

Query parameters

search (string) • Filter records of the reference entity, for more details see the Filters

channel (string) • Filter record values to return scopable record attributes for the given channel as well as the non localizable/non scopable record attributes, for more details see the Filter record values by channel section.

locales (string) • Filter record values to return localizable record attributes for the given locales as well as the non localizable/non scopable record attributes, for more details see the Filter record values by locale section.

search_after (string, cursor to the first page by default) • Cursor when using the search_after pagination method type. It is essential for navigating through pages in cursor-based pagination, providing more efficient pagination for large datasets. Should never be set manually, see Pagination section for more details.

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Return the records of the given reference entity paginated. The response is paginated and includes links to navigate through the pages. Only search_after pagination is use.

Body Format application/json

{

_links (object) : {
    self (object) : {
        href (string) • URI of the current page of resources
    }
    first (object) : {
        href (string) • URI of the first page of resources
    }
    previous (object) : {
        href (string) • URI of the previous page of resources
    }
    next (object) : {
        href (string) • URI of the next page of resources
    }
  }

_embedded (object) : {
    items (array) : [
        {
          code (string) • Code of the record
          values (object) • Record attribute values
          created (string,null)
          updated (string,null)
          _links (object) : {
              self (object) : {
                  href (string) • URI of the resource
              }
          }
        }
    ]
  }

}

Example

{
      "_links": {
        "self": {
          "href": "https://demo.akeneo.com/api/rest/v1/reference-entities/brands/records"
        },
        "first": {
          "href": "https://demo.akeneo.com/api/rest/v1/reference-entities/brands/records"
        },
        "next": {
          "href": "https://demo.akeneo.com/api/rest/v1/reference-entities/brands/records?search_after=ligneroset"
        }
      },
      "_embedded": {
        "items": [
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/reference-entities/brands/records/kartell"
              }
            },
            "code": "kartell",
            "values": {
              "label": [
                {
                  "locale": "en_US",
                  "channel": null,
                  "data": "Kartell"
                }
              ],
              "image": [
                {
                  "locale": null,
                  "channel": null,
                  "data": "0/c/b/0/0cb0c0e115dedba676f8d1ad8343ec207ab54c7b_image.jpg"
                }
              ],
              "description": [
                {
                  "locale": "en_US",
                  "channel": null,
                  "data": "The contemporary Italian furniture brand"
                },
                {
                  "locale": "fr_FR",
                  "channel": null,
                  "data": "L'éditeur de meubles comtemporain italien"
                }
              ],
              "country": [
                {
                  "locale": null,
                  "channel": null,
                  "data": "italy"
                }
              ]
            },
            "created": "2021-01-01T01:23:34+00:00",
            "updated": "2021-02-03T23:45:59+00:00"
          },
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/reference-entities/brands/records/usm"
              }
            },
            "code": "usm",
            "values": {
              "label": [
                {
                  "locale": "en_US",
                  "channel": null,
                  "data": "USM"
                }
              ],
              "image": [
                {
                  "locale": null,
                  "channel": null,
                  "data": "9/c/g/1/0cb0c0e115dedba76f8d1ad8343ec897abc43bv4_image.jpg"
                }
              ],
              "description": [
                {
                  "locale": "en_US",
                  "channel": null,
                  "data": "Modular furniture from Switzerland for your home and office"
                },
                {
                  "locale": "fr_FR",
                  "channel": null,
                  "data": "L'éditeur de meubles modulaires suisse pour votre intérieur et pour les entreprises"
                }
              ],
              "country": [
                {
                  "locale": null,
                  "channel": null,
                  "data": "switzerland"
                }
              ]
            },
            "created": "2021-01-01T01:23:34+00:00",
            "updated": "2021-02-03T23:45:59+00:00"
          },
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/reference-entities/brands/records/ligneroset"
              }
            },
            "code": "ligneroset",
            "values": {
              "label": [
                {
                  "locale": "en_US",
                  "channel": null,
                  "data": "Ligne Roset"
                }
              ],
              "image": [
                {
                  "locale": null,
                  "channel": null,
                  "data": "4/b/0/1/0cb0c0e115dedde78b8d1ad8343ec980cd5daa54_image.jpg"
                }
              ],
              "description": [
                {
                  "locale": "en_US",
                  "channel": null,
                  "data": "Very well known French brand of modern and luxury furniture"
                },
                {
                  "locale": "fr_FR",
                  "channel": null,
                  "data": "La marque renommée des meubles de luxe à la française"
                }
              ],
              "country": [
                {
                  "locale": null,
                  "channel": null,
                  "data": "france"
                }
              ]
            },
            "created": "2021-01-01T01:23:34+00:00",
            "updated": "2021-02-03T23:45:59+00:00"
          }
        ]
      }
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Update/create several reference entity records

This endpoint allows you to update and/or create several records of a reference entity. Learn more about Update behavior. If a record with the specified code does not already exist, it will be created.


REQUEST

patch /api/rest/v1/reference-entities/{reference_entity_code}/records

Path parameters

reference_entity_code (string) • This path parameter is used to specify the unique identifier of the reference entity you want to retrieve or manipulate. It is essential for identifying the specific reference entity in the API requests. Ensure that the reference entity code is correctly formatted and corresponds to an existing reference entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/json', no other value allowed

Body

Follow the standard format of the entity

{

   [

       code (string) • Code of the record

       values (object) • Record attribute values

       created (string,null) • Date of creation

       updated (string,null) • Date of the last update

   ]

}

Example

[
      {
        "code": "kartell",
        "values": {
          "label": [
            {
              "locale": "en_US",
              "channel": null,
              "data": "Kartell"
            }
          ],
          "image": [
            {
              "locale": null,
              "channel": null,
              "data": "0/c/b/0/0cb0c0e115dedba676f8d1ad8343ec207ab54c7b_image.jpg"
            }
          ],
          "description": [
            {
              "locale": "en_US",
              "channel": null,
              "data": "Kartell, the Italian furniture company that sells modern and remarkable pieces of furnitures."
            },
            {
              "locale": "fr_FR",
              "channel": null,
              "data": "Kartell, l'éditeur de meuble italien spécialisé dans la signature de belle pièces au design contemporain."
            }
          ],
          "country": [
            {
              "locale": null,
              "channel": null,
              "data": "italy"
            }
          ],
          "collection_overview": [
            {
              "locale": null,
              "channel": null,
              "data": "5/1/d/8/51d81dc778ba1501a8f998f3ab5797569f3b9e25_img.png"
            }
          ],
          "creation_year": [
            {
              "locale": null,
              "channel": null,
              "data": "1949"
            }
          ]
        }
      },
      {
        "code": "ligneroset",
        "values": {
          "label": [
            {
              "locale": "en_US",
              "channel": null,
              "data": "Ligne Roset"
            }
          ],
          "description": [
            {
              "locale": "en_US",
              "channel": null,
              "data": "Very well known French brand of modern and luxury furniture"
            },
            {
              "locale": "fr_FR",
              "channel": null,
              "data": "La marque renommée des meubles de luxe à la française"
            }
          ],
          "country": [
            {
              "locale": null,
              "channel": null,
              "data": "france"
            }
          ],
          "creation_year": [
            {
              "locale": null,
              "channel": null,
              "data": "1860"
            }
          ]
        }
      },
      {
        "code": "usm",
        "values": {
          "label": [
            {
              "locale": "en_US",
              "channel": null,
              "data": "USM"
            }
          ],
          "description": [
            {
              "locale": "en_US",
              "channel": null,
              "data": "Modular furniture from Switzerland for your home and office"
            },
            {
              "locale": "fr_FR",
              "channel": null,
              "data": "L'éditeur de meubles modulaires suisse pour votre intérieur et pour les entreprises"
            }
          ],
          "country": [
            {
              "locale": null,
              "channel": null,
              "data": "switzerland"
            }
          ],
          "creation_year": [
            {
              "locale": null,
              "channel": null,
              "data": "1885"
            }
          ]
        }
      }
    ]

RESPONSES

Returns an JSON array in which each object gives you the status of each record creation or update

Body Format application/json

[
    {

       code (string)

       status_code (integer)

       message (string)

       errors (array [object]) : [
        {
         property (string)
         message (string)
        }
    ]
    }
]

Example

[
      {
        "code": "a_new_brand",
        "status_code": 201
      },
      {
        "code": "existing_brand_successfully_updated",
        "status_code": 204
      },
      {
        "code": "brand_with_a_wrong_payload_resulting_in_an_error",
        "status_code": 422,
        "message": "The record has an invalid format.",
        "errors": [
          {
            "property": "values.label[0]",
            "message": "Additional object properties are not allowed: typo"
          }
        ]
      }
    ]

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the request entity is larger than the server is willing or able to process. It can occur when the number of resources in a batch request exceeds the maximum allowed limit.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 413,
      "message": "Too many resources to process, 100 is the maximum allowed."
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

Get a record of a given reference entity

Retrieve a specific record of a reference entity


REQUEST

get /api/rest/v1/reference-entities/{reference_entity_code}/records/{code}

Path parameters

reference_entity_code (string) • This path parameter is used to specify the unique identifier of the reference entity you want to retrieve or manipulate. It is essential for identifying the specific reference entity in the API requests. Ensure that the reference entity code is correctly formatted and corresponds to an existing reference entity in the system.

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Record retrieved successfully

Body Format application/json

{

code (string) • Code of the record

values (object) • Record attribute values

created (string,null)

updated (string,null)

}

Example

{
      "code": "kartell",
      "values": {
        "label": [
          {
            "locale": "en_US",
            "channel": null,
            "data": "Kartell"
          }
        ],
        "image": [
          {
            "locale": null,
            "channel": null,
            "data": "0/c/b/0/0cb0c0e115dedba676f8d1ad8343ec207ab54c7b_image.jpg"
          }
        ],
        "description": [
          {
            "locale": "en_US",
            "channel": null,
            "data": "Kartell, the Italian furniture company that sells modern and remarkable pieces of furniture."
          },
          {
            "locale": "fr_FR",
            "channel": null,
            "data": "Kartell, l'éditeur de meuble italien spécialisé dans la signature de belles pièces au design contemporain."
          }
        ],
        "country": [
          {
            "locale": null,
            "channel": null,
            "data": "italy"
          }
        ],
        "collection_overview": [
          {
            "locale": null,
            "channel": null,
            "data": "5/1/d/8/51d81dc778ba1501a8f998f3ab5797569f3b9e25_img.png"
          }
        ],
        "creation_year": [
          {
            "locale": null,
            "channel": null,
            "data": "1949"
          }
        ]
      },
      "created": "2021-01-01T01:23:34+00:00",
      "updated": "2021-02-03T23:45:59+00:00"
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 404,
      "message": "Resource `my_resource_code` does not exist."
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Update or create a record of a given reference entity

This endpoint allows you to update a given record of a given reference entity. Learn more about Update behavior. Note that if the record does not already exist for the given reference entity, it creates it.


REQUEST

patch /api/rest/v1/reference-entities/{reference_entity_code}/records/{code}

Path parameters

reference_entity_code (string) • This path parameter is used to specify the unique identifier of the reference entity you want to retrieve or manipulate. It is essential for identifying the specific reference entity in the API requests. Ensure that the reference entity code is correctly formatted and corresponds to an existing reference entity in the system.

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/json', no other value allowed

Body

Follow the standard format of the entity

{

code (string) • Code of the record

values (object) • Record attribute values

created (string,null)

updated (string,null)

}

Example

{
      "code": "kartell",
      "values": {
        "label": [
          {
            "locale": "en_US",
            "channel": null,
            "data": "Kartell"
          }
        ],
        "image": [
          {
            "locale": null,
            "channel": null,
            "data": "0/c/b/0/0cb0c0e115dedba676f8d1ad8343ec207ab54c7b_image.jpg"
          }
        ],
        "description": [
          {
            "locale": "en_US",
            "channel": null,
            "data": "Kartell, the Italian furniture company that sells modern and remarkable pieces of furniture."
          },
          {
            "locale": "fr_FR",
            "channel": null,
            "data": "Kartell, l'éditeur de meuble italien spécialisé dans la signature de belles pièces au design contemporain."
          }
        ],
        "country": [
          {
            "locale": null,
            "channel": null,
            "data": "italy"
          }
        ],
        "collection_overview": [
          {
            "locale": null,
            "channel": null,
            "data": "5/1/d/8/51d81dc778ba1501a8f998f3ab5797569f3b9e25_img.png"
          }
        ],
        "creation_year": [
          {
            "locale": null,
            "channel": null,
            "data": "1949"
          }
        ]
      }
    }

RESPONSES

This response indicates that the entity was successfully created. The server has fulfilled the request and created a new resource. The response includes a Location header that contains the URI of the newly created resource.

Headers

Location • URI of the created resource

Body Format application/json

Ø

This response indicates that the request was successful and that there is no content to return. It is typically used in response to a successful update operation where the server does not need to return any data to the client.

Headers

Location • URI of the updated resource

Body Format application/json

Ø

This response indicates that the server cannot process the request due to a client error, such as malformed request syntax, invalid request message framing, or deceptive request routing. It is typically used when the server cannot understand the request due to invalid JSON or other client-side issues.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 400,
      "message": "Invalid JSON message received"
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the server understands the request but cannot process it due to validation errors in the provided data.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

errors (array [object]) : [
        {
         property (string) • Name of the invalid property
         message (string) • Human-readable error message
         attribute (string,null) • Attribute code (if the error is on an attribute)
         locale (string,null) • Locale code involved in the error, if any
         scope (string,null) • Channel code involved in the error, if any
        }
    ]

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Validation failed.",
      "errors": [
        {
          "property": "family",
          "message": "The tshirts family does not exist in your PIM."
        },
        {
          "property": "categories",
          "message": "The \"tvs_projectors\" category does not exist."
        },
        {
          "property": "associations.SUBSTITUTION.groups",
          "message": "You should associate existing groups. The \"promotion\" group does not exist."
        },
        {
          "property": "values",
          "message": "The \"description\" attribute requires a channel.",
          "attribute": "description",
          "locale": "en_US",
          "scope": null
        },
        {
          "property": "values",
          "message": "The \"name\" attribute requires a locale.",
          "attribute": "name",
          "locale": null,
          "scope": null
        }
      ],
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

Reference entity media file

Create a new media file for a reference entity or a record

This endpoint allows you to create a new media file and associate it to the image of a reference entity, or to the main image or to an attribute value of a record


REQUEST

post /api/rest/v1/reference-entities-media-files

Path parameters

Ø

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/json', no other value allowed

Body

Given as form-data

file (string / binary) • The media file to upload


RESPONSES

This response indicates that the entity was successfully created. The server has fulfilled the request and created a new resource. The response includes a Location header that contains the URI of the newly created resource.

Headers

Location • URI of the created resource

asset-media-file-code • Code of the created asset media file

Body Format application/json

Ø

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

Unprocessable entity. The file is invalid or missing.

Body Format application/json

{

code (integer)

message (string)

}

Example

{
      "code": 422,
      "message": "Property \"file\" is required."
    }

Download the media file associated to a reference entity or a record

This endpoint allows you to download a given media file that is associated with a reference entity or a record


REQUEST

get /api/rest/v1/reference-entities-media-files/{code}

Path parameters

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Body

Ø


RESPONSES

Returns the binary of the media file

Body Format Mime-type of the media file
Media file binary

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format Mime-type of the media file
Media file binary

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format Mime-type of the media file
Media file binary

Asset Manager

Asset family

Get list of asset families

This endpoint allows you to get a list of asset families. Asset families are paginated.


REQUEST

get /api/rest/v1/asset-families

Path parameters

Ø

Query parameters

search_after (string, cursor to the first page by default) • Cursor when using the search_after pagination method type. It is essential for navigating through pages in cursor-based pagination, providing more efficient pagination for large datasets. Should never be set manually, see Pagination section for more details.

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Return asset families paginated. The response is paginated and includes links to navigate through the pages. Only search_after pagination is used.

Body Format application/json

{

_links (object) : {
    self (object) : {
        href (string) • URI of the current page of resources
    }
    first (object) : {
        href (string) • URI of the first page of resources
    }
    previous (object) : {
        href (string) • URI of the previous page of resources
    }
    next (object) : {
        href (string) • URI of the next page of resources
    }
  }

_embedded (object) : {
    items (array) : [
        {
          _links (object) : {
              self (object) : {
                  href (string) • URI of the resource
              }
          }
          code (string) • Asset family code
          labels (object) : {
              {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Asset family label for the specified locale
          }
          attribute_as_main_media (string,null) • Attribute code that is used as the main media of the asset family
          naming_convention (object) : {
              source (object) • The string on which the naming convention should be applied. More details here.
              pattern (string) • The regular expression that should be applied on the source. More details here.
              abort_asset_creation_on_error (boolean) • Whether the asset should be created if the naming convention failed to apply. More details here.
          }
          product_link_rules (array [object]) : [
              {
                  product_selections (array [object]) • The product selection to which the assets of the asset family to be automatically linked. More details here.
                  assign_assets_to (array [object]) • The product value in which your assets will be assigned. More details here.
              }
          ]
          transformations (array [object]) : [
              {
                  label (string) • The name of the transformation
                  filename_suffix (string) • The suffix that will be appended to the source filename to generate the target filename. More details here.
                  filename_prefix (string) • The prefix that will be prepended to the source filename to generate the target filename. More details here.
                  source (object) • The attribute value in which is stored the media file you want to use as the source file for your transformation. More details here.
                  target (object) • The attribute value in which the PIM will generate the new transformed file, aka the target file. More details here.
                  operations (array [object]) • The transformations that should be applied to your source file to generate the target file. More details here.
              }
          ]
          sharing_enabled (boolean) • Share links are available/unavailable for media file attributes of all the assets in this family
        }
    ]
  }

}

Example

{
      "_links": {
        "self": {
          "href": "https://demo.akeneo.com/api/rest/v1/asset-families"
        },
        "first": {
          "href": "https://demo.akeneo.com/api/rest/v1/asset-families"
        },
        "next": {
          "href": "https://demo.akeneo.com/api/rest/v1/asset-families?search_after=user_guides"
        }
      },
      "_embedded": {
        "items": [
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/asset-families/packshots"
              }
            },
            "code": "packshots",
            "labels": {
              "en_US": "Packshots",
              "fr_FR": "Plans produit"
            },
            "naming_convention": {
              "source": {
                "property": "code",
                "channel": null,
                "locale": null
              },
              "pattern": "/(?P<product_ref>.*)\\.jpg/",
              "abort_asset_creation_on_error": true
            },
            "product_link_rules": [
              {
                "product_selections": [
                  {
                    "field": "sku",
                    "operator": "=",
                    "value": "{{product_ref}}"
                  }
                ],
                "assign_assets_to": [
                  {
                    "attribute": "{{my_product_attribute}}",
                    "mode": "add"
                  }
                ]
              }
            ],
            "transformations": [
              {
                "label": "My transformation",
                "filename_suffix": "_thumbnailBW",
                "source": {
                  "attribute": "main_image",
                  "channel": null,
                  "locale": null
                },
                "target": {
                  "attribute": "thumbnail",
                  "channel": null,
                  "locale": null
                },
                "operations": [
                  {
                    "type": "thumbnail",
                    "parameters": {
                      "width": 150,
                      "height": 150
                    }
                  },
                  {
                    "type": "colorspace",
                    "parameters": {
                      "colorspace": "grey"
                    }
                  }
                ]
              }
            ],
            "sharing_enabled": false
          },
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/asset-families/videos"
              }
            },
            "code": "videos",
            "labels": {
              "en_US": "Videos",
              "fr_FR": "Vidéos"
            },
            "product_link_rules": [
              {
                "product_selections": [
                  {
                    "field": "categories",
                    "operator": "IN",
                    "value": "{{category}}"
                  }
                ],
                "assign_assets_to": [
                  {
                    "attribute": "presentation_video",
                    "locale": "{{locale}}",
                    "mode": "replace"
                  }
                ]
              }
            ],
            "sharing_enabled": true
          },
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/asset-families/user_guides"
              }
            },
            "code": "user_guides",
            "labels": {
              "en_US": "User guides",
              "fr_FR": "Guides utilisateur"
            },
            "product_link_rules": [
              {
                "product_selections": [
                  {
                    "field": "sku",
                    "operator": "=",
                    "value": "{{product_ref}}"
                  }
                ],
                "assign_assets_to": [
                  {
                    "attribute": "user_instructions",
                    "locale": "{{locale}}",
                    "mode": "replace"
                  }
                ]
              }
            ],
            "sharing_enabled": false
          }
        ]
      }
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Get an asset family

This endpoint allows you to get the information about a given asset family


REQUEST

get /api/rest/v1/asset-families/{code}

Path parameters

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Returns the content of the asset family in JSON format

Body Format application/json

{

code (string) • Asset family code

labels (object) : {
    {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Asset family label for the specified locale
  }

attribute_as_main_media (string,null) • Attribute code that is used as the main media of the asset family

naming_convention (object) : {
    source (object) • The string on which the naming convention should be applied. More details here.
    pattern (string) • The regular expression that should be applied on the source. More details here.
    abort_asset_creation_on_error (boolean) • Whether the asset should be created if the naming convention failed to apply. More details here.
  }

product_link_rules (array [object]) : [
        {
         product_selections (array) • The product selection to which the assets of the asset family to be automatically linked. More details here.
         assign_assets_to (array) • The product value in which your assets will be assigned. More details here.
        }
    ]

transformations (array [object]) : [
        {
         label (string) • The name of the transformation
         filename_suffix (string) • The suffix that will be appended to the source filename to generate the target filename. More details here.
         filename_prefix (string) • The prefix that will be prepended to the source filename to generate the target filename. More details here.
         source (object) • The attribute value in which is stored the media file you want to use as the source file for your transformation. More details here.
         target (object) • The attribute value in which the PIM will generate the new transformed file, aka the target file. More details here.
         operations (array) • The transformations that should be applied to your source file to generate the target file. More details here.
        }
    ]

sharing_enabled (boolean) • Share links are available/unavailable for media file attributes of all the assets in this family

}

Example

{
      "code": "model_pictures",
      "labels": {
        "en_US": "Model pictures",
        "fr_FR": "Photographies en pied"
      },
      "attribute_as_main_media": "main_image",
      "naming_convention": {
        "source": {
          "property": "code"
        },
        "pattern": "/(?P<product_ref>.*)-.*/",
        "abort_asset_creation_on_error": true
      },
      "product_link_rules": [
        {
          "product_selections": [
            {
              "field": "sku",
              "operator": "EQUALS",
              "value": "{{product_ref}}"
            }
          ],
          "assign_assets_to": [
            {
              "attribute": "model_pictures",
              "mode": "replace"
            }
          ]
        }
      ],
      "transformations": [
        {
          "label": "Thumbnail plus black and white transformation",
          "filename_suffix": "_thumbnailBW",
          "source": {
            "attribute": "main_image",
            "channel": "ecommerce",
            "locale": "en_US"
          },
          "target": {
            "attribute": "thumbnail",
            "channel": "ecommerce",
            "locale": "en_US"
          },
          "operations": [
            {
              "type": "thumbnail",
              "parameters": {
                "width": 150,
                "height": 150
              }
            },
            {
              "type": "colorspace",
              "parameters": {
                "colorspace": "grey"
              }
            }
          ]
        }
      ],
      "sharing_enabled": true
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 404,
      "message": "Resource `my_resource_code` does not exist."
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Update/create an asset family

This endpoint allows you to update a given asset family. Note that if the asset family does not already exist, it creates it.


REQUEST

patch /api/rest/v1/asset-families/{code}

Path parameters

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/json', no other value allowed

Body

Follow the standard format of the entity

{

code (string) • Asset family code

labels (object, [] by default) : {
        {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Asset family label for the specified locale
    }

attribute_as_main_media (string,null, First media file or media link attribute that was created by default) • Attribute code that is used as the main media of the asset family

naming_convention (object, [] by default) : {
        source (object) • The string on which the naming convention should be applied. More details here.
        pattern (string) • The regular expression that should be applied on the source. More details here.
        abort_asset_creation_on_error (boolean) • Whether the asset should be created if the naming convention failed to apply. More details here.
    }

product_link_rules (array[object], [] by default) : [
        {
           product_selections (array[object]) • The product selection to which the assets of the asset family to be automatically linked. More details here.
           assign_assets_to (array[object]) • The product value in which your assets will be assigned. More details here.
        }
    ]

transformations (array[object], [] by default) : [
        {
           label (string) • The name of the transformation
           filename_suffix (string) • The suffix that will be appended to the source filename to generate the target filename. More details here.
           filename_prefix (string) • The prefix that will be prepended to the source filename to generate the target filename. More details here.
           source (object) • The attribute value in which is stored the media file you want to use as the source file for your transformation. More details here.
           target (object) • The attribute value in which the PIM will generate the new transformed file, aka the target file. More details here.
           operations (array[object]) • The transformations that should be applied to your source file to generate the target file. More details here.
        }
    ]

sharing_enabled (boolean) • Share links are available/unavailable for media file attributes of all the assets in this family

}

Example

{
      "code": "model_pictures",
      "labels": {
        "en_US": "Model pictures",
        "fr_FR": "Photographies en pied"
      },
      "attribute_as_main_media": "main_image",
      "naming_convention": {
        "source": {
          "property": "code"
        },
        "pattern": "/(?P<product_ref>.*)-.*/",
        "abort_asset_creation_on_error": true
      },
      "product_link_rules": [
        {
          "product_selections": [
            {
              "field": "sku",
              "operator": "EQUALS",
              "value": "{{product_ref}}"
            }
          ],
          "assign_assets_to": [
            {
              "attribute": "model_pictures",
              "mode": "replace"
            }
          ]
        }
      ],
      "transformations": [
        {
          "label": "Thumbnail plus black and white transformation",
          "filename_suffix": "_thumbnailBW",
          "source": {
            "attribute": "main_image",
            "channel": "ecommerce",
            "locale": "en_US"
          },
          "target": {
            "attribute": "thumbnail",
            "channel": "ecommerce",
            "locale": "en_US"
          },
          "operations": [
            {
              "type": "thumbnail",
              "parameters": {
                "width": 150,
                "height": 150
              }
            },
            {
              "type": "colorspace",
              "parameters": {
                "colorspace": "grey"
              }
            }
          ]
        }
      ],
      "sharing_enabled": true
    }

RESPONSES

This response indicates that the entity was successfully created. The server has fulfilled the request and created a new resource. The response includes a Location header that contains the URI of the newly created resource.

Headers

Location • URI of the created resource

Body Format application/json

Ø

This response indicates that the request was successful and that there is no content to return. It is typically used in response to a successful update operation where the server does not need to return any data to the client.

Headers

Location • URI of the updated resource

Body Format application/json

Ø

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the server understands the request but cannot process it due to validation errors in the provided data.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

errors (array [object]) : [
        {
         property (string) • Name of the invalid property
         message (string) • Human-readable error message
         attribute (string,null) • Attribute code (if the error is on an attribute)
         locale (string,null) • Locale code involved in the error, if any
         scope (string,null) • Channel code involved in the error, if any
        }
    ]

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Validation failed.",
      "errors": [
        {
          "property": "family",
          "message": "The tshirts family does not exist in your PIM."
        },
        {
          "property": "categories",
          "message": "The \"tvs_projectors\" category does not exist."
        },
        {
          "property": "associations.SUBSTITUTION.groups",
          "message": "You should associate existing groups. The \"promotion\" group does not exist."
        },
        {
          "property": "values",
          "message": "The \"description\" attribute requires a channel.",
          "attribute": "description",
          "locale": "en_US",
          "scope": null
        },
        {
          "property": "values",
          "message": "The \"name\" attribute requires a locale.",
          "attribute": "name",
          "locale": null,
          "scope": null
        }
      ],
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

Asset attribute

Get the list of attributes of a given asset family

This endpoint allows you to get the list of attributes of a given asset family


REQUEST

get /api/rest/v1/asset-families/{asset_family_code}/attributes

Path parameters

asset_family_code (string) • This path parameter is used to specify the unique identifier of the asset family you want to retrieve or manipulate. It is essential for identifying the specific asset family in the API requests. Ensure that the asset family code is correctly formatted and corresponds to an existing asset family in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Return the attributes of the given asset family

Body Format application/json

[
    {

       code (string) • Attribute code

       labels (object) : {
           {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Attribute label for the specified locale
        }

       type (string) • Attribute type. See type section for more details.

       value_per_locale (boolean) • Whether the attribute is localizable, i.e. can have one value by locale

       value_per_channel (boolean) • Whether the attribute is scopable, i.e. can have one value by channel

       is_required_for_completeness (boolean) • Whether the attribute should be part of the record's completeness calculation

       is_read_only (boolean) • Whether the attribute should be in read only mode only in the UI, but you can still update it with the API

       max_characters (integer,null) • Maximum number of characters allowed for the value of the attribute when the attribute type is text

       is_textarea (boolean) • Whether the UI should display a text area instead of a simple field when the attribute type is text

       is_rich_text_editor (boolean) • Whether the UI should display a rich text editor instead of a simple text area when the attribute type is text

       validation_rule (string,null) • Validation rule type used to validate the attribute value when the attribute type is text

       validation_regexp (string,null) • Regexp expression used to validate the attribute value when the attribute type is text

       allowed_extensions (array [string]) • Extensions allowed when the attribute type is media_file

       max_file_size (string,null) • Max file size in MB when the attribute type is media_file

       decimals_allowed (boolean) • Whether decimals are allowed when the attribute type is number

       min_value (string,null) • Minimum value allowed when the attribute type is number

       max_value (string,null) • Maximum value allowed when the attribute type is number

       media_type (string) • For the media_link attribute type, it is the type of the media behind the url, to allow its preview in the PIM. For the media_file attribute type, it is the type of the file.

       prefix (string,null) • Prefix of the media_link attribute type. The common url root that prefixes the link to the media.

       suffix (string,null) • Suffix of the media_link attribute type. The common url suffix for the media.

       reference_entity (string,null) • Reference entity code for the record attribute type (see Reference entity)

       asset_family_code (string,null) • Asset family code for the asset_family_single_link and asset_family_multiple_links attribute types
    }
]

Example

[
      {
        "code": "model_is_wearing_size",
        "labels": {
          "en_US": "Model is wearing size",
          "fr_FR": "Le mannequin porte la taille"
        },
        "type": "single_option",
        "value_per_locale": false,
        "value_per_channel": false,
        "is_required_for_completeness": true
      },
      {
        "code": "media_link",
        "labels": {
          "en_US": "Media link",
          "fr_FR": "Lien vers le média"
        },
        "type": "media_link",
        "value_per_locale": false,
        "value_per_channel": false,
        "is_required_for_completeness": true,
        "prefix": "https://my-dam.com/",
        "suffix": "?height=630&width=485",
        "media_type": "image"
      },
      {
        "code": "warning_mention",
        "labels": {
          "en_US": "Warning mention",
          "fr_FR": "Phrase d'avertissement"
        },
        "type": "text",
        "value_per_locale": true,
        "value_per_channel": false,
        "is_required_for_completeness": false,
        "max_characters": 50,
        "is_textarea": false,
        "is_rich_text_editor": false,
        "validation_rule": "none"
      }
    ]

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Get an attribute of a given asset family

This endpoint allows you to get the information about a given attribute for a given asset family


REQUEST

get /api/rest/v1/asset-families/{asset_family_code}/attributes/{code}

Path parameters

asset_family_code (string) • This path parameter is used to specify the unique identifier of the asset family you want to retrieve or manipulate. It is essential for identifying the specific asset family in the API requests. Ensure that the asset family code is correctly formatted and corresponds to an existing asset family in the system.

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Returns the content of the asset attribute in JSON format

Body Format application/json

{

code (string) • Attribute code

labels (object) : {
    {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Attribute label for the specified locale
  }

type (string) • Attribute type. See type section for more details.

value_per_locale (boolean) • Whether the attribute is localizable, i.e. can have one value by locale

value_per_channel (boolean) • Whether the attribute is scopable, i.e. can have one value by channel

is_required_for_completeness (boolean) • Whether the attribute should be part of the record's completeness calculation

is_read_only (boolean) • Whether the attribute should be in read only mode only in the UI, but you can still update it with the API

max_characters (integer,null) • Maximum number of characters allowed for the value of the attribute when the attribute type is text

is_textarea (boolean) • Whether the UI should display a text area instead of a simple field when the attribute type is text

is_rich_text_editor (boolean) • Whether the UI should display a rich text editor instead of a simple text area when the attribute type is text

validation_rule (string,null) • Validation rule type used to validate the attribute value when the attribute type is text

validation_regexp (string,null) • Regexp expression used to validate the attribute value when the attribute type is text

allowed_extensions (array [string]) • Extensions allowed when the attribute type is media_file

max_file_size (string,null) • Max file size in MB when the attribute type is media_file

decimals_allowed (boolean) • Whether decimals are allowed when the attribute type is number

min_value (string,null) • Minimum value allowed when the attribute type is number

max_value (string,null) • Maximum value allowed when the attribute type is number

media_type (string) • For the media_link attribute type, it is the type of the media behind the url, to allow its preview in the PIM. For the media_file attribute type, it is the type of the file.

prefix (string,null) • Prefix of the media_link attribute type. The common url root that prefixes the link to the media.

suffix (string,null) • Suffix of the media_link attribute type. The common url suffix for the media.

reference_entity (string,null) • Reference entity code for the record attribute type (see Reference entity)

asset_family_code (string,null) • Asset family code for the asset_family_single_link and asset_family_multiple_links attribute types

}

Example

{
      "code": "model_is_wearing_size",
      "labels": {
        "en_US": "Model is wearing size",
        "fr_FR": "Le mannequin porte la taille"
      },
      "type": "single_option",
      "value_per_locale": false,
      "value_per_channel": false,
      "is_required_for_completeness": true,
      "is_read_only": false
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 404,
      "message": "Resource `my_resource_code` does not exist."
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Update/create an attribute of a given asset family

This endpoint allows you to update a given attribute for a given asset family. Note that if the attribute does not already exist for the given asset family, it creates it.


REQUEST

patch /api/rest/v1/asset-families/{asset_family_code}/attributes/{code}

Path parameters

asset_family_code (string) • This path parameter is used to specify the unique identifier of the asset family you want to retrieve or manipulate. It is essential for identifying the specific asset family in the API requests. Ensure that the asset family code is correctly formatted and corresponds to an existing asset family in the system.

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/json', no other value allowed

Body

Follow the standard format of the entity

{

code (string) • Attribute code

labels (object, [] by default) : {
        {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Attribute label for the specified locale
    }

type (string) • Attribute type. See type section for more details.

value_per_locale (boolean, false by default) • Whether the attribute is localizable, i.e. can have one value by locale

value_per_channel (boolean, false by default) • Whether the attribute is scopable, i.e. can have one value by channel

is_required_for_completeness (boolean, false by default) • Whether the attribute should be part of the record's completeness calculation

is_read_only (boolean, false by default) • Whether the attribute should be in read only mode only in the UI, but you can still update it with the API

max_characters (integer,null) • Maximum number of characters allowed for the value of the attribute when the attribute type is text

is_textarea (boolean, false by default) • Whether the UI should display a text area instead of a simple field when the attribute type is text

is_rich_text_editor (boolean) • Whether the UI should display a rich text editor instead of a simple text area when the attribute type is text

validation_rule (string,null, none by default) • Validation rule type used to validate the attribute value when the attribute type is text

validation_regexp (string,null, null by default) • Regexp expression used to validate the attribute value when the attribute type is text

allowed_extensions (array[string], [] by default) • Extensions allowed when the attribute type is media_file

max_file_size (string,null, null by default) • Max file size in MB when the attribute type is media_file

decimals_allowed (boolean, false by default) • Whether decimals are allowed when the attribute type is number

min_value (string,null, null by default) • Minimum value allowed when the attribute type is number

max_value (string,null, null by default) • Maximum value allowed when the attribute type is number

media_type (string) • For the media_link attribute type, it is the type of the media behind the url, to allow its preview in the PIM. For the media_file attribute type, it is the type of the file.

prefix (string,null, null by default) • Prefix of the media_link attribute type. The common url root that prefixes the link to the media.

suffix (string,null, null by default) • Suffix of the media_link attribute type. The common url suffix for the media.

reference_entity (string,null, null by default) • Reference entity code for the record attribute type (see Reference entity)

asset_family_code (string,null, null by default) • Asset family code for the asset_family_single_link and asset_family_multiple_links attribute types

}

Example

{
      "code": "model_is_wearing_size",
      "labels": {
        "en_US": "Model is wearing size",
        "fr_FR": "Le mannequin porte la taille"
      },
      "type": "single_option",
      "value_per_locale": false,
      "value_per_channel": false,
      "is_required_for_completeness": true,
      "is_read_only": false
    }

RESPONSES

This response indicates that the entity was successfully created. The server has fulfilled the request and created a new resource. The response includes a Location header that contains the URI of the newly created resource.

Headers

Location • URI of the created resource

Body Format application/json

Ø

This response indicates that the request was successful and that there is no content to return. It is typically used in response to a successful update operation where the server does not need to return any data to the client.

Headers

Location • URI of the updated resource

Body Format application/json

Ø

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the server understands the request but cannot process it due to validation errors in the provided data.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

errors (array [object]) : [
        {
         property (string) • Name of the invalid property
         message (string) • Human-readable error message
         attribute (string,null) • Attribute code (if the error is on an attribute)
         locale (string,null) • Locale code involved in the error, if any
         scope (string,null) • Channel code involved in the error, if any
        }
    ]

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Validation failed.",
      "errors": [
        {
          "property": "family",
          "message": "The tshirts family does not exist in your PIM."
        },
        {
          "property": "categories",
          "message": "The \"tvs_projectors\" category does not exist."
        },
        {
          "property": "associations.SUBSTITUTION.groups",
          "message": "You should associate existing groups. The \"promotion\" group does not exist."
        },
        {
          "property": "values",
          "message": "The \"description\" attribute requires a channel.",
          "attribute": "description",
          "locale": "en_US",
          "scope": null
        },
        {
          "property": "values",
          "message": "The \"name\" attribute requires a locale.",
          "attribute": "name",
          "locale": null,
          "scope": null
        }
      ],
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

Asset attribute option

Get a list of attribute options of a given attribute for a given asset family

This endpoint allows you to get a list of attribute options for a given asset family


REQUEST

get /api/rest/v1/asset-families/{asset_family_code}/attributes/{attribute_code}/options

Path parameters

asset_family_code (string) • This path parameter is used to specify the unique identifier of the asset family you want to retrieve or manipulate. It is essential for identifying the specific asset family in the API requests. Ensure that the asset family code is correctly formatted and corresponds to an existing asset family in the system.

attribute_code (string) • This path parameter is used to specify the unique identifier of the attribute you want to retrieve or manipulate. It is essential for identifying the specific attribute in the API requests. Ensure that the attribute code is correctly formatted and corresponds to an existing attribute in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Return the options of the given attribute of the given asset family

Body Format application/json

[
    {

       code (string) • Attribute's option code

       labels (object) : {
           {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Attribute label for the specified locale.
        }
    }
]

Example

[
      {
        "code": "unique_size",
        "labels": {
          "en_US": "Unique size",
          "fr_FR": "Taille unique"
        }
      },
      {
        "code": "size_27",
        "labels": {
          "en_US": "Size 27",
          "fr_FR": "Taille 36"
        }
      },
      {
        "code": "small",
        "labels": {
          "en_US": "S",
          "fr_FR": "S"
        }
      }
    ]

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Get an attribute option for a given attribute of a given asset family

This endpoint allows you to get the information about a given asset attribute option


REQUEST

get /api/rest/v1/asset-families/{asset_family_code}/attributes/{attribute_code}/options/{code}

Path parameters

asset_family_code (string) • This path parameter is used to specify the unique identifier of the asset family you want to retrieve or manipulate. It is essential for identifying the specific asset family in the API requests. Ensure that the asset family code is correctly formatted and corresponds to an existing asset family in the system.

attribute_code (string) • This path parameter is used to specify the unique identifier of the attribute you want to retrieve or manipulate. It is essential for identifying the specific attribute in the API requests. Ensure that the attribute code is correctly formatted and corresponds to an existing attribute in the system.

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Returns the content of the asset attribute option in JSON format

Body Format application/json

{

code (string) • Attribute's option code

labels (object) : {
    {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Attribute label for the specified locale.
  }

}

Example

{
      "code": "small",
      "labels": {
        "en_US": "S",
        "fr_FR": "S"
      }
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 404,
      "message": "Resource `my_resource_code` does not exist."
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Update/create an asset attribute option for a given asset family

This endpoint allows you to update a given option for a given attribute and a given asset family. Learn more about the Update behavior. Note that if the option does not already exist for the given attribute of the given asset family, it creates it.


REQUEST

patch /api/rest/v1/asset-families/{asset_family_code}/attributes/{attribute_code}/options/{code}

Path parameters

asset_family_code (string) • This path parameter is used to specify the unique identifier of the asset family you want to retrieve or manipulate. It is essential for identifying the specific asset family in the API requests. Ensure that the asset family code is correctly formatted and corresponds to an existing asset family in the system.

attribute_code (string) • This path parameter is used to specify the unique identifier of the attribute you want to retrieve or manipulate. It is essential for identifying the specific attribute in the API requests. Ensure that the attribute code is correctly formatted and corresponds to an existing attribute in the system.

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/json', no other value allowed

Body

Follow the standard format of the entity

{

code (string) • Attribute's option code

labels (object, [] by default) : {
        {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Attribute label for the specified locale.
    }

}

Example

{
      "code": "small",
      "labels": {
        "en_US": "S",
        "fr_FR": "S"
      }
    }

RESPONSES

This response indicates that the entity was successfully created. The server has fulfilled the request and created a new resource. The response includes a Location header that contains the URI of the newly created resource.

Headers

Location • URI of the created resource

Body Format application/json

Ø

This response indicates that the request was successful and that there is no content to return. It is typically used in response to a successful update operation where the server does not need to return any data to the client.

Headers

Location • URI of the updated resource

Body Format application/json

Ø

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the server understands the request but cannot process it due to validation errors in the provided data.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

errors (array [object]) : [
        {
         property (string) • Name of the invalid property
         message (string) • Human-readable error message
         attribute (string,null) • Attribute code (if the error is on an attribute)
         locale (string,null) • Locale code involved in the error, if any
         scope (string,null) • Channel code involved in the error, if any
        }
    ]

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Validation failed.",
      "errors": [
        {
          "property": "family",
          "message": "The tshirts family does not exist in your PIM."
        },
        {
          "property": "categories",
          "message": "The \"tvs_projectors\" category does not exist."
        },
        {
          "property": "associations.SUBSTITUTION.groups",
          "message": "You should associate existing groups. The \"promotion\" group does not exist."
        },
        {
          "property": "values",
          "message": "The \"description\" attribute requires a channel.",
          "attribute": "description",
          "locale": "en_US",
          "scope": null
        },
        {
          "property": "values",
          "message": "The \"name\" attribute requires a locale.",
          "attribute": "name",
          "locale": null,
          "scope": null
        }
      ],
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

Asset media file

Create a new media file for an asset

This endpoint allows you to create a new media file and associate it to a media file attribute value of an asset


REQUEST

post /api/rest/v1/asset-media-files

Path parameters

Ø

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/json', no other value allowed

Body

Given as form-data

file (string / binary) • The binary of the media file


RESPONSES

This response indicates that the entity was successfully created. The server has fulfilled the request and created a new resource. The response includes a Location header that contains the URI of the newly created resource.

Headers

Location • URI of the created resource

asset-media-file-code • Code of the created asset media file

Body Format application/json

Ø

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the server understands the request but cannot process it due to validation errors in the provided data.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

errors (array [object]) : [
        {
         property (string) • Name of the invalid property
         message (string) • Human-readable error message
         attribute (string,null) • Attribute code (if the error is on an attribute)
         locale (string,null) • Locale code involved in the error, if any
         scope (string,null) • Channel code involved in the error, if any
        }
    ]

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Validation failed.",
      "errors": [
        {
          "property": "family",
          "message": "The tshirts family does not exist in your PIM."
        },
        {
          "property": "categories",
          "message": "The \"tvs_projectors\" category does not exist."
        },
        {
          "property": "associations.SUBSTITUTION.groups",
          "message": "You should associate existing groups. The \"promotion\" group does not exist."
        },
        {
          "property": "values",
          "message": "The \"description\" attribute requires a channel.",
          "attribute": "description",
          "locale": "en_US",
          "scope": null
        },
        {
          "property": "values",
          "message": "The \"name\" attribute requires a locale.",
          "attribute": "name",
          "locale": null,
          "scope": null
        }
      ],
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

Download the media file associated to an asset

This endpoint allows you to download a given media file that is associated with an asset


REQUEST

get /api/rest/v1/asset-media-files/{code}

Path parameters

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Body

Ø


RESPONSES

Returns the binary of the media file

Body Format Mime-type of the media file
Media file binary

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format Mime-type of the media file
Media file binary

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format Mime-type of the media file
Media file binary

Asset

Get the list of the assets of a given asset family

This endpoint allows you to get a list of assets of a given asset family. Assets are paginated. This endpoint is case sensitive on the asset family code.


REQUEST

get /api/rest/v1/asset-families/{asset_family_code}/assets

Path parameters

asset_family_code (string) • This path parameter is used to specify the unique identifier of the asset family you want to retrieve or manipulate. It is essential for identifying the specific asset family in the API requests. Ensure that the asset family code is correctly formatted and corresponds to an existing asset family in the system.

Query parameters

search (string) • Filter assets, for more details see the Asset filters section.

channel (string) • Filter asset values to return scopable asset attributes for the given channel as well as the non localizable/non scopable asset attributes, for more details see the Filter asset values by channel section.

locales (string) • Filter asset values to return localizable asset attributes for the given locales as well as the non localizable/non scopable asset attributes, for more details see the Filter asset values by locale section.

search_after (string, cursor to the first page by default) • Cursor when using the search_after pagination method type. It is essential for navigating through pages in cursor-based pagination, providing more efficient pagination for large datasets. Should never be set manually, see Pagination section for more details.

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Return the assets of the given asset family paginated. The response is paginated and includes links to navigate through the pages. Only search_after pagination is used.

Body Format application/json

{

_links (object) : {
    self (object) : {
        href (string) • URI of the current page of resources
    }
    first (object) : {
        href (string) • URI of the first page of resources
    }
    previous (object) : {
        href (string) • URI of the previous page of resources
    }
    next (object) : {
        href (string) • URI of the next page of resources
    }
  }

_embedded (object) : {
    items (array) : [
        {
          _links (object) : {
              self (object) : {
                  href (string) • URI of the resource
              }
          }
          code (string) • Code of the asset
          asset_family_code (string) • Code of the asset family
          values (object) • Asset attributes values. See the Focus on the asset values section for more details.
          created (string) • Date of creation
          updated (string) • Date of the last update
        }
    ]
  }

}

Example

{
      "_links": {
        "self": {
          "href": "https://demo.akeneo.com/api/rest/v1/asset-families/model_pictures/assets"
        },
        "first": {
          "href": "https://demo.akeneo.com/api/rest/v1/asset-families/model_pictures/assets"
        },
        "next": {
          "href": "https://demo.akeneo.com/api/rest/v1/asset-families/model_pictures/assets?search_after=alice_blouse_model_picture"
        }
      },
      "_embedded": {
        "items": [
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/asset-families/model_pictures/assets/allie_jean_model_picture"
              }
            },
            "code": "allie_jean_model_picture",
            "asset_family_code": "model_pictures",
            "values": {
              "media_file": [
                {
                  "locale": null,
                  "channel": null,
                  "data": "0/0/9/d/009d38fe8c97e16f6b48bbf8f6cf8a9564401cc9_allie_jean_model_picture.png",
                  "_links": {
                    "download": {
                      "href": "https://demo.akeneo.com/api/rest/v1/asset-media-files/0/0/9/d/009d38fe8c97e16f6b48bbf8f6cf8a9564401cc9_allie_jean_model_picture.png"
                    },
                    "share_link": {
                      "href": "https://demo.asset.akeneo.com/model_pictures/media_file/allie_jean_model_picture.png"
                    }
                  }
                }
              ],
              "media_link": [
                {
                  "locale": null,
                  "channel": null,
                  "data": "allie_jean_model_picture.png",
                  "linked_data": {
                    "full_url": "https://example.com/allie_jean_model_picture.png",
                    "prefix": "https://example.com/",
                    "suffix": null
                  }
                }
              ],
              "model_is_wearing_size": [
                {
                  "locale": null,
                  "channel": null,
                  "data": "size_27"
                }
              ],
              "warning_mention": [
                {
                  "data": "Photo not retouched",
                  "locale": "en_US",
                  "channel": null
                },
                {
                  "data": "Photo non retouchée",
                  "locale": "fr_FR",
                  "channel": null
                }
              ]
            },
            "created": "2021-05-31T09:23:34+00:00",
            "updated": "2021-05-31T09:23:34+00:00"
          },
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/asset-families/model_pictures/assets/amy_socks_model_picture"
              }
            },
            "code": "amy_socks_model_picture",
            "asset_family_code": "model_pictures",
            "values": {
              "media_file": [
                {
                  "locale": null,
                  "channel": null,
                  "data": "0/0/9/d/009d38fe8c97e16f6b48bbf8f6cf8a9564401cc9_amy_socks_model_picture.png",
                  "_links": {
                    "download": {
                      "href": "https://demo.akeneo.com/api/rest/v1/asset-media-files/0/0/9/d/009d38fe8c97e16f6b48bbf8f6cf8a9564401cc9_amy_socks_model_picture.png"
                    },
                    "share_link": {
                      "href": "https://demo.asset.akeneo.com/model_pictures/media_file/amy_socks_model_picture.jpg"
                    }
                  }
                }
              ],
              "media_link": [
                {
                  "locale": null,
                  "channel": null,
                  "data": "amy_socks_model_picture.png",
                  "linked_data": {
                    "full_url": "https://example.com/amy_socks_model_picture.png",
                    "prefix": "https://example.com/",
                    "suffix": null
                  }
                }
              ],
              "model_is_wearing_size": [
                {
                  "locale": null,
                  "channel": null,
                  "data": "unique_size"
                }
              ],
              "warning_mention": [
                {
                  "data": "Photo not retouched",
                  "locale": "en_US",
                  "channel": null
                },
                {
                  "data": "Photo non retouchée",
                  "locale": "fr_FR",
                  "channel": null
                }
              ]
            },
            "created": "2021-05-31T09:23:34+00:00",
            "updated": "2021-05-31T09:23:34+00:00"
          },
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/asset-families/model_pictures/assets/alice_blouse_model_picture"
              }
            },
            "code": "alice_blouse_model_picture",
            "asset_family_code": "model_pictures",
            "values": {
              "media_file": [
                {
                  "locale": null,
                  "channel": null,
                  "data": "0/0/9/d/009d38fe8c97e16f6b48bbf8f6cf8a9564401cc9_alice_blouse_model_picture.png",
                  "_links": {
                    "download": {
                      "href": "https://demo.akeneo.com/api/rest/v1/asset-media-files/0/0/9/d/009d38fe8c97e16f6b48bbf8f6cf8a9564401cc9_alice_blouse_model_picture.png"
                    },
                    "share_link": {
                      "href": "https://demo.asset.akeneo.com/model_pictures/media_file/alice_blouse_model_picture.png"
                    }
                  }
                }
              ],
              "media_link": [
                {
                  "locale": null,
                  "channel": null,
                  "data": "alice_blouse_model_picture.png",
                  "linked_data": {
                    "full_url": "https://example.com/alice_blouse_model_picture.png",
                    "prefix": "https://example.com/",
                    "suffix": null
                  }
                }
              ],
              "model_is_wearing_size": [
                {
                  "locale": null,
                  "channel": null,
                  "data": "small"
                }
              ],
              "warning_mention": [
                {
                  "data": "Photo retouched",
                  "locale": "en_US",
                  "channel": null
                },
                {
                  "data": "Photo non retouchée",
                  "locale": "fr_FR",
                  "channel": null
                }
              ]
            },
            "created": "2021-05-31T09:23:34+00:00",
            "updated": "2021-05-31T09:23:34+00:00"
          }
        ]
      }
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the server understands the request but cannot process it due to validation errors in the provided data.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

errors (array [object]) : [
        {
         property (string) • Name of the invalid property
         message (string) • Human-readable error message
         attribute (string,null) • Attribute code (if the error is on an attribute)
         locale (string,null) • Locale code involved in the error, if any
         scope (string,null) • Channel code involved in the error, if any
        }
    ]

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Validation failed.",
      "errors": [
        {
          "property": "family",
          "message": "The tshirts family does not exist in your PIM."
        },
        {
          "property": "categories",
          "message": "The \"tvs_projectors\" category does not exist."
        },
        {
          "property": "associations.SUBSTITUTION.groups",
          "message": "You should associate existing groups. The \"promotion\" group does not exist."
        },
        {
          "property": "values",
          "message": "The \"description\" attribute requires a channel.",
          "attribute": "description",
          "locale": "en_US",
          "scope": null
        },
        {
          "property": "values",
          "message": "The \"name\" attribute requires a locale.",
          "attribute": "name",
          "locale": null,
          "scope": null
        }
      ],
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

Update/create several assets

This endpoint allows you to update and/or create several assets of one given asset family at once. Learn more about the Update behavior. Note that if the asset does not already exist for the given asset family, it creates it. This endpoint is case sensitive on the asset family code.


REQUEST

patch /api/rest/v1/asset-families/{asset_family_code}/assets

Path parameters

asset_family_code (string) • This path parameter is used to specify the unique identifier of the asset family you want to retrieve or manipulate. It is essential for identifying the specific asset family in the API requests. Ensure that the asset family code is correctly formatted and corresponds to an existing asset family in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/json', no other value allowed

Body

Follow the standard format of the entity

{

   [

       code (string) • Code of the asset

       asset_family_code (string) • Code of the asset family

       values (object) • Asset attributes values. See the Focus on the asset values section for more details.

       created (string) • Date of creation

       updated (string) • Date of the last update

   ]

}

Example

[
      {
        "code": "sku_54628_picture1",
        "values": {
          "media_preview": [
            {
              "data": "sku_54628_picture1.jpg",
              "channel": null,
              "locale": null
            }
          ],
          "model_wears_size": [
            {
              "data": "s",
              "channel": null,
              "locale": null
            }
          ],
          "photographer": [
            {
              "data": "ben_levy",
              "channel": null,
              "locale": null
            }
          ],
          "main_colors": [
            {
              "data": [
                "red",
                "purple"
              ],
              "channel": null,
              "locale": null
            }
          ],
          "end_of_use_date": [
            {
              "data": "02/03/2021",
              "channel": null,
              "locale": null
            }
          ]
        },
        "created": "2021-05-31T09:23:34+00:00",
        "updated": "2021-05-31T09:23:34+00:00"
      },
      {
        "code": "sku_54628_picture2",
        "values": {
          "media_preview": [
            {
              "data": "sku_54628_picture2.jpg",
              "channel": null,
              "locale": null
            }
          ],
          "model_wears_size": [
            {
              "data": "s",
              "channel": null,
              "locale": null
            }
          ],
          "photographer": [
            {
              "data": "ben_levy",
              "channel": null,
              "locale": null
            }
          ],
          "main_colors": [
            {
              "data": [
                "blue",
                "white"
              ],
              "channel": null,
              "locale": null
            }
          ],
          "end_of_use_date": [
            {
              "data": "02/03/2021",
              "channel": null,
              "locale": null
            }
          ]
        },
        "created": "2021-05-31T09:23:34+00:00",
        "updated": "2021-05-31T09:23:34+00:00"
      },
      {
        "code": "sku_54628_picture3",
        "values": {
          "media_preview": [
            {
              "data": "sku_54628_picture3.jpg",
              "channel": null,
              "locale": null
            }
          ],
          "model_wears_size": [
            {
              "data": "s",
              "channel": null,
              "locale": null
            }
          ],
          "photographer": [
            {
              "data": "ben_levy",
              "channel": null,
              "locale": null
            }
          ],
          "main_colors": [
            {
              "data": [
                "purple"
              ],
              "channel": null,
              "locale": null
            }
          ],
          "end_of_use_date": [
            {
              "data": "02/03/2021",
              "channel": null,
              "locale": null
            }
          ]
        },
        "created": "2021-05-31T09:23:34+00:00",
        "updated": "2021-05-31T09:23:34+00:00"
      }
    ]

RESPONSES

Returns an JSON array in which each object gives you the status of each asset creation or update

Body Format application/json

[
    {

       code (string) • Resource code

       status_code (integer) • HTTP status code, see Client errors to understand the meaning of each code

       message (string) • Message explaining the error
    }
]

Example

[
      {
        "code": "sku_54628_picture1",
        "status_code": 204
      },
      {
        "code": "sku_54628_picture2",
        "status_code": 422,
        "message": "Property 'group' does not exist."
      },
      {
        "code": "sku_54628_picture3",
        "status_code": 201
      }
    ]

This response indicates that the server cannot process the request due to a client error, such as malformed request syntax, invalid request message framing, or deceptive request routing. It is typically used when the server cannot understand the request due to invalid JSON or other client-side issues.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 400,
      "message": "Invalid JSON message received"
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the request entity is larger than the server is willing or able to process. It can occur when the number of resources in a batch request exceeds the maximum allowed limit.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 413,
      "message": "Too many resources to process, 100 is the maximum allowed."
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

Get an asset of a given asset family

This endpoint allows you to get the information about a given asset for a given asset family. This endpoint is case sensitive on the asset family code.


REQUEST

get /api/rest/v1/asset-families/{asset_family_code}/assets/{code}

Path parameters

asset_family_code (string) • This path parameter is used to specify the unique identifier of the asset family you want to retrieve or manipulate. It is essential for identifying the specific asset family in the API requests. Ensure that the asset family code is correctly formatted and corresponds to an existing asset family in the system.

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Returns the content of the asset in JSON standard format

Body Format application/json

{

code (string) • Code of the asset

asset_family_code (string) • Code of the asset family

values (object) • Asset attributes values. See the Focus on the asset values section for more details.

created (string) • Date of creation

updated (string) • Date of the last update

}

Example

{
      "code": "sku_54628_picture1",
      "values": {
        "media_preview": [
          {
            "locale": null,
            "channel": null,
            "data": "sku_54628_picture1.jpg"
          }
        ],
        "model_wears_size": [
          {
            "locale": null,
            "channel": null,
            "data": "s"
          }
        ],
        "photographer": [
          {
            "locale": null,
            "channel": null,
            "data": "ben_levy"
          }
        ],
        "main_colors": [
          {
            "locale": null,
            "channel": null,
            "data": [
              "red",
              "purple"
            ]
          }
        ],
        "end_of_use_date": [
          {
            "locale": null,
            "channel": null,
            "data": "02/03/2021"
          }
        ]
      },
      "created": "2021-05-31T09:23:34+00:00",
      "updated": "2021-05-31T09:23:34+00:00"
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 404,
      "message": "Resource `my_resource_code` does not exist."
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Update/create an asset

This endpoint allows you to update a given asset of a given asset family. Learn more about the Update behavior. Note that if the asset does not already exist for the given asset family, it creates it. This endpoint is case sensitive on the asset family code.


REQUEST

patch /api/rest/v1/asset-families/{asset_family_code}/assets/{code}

Path parameters

asset_family_code (string) • This path parameter is used to specify the unique identifier of the asset family you want to retrieve or manipulate. It is essential for identifying the specific asset family in the API requests. Ensure that the asset family code is correctly formatted and corresponds to an existing asset family in the system.

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/json', no other value allowed

Body

Follow the standard format of the entity

{

code (string) • Code of the asset

asset_family_code (string) • Code of the asset family

values (object) • Asset attributes values. See the Focus on the asset values section for more details.

created (string) • Date of creation

updated (string) • Date of the last update

}

Example

{
      "code": "sku_54628_picture1",
      "values": {
        "media_preview": [
          {
            "locale": null,
            "channel": null,
            "data": "sku_54628_picture1.jpg"
          }
        ],
        "model_wears_size": [
          {
            "locale": null,
            "channel": null,
            "data": "s"
          }
        ],
        "photographer": [
          {
            "locale": null,
            "channel": null,
            "data": "ben_levy"
          }
        ],
        "main_colors": [
          {
            "locale": null,
            "channel": null,
            "data": [
              "red",
              "purple"
            ]
          }
        ],
        "end_of_use_date": [
          {
            "locale": null,
            "channel": null,
            "data": "02/03/2021"
          }
        ]
      },
      "created": "2021-05-31T09:23:34+00:00",
      "updated": "2021-05-31T09:23:34+00:00"
    }

RESPONSES

This response indicates that the entity was successfully created. The server has fulfilled the request and created a new resource. The response includes a Location header that contains the URI of the newly created resource.

Headers

Location • URI of the created resource

Body Format application/json

Ø

This response indicates that the request was successful and that there is no content to return. It is typically used in response to a successful update operation where the server does not need to return any data to the client.

Headers

Location • URI of the updated resource

Body Format application/json

Ø

This response indicates that the server cannot process the request due to a client error, such as malformed request syntax, invalid request message framing, or deceptive request routing. It is typically used when the server cannot understand the request due to invalid JSON or other client-side issues.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 400,
      "message": "Invalid JSON message received"
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the server understands the request but cannot process it due to validation errors in the provided data.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

errors (array [object]) : [
        {
         property (string) • Name of the invalid property
         message (string) • Human-readable error message
         attribute (string,null) • Attribute code (if the error is on an attribute)
         locale (string,null) • Locale code involved in the error, if any
         scope (string,null) • Channel code involved in the error, if any
        }
    ]

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Validation failed.",
      "errors": [
        {
          "property": "family",
          "message": "The tshirts family does not exist in your PIM."
        },
        {
          "property": "categories",
          "message": "The \"tvs_projectors\" category does not exist."
        },
        {
          "property": "associations.SUBSTITUTION.groups",
          "message": "You should associate existing groups. The \"promotion\" group does not exist."
        },
        {
          "property": "values",
          "message": "The \"description\" attribute requires a channel.",
          "attribute": "description",
          "locale": "en_US",
          "scope": null
        },
        {
          "property": "values",
          "message": "The \"name\" attribute requires a locale.",
          "attribute": "name",
          "locale": null,
          "scope": null
        }
      ],
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

Delete an asset

This endpoint allows you to delete a given asset. This endpoint is case sensitive on the asset family code.


REQUEST

delete /api/rest/v1/asset-families/{asset_family_code}/assets/{code}

Path parameters

asset_family_code (string) • This path parameter is used to specify the unique identifier of the asset family you want to retrieve or manipulate. It is essential for identifying the specific asset family in the API requests. Ensure that the asset family code is correctly formatted and corresponds to an existing asset family in the system.

code (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the code is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

No content to return. Means that the deletion was successful.

Body Format application/json

Ø

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 404,
      "message": "Resource `my_resource_code` does not exist."
    }

Catalogs for Apps

Make sure you have a valid App token with scopes related to catalogs authorized in order to use the following endpoints. You can find information about these scopes in the section ask for catalog scopes

Catalogs

Get the list of owned catalogs

This endpoint allows you to get the list of catalogs you owned


REQUEST

get /api/rest/v1/catalogs

Path parameters

Ø

Query parameters

page (integer, 1 by default) • Specify which page of results to retrieve when using pagination. It is useful for navigating through large datasets by breaking them into smaller, manageable pages. See Pagination section for more details.

limit (integer, 10 by default) • Specify the maximum number of results to return per page. It is useful for controlling the amount of data returned in a single request, especially when dealing with large datasets. See Pagination section for more details.

Headers

Authorization • Equal to 'Bearer xxx', 'xxx' being the App authentication token, see documentation for getting an app token

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Return the paginated catalogs owned by the user making the request. The response is paginated and includes links to navigate through the pages.

Body Format application/json

{

_links (object) : {
    self (object) : {
        href (string) • URI of the current page of resources
    }
    first (object) : {
        href (string) • URI of the first page of resources
    }
    previous (object) : {
        href (string) • URI of the previous page of resources
    }
    next (object) : {
        href (string) • URI of the next page of resources
    }
  }

current_page (integer) • Current page number

_embedded (object) : {
    items (array) : [
        {
          _links (object) : {
              self (object) : {
                  href (string) • URI of the resource
              }
          }
          id (string) • Catalog id
          name (string) • Catalog name
          enabled (boolean) • Whether the catalog is enabled or not
          managed_currencies (array [string]) • List of currency codes • List of currency codes
          managed_locales (array [string]) • List of locale codes • List of locale codes
        }
    ]
  }

}

Example

{
      "_links": {
        "self": {
          "href": "https://demo.akeneo.com/api/rest/v1/catalogs?page=3&limit=2"
        },
        "first": {
          "href": "https://demo.akeneo.com/api/rest/v1/catalogs?page=1&limit=2"
        },
        "previous": {
          "href": "https://demo.akeneo.com/api/rest/v1/catalogs?page=2&limit=2"
        },
        "next": {
          "href": "https://demo.akeneo.com/api/rest/v1/catalogs?page=4&limit=2"
        }
      },
      "current_page": 3,
      "_embedded": {
        "items": [
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/catalogs/12351d98-200e-4bbc-aa19-7fdda1bd14f2"
              }
            },
            "id": "12351d98-200e-4bbc-aa19-7fdda1bd14f2",
            "name": "Store EUROPE",
            "enabled": false,
            "managed_currencies": [
              "EUR",
              "GBP"
            ],
            "managed_locales": [
              "fr_FR",
              "en_UK",
              "de_DE",
              "it_IT",
              "es_ES"
            ]
          },
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/catalogs/092c5f22-ecd8-485f-97e9-3b78098e1386"
              }
            },
            "id": "092c5f22-ecd8-485f-97e9-3b78098e1386",
            "name": "Store US",
            "enabled": true,
            "managed_currencies": [
              "USD"
            ],
            "managed_locales": [
              "en_US",
              "es_ES"
            ]
          }
        ]
      }
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

Create a new catalog

This endpoint allows you to create a new catalog


REQUEST

post /api/rest/v1/catalogs

Path parameters

Ø

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', 'xxx' being the App authentication token, see documentation for getting an app token

Content-type • Equal to 'application/json', no other value allowed

Body

Follow the standard format of the entity

{

name (string) • Catalog name

managed_currencies (array[string]) • List of currency codes

managed_locales (array[string]) • List of locale codes

}

Example

{
      "name": "My app catalog",
      "managed_currencies": [
        "EUR",
        "USD",
        "GBP"
      ],
      "managed_locales": [
        "fr_FR",
        "en_US"
      ]
    }

RESPONSES

Created

Body Format application/json

{

id (string) • Catalog id

name (string) • Catalog name

enabled (boolean) • Whether the catalog is enabled or not

managed_currencies (array [string]) • List of currency codes

managed_locales (array [string]) • List of locale codes

}

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the server understands the request but cannot process it due to validation errors in the provided data.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

errors (array [object]) : [
        {
         property (string) • Name of the invalid property
         message (string) • Human-readable error message
         attribute (string,null) • Attribute code (if the error is on an attribute)
         locale (string,null) • Locale code involved in the error, if any
         scope (string,null) • Channel code involved in the error, if any
        }
    ]

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Validation failed.",
      "errors": [
        {
          "property": "family",
          "message": "The tshirts family does not exist in your PIM."
        },
        {
          "property": "categories",
          "message": "The \"tvs_projectors\" category does not exist."
        },
        {
          "property": "associations.SUBSTITUTION.groups",
          "message": "You should associate existing groups. The \"promotion\" group does not exist."
        },
        {
          "property": "values",
          "message": "The \"description\" attribute requires a channel.",
          "attribute": "description",
          "locale": "en_US",
          "scope": null
        },
        {
          "property": "values",
          "message": "The \"name\" attribute requires a locale.",
          "attribute": "name",
          "locale": null,
          "scope": null
        }
      ],
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

Get a catalog

This endpoint allows you to get the information about a catalog


REQUEST

get /api/rest/v1/catalogs/{id}

Path parameters

id (string) • This path parameter is used to specify the unique identifier of the catalog you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the catalog ID is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', 'xxx' being the App authentication token, see documentation for getting an app token

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Return the catalog

Body Format application/json

{

id (string) • Catalog id

name (string) • Catalog name

enabled (boolean) • Whether the catalog is enabled or not

managed_currencies (array [string]) • List of currency codes

managed_locales (array [string]) • List of locale codes

}

Example

{
      "id": "12351d98-200e-4bbc-aa19-7fdda1bd14f2",
      "name": "My app catalog",
      "enabled": false,
      "managed_currencies": [
        "EUR",
        "USD",
        "GBP"
      ],
      "managed_locales": [
        "fr_FR",
        "en_US"
      ]
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 404,
      "message": "Resource `my_resource_code` does not exist."
    }

Update a catalog

This endpoint allows you to update a catalog


REQUEST

patch /api/rest/v1/catalogs/{id}

Path parameters

id (string) • This path parameter is used to specify the unique identifier of the catalog you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the catalog ID is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', 'xxx' being the App authentication token, see documentation for getting an app token

Content-type • Equal to 'application/json', no other value allowed

Body

Follow the standard format of the entity

{

name (string) • Catalog name

managed_currencies (array[string]) • List of currency codes

managed_locales (array[string]) • List of locale codes

}

Example

{
      "name": "My app catalog",
      "managed_currencies": [
        "EUR",
        "USD",
        "GBP"
      ],
      "managed_locales": [
        "fr_FR",
        "en_US"
      ]
    }

RESPONSES

Updated

Body Format application/json

{

id (string) • Catalog id

name (string) • Catalog name

enabled (boolean) • Whether the catalog is enabled or not

managed_currencies (array [string]) • List of currency codes

managed_locales (array [string]) • List of locale codes

}

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 404,
      "message": "Resource `my_resource_code` does not exist."
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the server understands the request but cannot process it due to validation errors in the provided data.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

errors (array [object]) : [
        {
         property (string) • Name of the invalid property
         message (string) • Human-readable error message
         attribute (string,null) • Attribute code (if the error is on an attribute)
         locale (string,null) • Locale code involved in the error, if any
         scope (string,null) • Channel code involved in the error, if any
        }
    ]

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Validation failed.",
      "errors": [
        {
          "property": "family",
          "message": "The tshirts family does not exist in your PIM."
        },
        {
          "property": "categories",
          "message": "The \"tvs_projectors\" category does not exist."
        },
        {
          "property": "associations.SUBSTITUTION.groups",
          "message": "You should associate existing groups. The \"promotion\" group does not exist."
        },
        {
          "property": "values",
          "message": "The \"description\" attribute requires a channel.",
          "attribute": "description",
          "locale": "en_US",
          "scope": null
        },
        {
          "property": "values",
          "message": "The \"name\" attribute requires a locale.",
          "attribute": "name",
          "locale": null,
          "scope": null
        }
      ],
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

Delete a catalog

This endpoint allows you to delete a catalog.


REQUEST

delete /api/rest/v1/catalogs/{id}

Path parameters

id (string) • This path parameter is used to specify the unique identifier of the catalog you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the catalog ID is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', 'xxx' being the App authentication token, see documentation for getting an app token

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

No content to return. Means that the deletion was successful.

Body Format application/json

Ø

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 404,
      "message": "Resource `my_resource_code` does not exist."
    }

Duplicate a catalog

This endpoint allows you to duplicate an existing catalog. Note that the duplicated catalog will be deactivated (set to false).


REQUEST

post /api/rest/v1/catalogs/{id}/duplicate

Path parameters

id (string) • This path parameter is used to specify the unique identifier of the catalog you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the catalog ID is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', 'xxx' being the App authentication token, see documentation for getting an app token

Content-type • Equal to 'application/json', no other value allowed

Body

Follow the standard format of the entity

{

name (string) • Catalog name (optional for duplication)

managed_currencies (array[string]) • List of currency codes

managed_locales (array[string]) • List of locale codes

skip_required_checks (boolean, false by default) • Option to skip required checks

}

Example

{}

RESPONSES

Catalog successfully duplicated

Body Format application/json

{

id (string) • Catalog id

name (string) • Catalog name

enabled (boolean) • Whether the catalog is enabled or not

managed_currencies (array [string]) • List of currency codes

managed_locales (array [string]) • List of locale codes

}

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 404,
      "message": "Resource `my_resource_code` does not exist."
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the server understands the request but cannot process it due to validation errors in the provided data.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

errors (array [object]) : [
        {
         property (string) • Name of the invalid property
         message (string) • Human-readable error message
         attribute (string,null) • Attribute code (if the error is on an attribute)
         locale (string,null) • Locale code involved in the error, if any
         scope (string,null) • Channel code involved in the error, if any
        }
    ]

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Validation failed.",
      "errors": [
        {
          "property": "family",
          "message": "The tshirts family does not exist in your PIM."
        },
        {
          "property": "categories",
          "message": "The \"tvs_projectors\" category does not exist."
        },
        {
          "property": "associations.SUBSTITUTION.groups",
          "message": "You should associate existing groups. The \"promotion\" group does not exist."
        },
        {
          "property": "values",
          "message": "The \"description\" attribute requires a channel.",
          "attribute": "description",
          "locale": "en_US",
          "scope": null
        },
        {
          "property": "values",
          "message": "The \"name\" attribute requires a locale.",
          "attribute": "name",
          "locale": null,
          "scope": null
        }
      ],
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

Catalog products

Get the list of product uuids

This endpoint allows you to get the list of uuids of products contained in a catalog. Please, note that a disabled catalog can return an HTTP 200 with a payload containing an error message, for more details see the App Catalog section.


REQUEST

get /api/rest/v1/catalogs/{id}/product-uuids

Path parameters

id (string) • This path parameter is used to specify the unique identifier of the catalog you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the catalog ID is correctly formatted and corresponds to an existing entity in the system.

Query parameters

search_after (string, cursor to the first page by default) • Cursor when using the search_after pagination method type. It is essential for navigating through pages in cursor-based pagination, providing more efficient pagination for large datasets. Should never be set manually, see Pagination section for more details.

limit (integer, 10 by default) • Specify the maximum number of results to return per page. It is useful for controlling the amount of data returned in a single request, especially when dealing with large datasets. See Pagination section for more details.

updated_before (string) • Filter products that have been updated BEFORE the provided date. It is useful for retrieving products that haven't been modified since a specific date, which is essential for historical data analysis and reporting. This filter uses the PIM products updated date and is only available on Catalogs endpoints.

updated_after (string) • Filter products that have been updated AFTER the provided date. It is useful for retrieving only recently modified products, which is essential for synchronization and incremental data processing. This filter uses the PIM products updated date and is only available on Catalogs endpoints.

with_count (boolean) • Return the count of items in the response. Be careful with that, on a big catalog, it can decrease performance in a significant way. It is useful for understanding the size of the dataset being returned, especially when dealing with large collections. Use it judiciously to avoid performance issues.

Headers

Authorization • Equal to 'Bearer xxx', 'xxx' being the App authentication token, see documentation for getting an app token

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Return the paginated product uuids. The response is paginated and includes links to navigate through the pages. Only search_after pagination is used.

Body Format application/json

{

_links (object) : {
    self (object) : {
        href (string) • URI of the current page of resources
    }
    first (object) : {
        href (string) • URI of the first page of resources
    }
    previous (object) : {
        href (string) • URI of the previous page of resources
    }
    next (object) : {
        href (string) • URI of the next page of resources
    }
  }

items_count (integer) • Total number of items (only if with_count parameter is set to true)

_embedded (object) : {
    items (array) : [
        {
        }
    ]
  }

}

Example

{
      "_links": {
        "self": {
          "href": "https://demo.akeneo.com/api/rest/v1/catalogs/12351d98-200e-4bbc-aa19-7fdda1bd14f2/product-uuids&with_count=true"
        },
        "first": {
          "href": "https://demo.akeneo.com/api/rest/v1/catalogs/12351d98-200e-4bbc-aa19-7fdda1bd14f2/product-uuids&with_count=true"
        },
        "next": {
          "href": "https://demo.akeneo.com/api/rest/v1/catalogs/12351d98-200e-4bbc-aa19-7fdda1bd14f2/product-uuids?search_after=eddfbd2a-abc7-488d-b9e3-41289c824f80&with_count=true"
        }
      },
      "items_count": 10,
      "_embedded": {
        "items": [
          "844c736b-a19b-48a6-a354-6056044729f0",
          "b2a683ef-4a91-4ed3-b3fa-76dab065a8d5",
          "eddfbd2a-abc7-488d-b9e3-41289c824f80"
        ]
      }
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 404,
      "message": "Resource `my_resource_code` does not exist."
    }

Get the list of products related to a catalog

This endpoint allows you to get the list of products related to a catalog. Products are paginated and they can be filtered. In the Enterprise Edition, permissions based on your app settings are applied to the set of products you request. Please, note that a disabled catalog can return an HTTP 200 with a payload containing an error message, for more details see the App Catalog section.


REQUEST

get /api/rest/v1/catalogs/{id}/products

Path parameters

id (string) • This path parameter is used to specify the unique identifier of the catalog you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the catalog ID is correctly formatted and corresponds to an existing entity in the system.

Query parameters

search_after (string, cursor to the first page by default) • Cursor when using the search_after pagination method type. It is essential for navigating through pages in cursor-based pagination, providing more efficient pagination for large datasets. Should never be set manually, see Pagination section for more details.

limit (integer, 10 by default) • Specify the maximum number of results to return per page. It is useful for controlling the amount of data returned in a single request, especially when dealing with large datasets. See Pagination section for more details.

updated_before (string) • Filter products that have been updated BEFORE the provided date. It is useful for retrieving products that haven't been modified since a specific date, which is essential for historical data analysis and reporting. This filter uses the PIM products updated date and is only available on Catalogs endpoints.

updated_after (string) • Filter products that have been updated AFTER the provided date. It is useful for retrieving only recently modified products, which is essential for synchronization and incremental data processing. This filter uses the PIM products updated date and is only available on Catalogs endpoints.

Headers

Authorization • Equal to 'Bearer xxx', 'xxx' being the App authentication token, see documentation for getting an app token

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Return the paginated products or error message. The response is paginated and includes links to navigate through the pages. Only search_after pagination is used.

Body Format application/json

{

_links (object) : {
    self (object) : {
        href (string) • URI of the current page of resources
    }
    first (object) : {
        href (string) • URI of the first page of resources
    }
    previous (object) : {
        href (string) • URI of the previous page of resources
    }
    next (object) : {
        href (string) • URI of the next page of resources
    }
  }

_embedded (object) : {
    items (array) : [
        {
          uuid (string) • Product UUID
          identifier (string) • Product identifier, i.e. the value of the only pim_catalog_identifier attribute
          enabled (boolean) • Whether the product is enabled
          family (string,null)Family code from which the product inherits its attributes and attributes requirements. In the case of variant product, the given family should be the same as the product model family.
          categories (array [string]) • Codes of the categories in which the product is classified
          groups (array [string]) • Codes of the groups to which the product belong. Each string of the array is equal to an existing group code.
          parent (string,null) • Code of the parent product model when the product is a variant
          root_parent (string) • Code of the root parent product model when the product is a variant (only available when the with_root_parent is set to true).
          values (object) • Product attributes values. Each key is an attribute code, and the value is an array of value objects for that attribute. See documentation for details.
          associations (object) : {
              {^\w+$} (object) : {
                  groups (array [string]) • Array of groups codes with which the product is in relation
                  products (array [string]) • Array of product identifiers with which the product is in relation
                  product_models (array [string]) • Array of product model codes with which the product is in relation
              }
          }
          quantified_associations (object) : {
              {^\w+$} (object) : {
                  products (array [object]) • Array of objects containing product uuids and quantities with which the product is in relation
                  product_models (array [object]) • Array of objects containing product model codes and quantities with which the product is in relation
              }
          }
          created (string) • Date of creation
          updated (string) • Date of the last update
          metadata (object) : {
              workflow_status (string) • Status of the product regarding the user permissions
          }
          quality_scores (array [object]) • Product quality scores for each channel/locale combination (only available when the with_quality_scores query parameter is set to true).
          completenesses (array [object]) • Product completenesses for each channel/locale combination (only available when the with_completenesses query parameter is set to true).
          workflow_execution_statuses (array [object]) • Workflow execution statuses of the product (only available when the with_workflow_execution_statuses query parameter is set to true)
        }
    ]
  }

}

Example

{
      "_links": {
        "self": {
          "href": "https://demo.akeneo.com/api/rest/v1/catalogs/65f5a521-e65c-4d7b-8be8-1f267fa2729c/products?limit=3"
        },
        "first": {
          "href": "https://demo.akeneo.com/api/rest/v1/catalogs/65f5a521-e65c-4d7b-8be8-1f267fa2729c/products?limit=3"
        },
        "next": {
          "href": "https://demo.akeneo.com/api/rest/v1/catalogs/65f5a521-e65c-4d7b-8be8-1f267fa2729c/products?search_after=0059d30f-6874-4277-81ed-3b3657c83f5e&limit=3"
        }
      },
      "_embedded": {
        "items": [
          {
            "uuid": "00073089-1310-4340-bcf0-9e33e4019b79",
            "enabled": true,
            "family": "mens_clothing",
            "categories": [
              "Cloths"
            ],
            "groups": [],
            "values": {
              "Default_Price": [
                {
                  "data": [
                    {
                      "amount": "10.00",
                      "currency": "USD"
                    }
                  ],
                  "locale": null,
                  "scope": null
                }
              ],
              "sku": [
                {
                  "data": "product_416",
                  "locale": null,
                  "scope": null
                }
              ],
              "Name": [
                {
                  "data": "Product 416",
                  "locale": null,
                  "scope": null
                }
              ],
              "Weight": [
                {
                  "data": {
                    "amount": 10,
                    "unit": "KILOGRAM"
                  },
                  "locale": null,
                  "scope": null
                }
              ]
            },
            "created": "2022-03-14T15:25:45+00:00",
            "updated": "2022-06-24T12:54:58+00:00",
            "associations": {
              "PACK": {
                "products": [],
                "product_models": [],
                "groups": []
              },
              "UPSELL": {
                "products": [],
                "product_models": [],
                "groups": []
              },
              "X_SELL": {
                "products": [],
                "product_models": [],
                "groups": []
              },
              "SUBSTITUTION": {
                "products": [],
                "product_models": [],
                "groups": []
              }
            },
            "quantified_associations": {}
          },
          {
            "uuid": "00248acf-f1f7-45cb-b409-c8c4b9a17a86",
            "enabled": true,
            "family": "mens_clothing",
            "categories": [
              "Cloths"
            ],
            "groups": [],
            "values": {
              "Default_Price": [
                {
                  "data": [
                    {
                      "amount": "10.00",
                      "currency": "USD"
                    }
                  ],
                  "locale": null,
                  "scope": null
                }
              ],
              "sku": [
                {
                  "data": "product_470",
                  "locale": null,
                  "scope": null
                }
              ],
              "Name": [
                {
                  "data": "Product 470",
                  "locale": null,
                  "scope": null
                }
              ],
              "Weight": [
                {
                  "data": {
                    "amount": 10,
                    "unit": "KILOGRAM"
                  },
                  "locale": null,
                  "scope": null
                }
              ]
            },
            "created": "2022-03-14T15:25:45+00:00",
            "updated": "2022-06-24T12:55:01+00:00",
            "associations": {
              "PACK": {
                "products": [],
                "product_models": [],
                "groups": []
              },
              "UPSELL": {
                "products": [],
                "product_models": [],
                "groups": []
              },
              "X_SELL": {
                "products": [],
                "product_models": [],
                "groups": []
              },
              "SUBSTITUTION": {
                "products": [],
                "product_models": [],
                "groups": []
              }
            },
            "quantified_associations": {}
          }
        ]
      }
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 404,
      "message": "Resource `my_resource_code` does not exist."
    }

Get a product related to a catalog

This endpoint allows you to get a specific product related to a catalog. In the Enterprise Edition, permissions based on your app settings are applied on the product you request. Please, note that a disabled catalog can return an HTTP 200 with a payload containing an error message, for more details see the App Catalog section.


REQUEST

get /api/rest/v1/catalogs/{id}/products/{uuid}

Path parameters

id (string) • This path parameter is used to specify the unique identifier of the catalog you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the catalog ID is correctly formatted and corresponds to an existing entity in the system.

uuid (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the UUID is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', 'xxx' being the App authentication token, see documentation for getting an app token

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Return the product

Body Format application/json

{

uuid (string) • Product UUID

identifier (string) • Product identifier, i.e. the value of the only pim_catalog_identifier attribute

enabled (boolean) • Whether the product is enabled

family (string,null)Family code from which the product inherits its attributes and attributes requirements. In the case of variant product, the given family should be the same as the product model family.

categories (array [string]) • Codes of the categories in which the product is classified

groups (array [string]) • Codes of the groups to which the product belong. Each string of the array is equal to an existing group code.

parent (string,null) • Code of the parent product model when the product is a variant

root_parent (string) • Code of the root parent product model when the product is a variant (only available when the with_root_parent is set to true).

values (object) • Product attributes values. Each key is an attribute code, and the value is an array of value objects for that attribute. See documentation for details.

associations (object) : {
    {^\w+$} (object) : {
        groups (array[string]) • Array of groups codes with which the product is in relation
        products (array[string]) • Array of product identifiers with which the product is in relation
        product_models (array[string]) • Array of product model codes with which the product is in relation
    }
  }

quantified_associations (object) : {
    {^\w+$} (object) : {
        products (array[object]) • Array of objects containing product uuids and quantities with which the product is in relation
        product_models (array[object]) • Array of objects containing product model codes and quantities with which the product is in relation
    }
  }

created (string) • Date of creation

updated (string) • Date of the last update

metadata (object) : {
    workflow_status (string) • Status of the product regarding the user permissions
  }

quality_scores (array [object]) : [
        {
         scope (string) • Channel code for which the quality score is calculated
         locale (string) • Locale code for which the quality score is calculated
         data (string) • Quality score value for the given channel/locale combination
        }
    ]

completenesses (array [object]) : [
        {
         scope (string) • Channel code for which the completenesses score is calculated
         locale (string) • Channel code for which the completenesses score is calculated
         data (integer) • Completenesses score value for the given channel/locale combination
        }
    ]

workflow_execution_statuses (array [object]) : [
        {
         uuid (string) • Workflow execution UUID
         status (string) • Status of the workflow execution
         started_at (string) • Date and time when the workflow execution was started
         completed_at (string,null) • Date and time when the workflow execution was completed, null if still in progress
         workflow (object) • Workflow associated with the workflow execution
         tasks (array) • Tasks associated with the workflow execution
        }
    ]

}

Example

{
      "uuid": "25566245-55c3-42ce-86d9-8610ac459fa8",
      "enabled": true,
      "family": "tshirt",
      "categories": [
        "summer_collection"
      ],
      "groups": [],
      "values": {
        "sku": [
          {
            "data": "top"
          }
        ],
        "name": [
          {
            "data": "Top",
            "locale": "en_US"
          },
          {
            "data": "Débardeur",
            "locale": "fr_FR"
          }
        ],
        "description": [
          {
            "data": "Summer top",
            "locale": "en_US",
            "scope": "ecommerce"
          },
          {
            "data": "Top",
            "locale": "en_US",
            "scope": "tablet"
          },
          {
            "data": "Débardeur pour l'été",
            "locale": "fr_FR",
            "scope": "ecommerce"
          },
          {
            "data": "Débardeur",
            "locale": "fr_FR",
            "scope": "tablet"
          }
        ],
        "price": [
          {
            "data": [
              {
                "amount": "15.5",
                "currency": "EUR"
              },
              {
                "amount": "15",
                "currency": "USD"
              }
            ]
          }
        ],
        "color": [
          {
            "data": "black",
            "linked_data": {
              "attribute": "color",
              "code": "black",
              "labels": {
                "en_US": "Black",
                "fr_FR": "Noir"
              }
            }
          }
        ],
        "size": [
          {
            "data": "m",
            "linked_data": {
              "attribute": "size",
              "code": "m",
              "labels": {
                "en_US": "M",
                "fr_FR": "M"
              }
            }
          }
        ],
        "collection": [
          {
            "data": [
              "winter_2016"
            ],
            "linked_data": {
              "winter_2016": {
                "attribute": "collection",
                "code": "winter_2016",
                "labels": {
                  "en_US": "Winter 2016",
                  "fr_FR": "Hiver 2016"
                }
              }
            }
          }
        ]
      },
      "created": "2016-06-23T18:24:44+02:00",
      "updated": "2016-06-25T17:56:12+02:00",
      "associations": {
        "PACK": {
          "products": [
            "d055527c-0698-4967-8f16-8a5f23f4e5cf"
          ],
          "product_models": [],
          "groups": []
        }
      },
      "quantified_associations": {
        "PRODUCT_SET": {
          "products": [
            {
              "uuid": "fc24e6c3-933c-4a93-8a81-e5c703d134d5",
              "quantity": 2
            },
            {
              "uuid": "a9b69002-a0b1-4ead-85c2-f8dbf59c6cfc",
              "quantity": 1
            }
          ],
          "product_models": [
            {
              "identifier": "model-biker-jacket-leather",
              "quantity": 2
            }
          ]
        }
      },
      "root_parent": "clothes",
      "quality_scores": [
        {
          "scope": "ecommerce",
          "locale": "en_US",
          "data": "A"
        },
        {
          "scope": "ecommerce",
          "locale": "fr_FR",
          "data": "B"
        },
        {
          "scope": "tablet",
          "locale": "en_US",
          "data": "D"
        },
        {
          "scope": "tablet",
          "locale": "fr_FR",
          "data": "E"
        }
      ],
      "completenesses": [
        {
          "scope": "ecommerce",
          "locale": "en_US",
          "data": 10
        },
        {
          "scope": "ecommerce",
          "locale": "fr_FR",
          "data": 20
        },
        {
          "scope": "tablet",
          "locale": "en_US",
          "data": 30
        },
        {
          "scope": "tablet",
          "locale": "fr_FR",
          "data": 40
        }
      ],
      "workflow_execution_statuses": [
        {
          "uuid": "8c0fe59f-4d29-4faa-b4c3-d327e7f3cc52",
          "status": "in_progress",
          "started_at": "2024-02-22T17:31:00Z",
          "completed_at": null,
          "workflow": {
            "uuid": "6f37476a-04c2-46c0-b6d0-e18316959068",
            "code": "enrichment_workflow",
            "labels": {
              "en_US": "Enrichment workflow",
              "fr_FR": "Workflow d'enrichissement"
            }
          },
          "tasks": [
            {
              "uuid": "8f6c2d18-fbd4-4f7e-81df-cb3dc368fe07",
              "status": "in_progress",
              "created_at": "2024-02-22T17:31:00Z",
              "step": {
                "uuid": "f626d0e5-84a5-41fc-8215-65508c253edb",
                "code": "review_step",
                "labels": {
                  "en_US": "Marketing review",
                  "fr_FR": "Revue marketing"
                }
              }
            }
          ]
        }
      ]
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 404,
      "message": "Resource `my_resource_code` does not exist."
    }

Get the list of mapped flattened products or simple products related to a catalog

This endpoint is available when the mapping is enabled on a specified catalog. When the mapping is in a basic mode, this endpoint allows you to get the list of all flattened products related to the catalog. When it's in models/variants mode, this endpoint allows you to get the list of simple products with all specified targets in the two levels of the mapping schema. Please, note that a disabled catalog can return an HTTP 200 with a payload containing an error message, for more details see the App Catalog section.


REQUEST

get /api/rest/v1/catalogs/{id}/mapped-products

Path parameters

id (string) • This path parameter is used to specify the unique identifier of the catalog you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the catalog ID is correctly formatted and corresponds to an existing entity in the system.

Query parameters

search_after (string, cursor to the first page by default) • Cursor when using the search_after pagination method type. It is essential for navigating through pages in cursor-based pagination, providing more efficient pagination for large datasets. Should never be set manually, see Pagination section for more details.

limit (integer, 10 by default) • Specify the maximum number of results to return per page. It is useful for controlling the amount of data returned in a single request, especially when dealing with large datasets. See Pagination section for more details.

updated_before (string) • Filter products that have been updated BEFORE the provided date. It is useful for retrieving products that haven't been modified since a specific date, which is essential for historical data analysis and reporting. This filter uses the PIM products updated date and is only available on Catalogs endpoints.

updated_after (string) • Filter products that have been updated AFTER the provided date. It is useful for retrieving only recently modified products, which is essential for synchronization and incremental data processing. This filter uses the PIM products updated date and is only available on Catalogs endpoints.

Headers

Authorization • Equal to 'Bearer xxx', 'xxx' being the App authentication token, see documentation for getting an app token

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Return the paginated mapped products. The response is paginated and includes links to navigate through the pages. Only search_after pagination is used.

Body Format application/json

{

_links (object) : {
    self (object) : {
        href (string) • URI of the current page of resources
    }
    first (object) : {
        href (string) • URI of the first page of resources
    }
    previous (object) : {
        href (string) • URI of the previous page of resources
    }
    next (object) : {
        href (string) • URI of the next page of resources
    }
  }

_embedded (object) : {
    items (array) : [
        {
        }
    ]
  }

}

Example

{
      "_links": {
        "self": {
          "href": "https://demo.akeneo.com/api/rest/v1/catalogs/d259aecf-3ec1-4b07-ae0f-ce234b86c025/mapped-products?limit=4"
        },
        "first": {
          "href": "https://demo.akeneo.com/api/rest/v1/catalogs/d259aecf-3ec1-4b07-ae0f-ce234b86c025/mapped-products?limit=4"
        },
        "next": {
          "href": "https://demo.akeneo.com/api/rest/v1/catalogs/d259aecf-3ec1-4b07-ae0f-ce234b86c025/mapped-products?search_after=0e957ed4-fa44-48de-b6c7-7149d890fb3a&limit=4"
        }
      },
      "_embedded": {
        "items": [
          {
            "uuid": "04f47a54-8cc9-4c51-90e9-eb9aace0865f",
            "title": "Canon Video Visualiser RE-455X",
            "code": "sku-1234"
          },
          {
            "uuid": "06dc8c5b-9e2f-4423-b9dd-31a3aaa0a048",
            "title": "Trust Cuby Pro",
            "code": "sku-1235"
          },
          {
            "uuid": "0c3635f9-fedc-4bbd-96ab-856f69746b56",
            "title": "Trust Urban Revolt",
            "code": "sku-1236"
          },
          {
            "uuid": "0e957ed4-fa44-48de-b6c7-7149d890fb3a",
            "title": "Microsoft LifeCam Studio",
            "code": "sku-1237"
          }
        ]
      }
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 404,
      "message": "Resource `my_resource_code` does not exist."
    }

Get the list of mapped models related to a catalog

This endpoint allows you to get the list of models related to a catalog when the mapping is enabled with a models/variants schema. Please, note that a disabled catalog can return an HTTP 200 with a payload containing an error message, for more details see the App Catalog section.


REQUEST

get /api/rest/v1/catalogs/{id}/mapped-models

Path parameters

id (string) • This path parameter is used to specify the unique identifier of the catalog you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the catalog ID is correctly formatted and corresponds to an existing entity in the system.

Query parameters

search_after (string, cursor to the first page by default) • Cursor when using the search_after pagination method type. It is essential for navigating through pages in cursor-based pagination, providing more efficient pagination for large datasets. Should never be set manually, see Pagination section for more details.

limit (integer, 10 by default) • Specify the maximum number of results to return per page. It is useful for controlling the amount of data returned in a single request, especially when dealing with large datasets. See Pagination section for more details.

updated_before (string) • Filter products that have been updated BEFORE the provided date. It is useful for retrieving products that haven't been modified since a specific date, which is essential for historical data analysis and reporting. This filter uses the PIM products updated date and is only available on Catalogs endpoints.

updated_after (string) • Filter products that have been updated AFTER the provided date. It is useful for retrieving only recently modified products, which is essential for synchronization and incremental data processing. This filter uses the PIM products updated date and is only available on Catalogs endpoints.

Headers

Authorization • Equal to 'Bearer xxx', 'xxx' being the App authentication token, see documentation for getting an app token

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Return the paginated mapped models. The response is paginated and includes links to navigate through the pages. Only search_after pagination is used.

Body Format application/json

{

_links (object) : {
    self (object) : {
        href (string) • URI of the current page of resources
    }
    first (object) : {
        href (string) • URI of the first page of resources
    }
    previous (object) : {
        href (string) • URI of the previous page of resources
    }
    next (object) : {
        href (string) • URI of the next page of resources
    }
  }

_embedded (object) : {
    items (array) : [
        {
        }
    ]
  }

}

Example

{
      "_links": {
        "self": {
          "href": "https://demo.akeneo.com/api/rest/v1/catalogs/232be0b2-093c-4591-a506-2a2ed5176721/mapped-models?limit=2"
        },
        "first": {
          "href": "https://demo.akeneo.com/api/rest/v1/catalogs/232be0b2-093c-4591-a506-2a2ed5176721/mapped-models?limit=2"
        },
        "next": {
          "href": "https://demo.akeneo.com/api/rest/v1/catalogs/232be0b2-093c-4591-a506-2a2ed5176721/mapped-models?search_after=tshirt_pim&limit=2"
        }
      },
      "_embedded": {
        "items": [
          {
            "code": "tshirt_akeneo",
            "title": "Beautiful t-shirt with Akeneo logo",
            "variants": "https://demo.akeneo.com/api/rest/v1/catalogs/232be0b2-093c-4591-a506-2a2ed5176721/mapped-models/tshirt_akeneo/variants",
            "variation_axes": [
              {
                "code": "color",
                "label": [
                  {
                    "locale": "en_US",
                    "value": "Color"
                  },
                  {
                    "locale": "fr_FR",
                    "value": "Couleur"
                  }
                ]
              },
              {
                "code": "size",
                "label": [
                  {
                    "locale": "en_US",
                    "value": "Size"
                  },
                  {
                    "locale": "fr_FR",
                    "value": "Taille"
                  }
                ]
              }
            ]
          },
          {
            "code": "tshirt_pim",
            "title": "Beautiful t-shirt with PIM logo",
            "variants": "https://demo.akeneo.com/api/rest/v1/catalogs/232be0b2-093c-4591-a506-2a2ed5176721/mapped-models/tshirt_pim/variants",
            "variation_axes": [
              {
                "code": "color",
                "label": [
                  {
                    "locale": "en_US",
                    "value": "Color"
                  },
                  {
                    "locale": "fr_FR",
                    "value": "Couleur"
                  }
                ]
              },
              {
                "code": "size",
                "label": [
                  {
                    "locale": "en_US",
                    "value": "Size"
                  },
                  {
                    "locale": "fr_FR",
                    "value": "Taille"
                  }
                ]
              }
            ]
          }
        ]
      }
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 404,
      "message": "Resource `my_resource_code` does not exist."
    }

Get the list of mapped variants of a model related to a catalog

This endpoint allows you to get the list of variants of a model related to a catalog when the mapping is enabled. Please, note that a disabled catalog can return an HTTP 200 with a payload containing an error message, for more details see the App Catalog section.


REQUEST

get /api/rest/v1/catalogs/{id}/mapped-models/{model_code}/variants

Path parameters

id (string) • This path parameter is used to specify the unique identifier of the catalog you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the catalog ID is correctly formatted and corresponds to an existing entity in the system.

model_code (string) • Model code

Query parameters

search_after (string, cursor to the first page by default) • Cursor when using the search_after pagination method type. It is essential for navigating through pages in cursor-based pagination, providing more efficient pagination for large datasets. Should never be set manually, see Pagination section for more details.

limit (integer, 10 by default) • Specify the maximum number of results to return per page. It is useful for controlling the amount of data returned in a single request, especially when dealing with large datasets. See Pagination section for more details.

updated_before (string) • Filter products that have been updated BEFORE the provided date. It is useful for retrieving products that haven't been modified since a specific date, which is essential for historical data analysis and reporting. This filter uses the PIM products updated date and is only available on Catalogs endpoints.

updated_after (string) • Filter products that have been updated AFTER the provided date. It is useful for retrieving only recently modified products, which is essential for synchronization and incremental data processing. This filter uses the PIM products updated date and is only available on Catalogs endpoints.

Headers

Authorization • Equal to 'Bearer xxx', 'xxx' being the App authentication token, see documentation for getting an app token

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Return the paginated mapped variants. The response is paginated and includes links to navigate through the pages. Only search_after pagination is used.

Body Format application/json

{

_links (object) : {
    self (object) : {
        href (string) • URI of the current page of resources
    }
    first (object) : {
        href (string) • URI of the first page of resources
    }
    previous (object) : {
        href (string) • URI of the previous page of resources
    }
    next (object) : {
        href (string) • URI of the next page of resources
    }
  }

_embedded (object) : {
    items (array) : [
        {
        }
    ]
  }

}

Example

{
      "_links": {
        "self": {
          "href": "https://demo.akeneo.com/api/rest/v1/catalogs/232be0b2-093c-4591-a506-2a2ed5176721/mapped-models/tshirt_akeneo/variants?limit=2"
        },
        "first": {
          "href": "https://demo.akeneo.com/api/rest/v1/catalogs/232be0b2-093c-4591-a506-2a2ed5176721/mapped-models/tshirt_akeneo/variants?limit=2"
        },
        "next": {
          "href": "https://demo.akeneo.com/api/rest/v1/catalogs/232be0b2-093c-4591-a506-2a2ed5176721/mapped-models/tshirt_akeneo/variants?search_after=6b025a71-537f-48d4-aa26-a6617d6199e9&limit=100"
        }
      },
      "_embedded": {
        "items": [
          {
            "is_published": true,
            "sku": "AK10BLXL",
            "uuid": "6b025a71-537f-48d4-aa26-a6617d6199e9",
            "variant_axes_values": [
              {
                "code": "color",
                "label": [
                  {
                    "locale": "en_US",
                    "value": "Blue"
                  },
                  {
                    "locale": "fr_FR",
                    "value": "Bleu"
                  }
                ],
                "value": "blue"
              },
              {
                "code": "size",
                "label": [
                  {
                    "locale": "en_US",
                    "value": "XL"
                  },
                  {
                    "locale": "fr_FR",
                    "value": "XL"
                  }
                ],
                "value": "xl"
              }
            ]
          },
          {
            "is_published": true,
            "sku": "AK10YEXL",
            "uuid": "6b025a71-537f-48d4-aa26-a6617d6199e9",
            "variant_axes_values": [
              {
                "code": "color",
                "label": [
                  {
                    "locale": "en_US",
                    "value": "Yellow"
                  },
                  {
                    "locale": "fr_FR",
                    "value": "Jaune"
                  }
                ],
                "value": "yellow"
              },
              {
                "code": "size",
                "label": [
                  {
                    "locale": "en_US",
                    "value": "XL"
                  },
                  {
                    "locale": "fr_FR",
                    "value": "XL"
                  }
                ],
                "value": "xl"
              }
            ]
          }
        ]
      }
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 404,
      "message": "Resource `my_resource_code` does not exist."
    }

Mapping schema for products

Get the product mapping schema related to a catalog

This endpoint allows you to retrieve the product mapping schema related to a catalog.


REQUEST

get /api/rest/v1/catalogs/{id}/mapping-schemas/product

Path parameters

id (string) • This path parameter is used to specify the unique identifier of the catalog you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the catalog ID is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', 'xxx' being the App authentication token, see documentation for getting an app token

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Return product mapping schema related to a catalog

Body Format application/json

{

$id (string) • id of your schema

$schema (string) • $schema indicates which product mapping schema version your app uses

$comment (string) • allows you to add a comment

title (string) • allows you to add a title to your mapping schema

description (string) • allows you to add a description of your mapping schema

type (string) • should always be "object"

properties (object) • list and describe the targets your app expects

}

Example

{
      "$id": "https://example.com/product",
      "$schema": "https://api.akeneo.com/mapping/product/1.0.3/schema",
      "type": "object",
      "properties": {
        "code": {
          "title": "Model ID",
          "type": "string"
        },
        "brand": {
          "title": "Brand name",
          "type": "string"
        },
        "description": {
          "title": "Product description",
          "type": "string"
        },
        "fabrics": {
          "title": "Fabrics",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "localized_names": {
          "title": "Name with multiple locales",
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "locale": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "required": [
              "locale",
              "value"
            ]
          }
        },
        "localized_number": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "locale": {
                "type": "string"
              },
              "value": {
                "type": "number"
              }
            },
            "required": [
              "locale",
              "value"
            ]
          }
        },
        "localized_link": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "locale": {
                "type": "string"
              },
              "value": {
                "type": "string",
                "format": "uri"
              }
            },
            "required": [
              "locale",
              "value"
            ]
          }
        },
        "localized_datetime": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "locale": {
                "type": "string"
              },
              "value": {
                "type": "string",
                "format": "date-time"
              }
            },
            "required": [
              "locale",
              "value"
            ]
          }
        },
        "localized_boolean": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "locale": {
                "type": "string"
              },
              "value": {
                "type": "boolean"
              }
            },
            "required": [
              "locale",
              "value"
            ]
          }
        },
        "variation_axes": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string"
              },
              "label": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "locale": {
                      "type": "string"
                    },
                    "value": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "variants": {
          "oneOf": [
            {
              "type": "string",
              "format": "uri"
            },
            {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "variation_axes_values": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string"
                        },
                        "value": {
                          "oneOf": [
                            {
                              "type": [
                                "string",
                                "boolean"
                              ]
                            },
                            {
                              "type": "object",
                              "properties": {
                                "amount": {
                                  "type": "number"
                                },
                                "unit": {
                                  "type": "string"
                                }
                              }
                            }
                          ]
                        },
                        "label": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "locale": {
                                "type": "string"
                              },
                              "value": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "uuid": {
                    "title": "uuid",
                    "type": "string"
                  },
                  "sku": {
                    "title": "SKU",
                    "type": "string"
                  },
                  "position": {
                    "title": "Position",
                    "type": "number"
                  },
                  "price": {
                    "title": "Price",
                    "type": "string"
                  },
                  "response_time": {
                    "title": "Response time",
                    "type": "string"
                  },
                  "localized_product_photos_media_file": {
                    "title": "Photos with value per locale(links)",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "locale": {
                          "type": "string"
                        },
                        "value": {
                          "type": "array",
                          "items": {
                            "type": "string",
                            "format": "uri"
                          }
                        }
                      },
                      "required": [
                        "locale",
                        "value"
                      ]
                    }
                  },
                  "localized_prices": {
                    "title": "Price in multiple currencies with value per locale",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "locale": {
                          "type": "string"
                        },
                        "value": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "amount": {
                                "type": "number"
                              },
                              "currency": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "amount",
                              "currency"
                            ]
                          }
                        }
                      },
                      "required": [
                        "locale",
                        "value"
                      ]
                    }
                  }
                },
                "required": [
                  "uuid"
                ]
              }
            }
          ]
        }
      }
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 404,
      "message": "Resource `my_resource_code` does not exist."
    }

Create or update the product mapping schema related to a catalog

This endpoint allows you to create or update the product mapping schema related to a catalog. See documentation to define your JSON schema.


REQUEST

put /api/rest/v1/catalogs/{id}/mapping-schemas/product

Path parameters

id (string) • This path parameter is used to specify the unique identifier of the catalog you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the catalog ID is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', 'xxx' being the App authentication token, see documentation for getting an app token

Content-type • Equal to 'application/json', no other value allowed

Body

Follow the standard format of the entity

{

$id (string) • id of your schema

$schema (string) • $schema indicates which product mapping schema version your app uses

$comment (string) • allows you to add a comment

title (string) • allows you to add a title to your mapping schema

description (string) • allows you to add a description of your mapping schema

type (string) • should always be "object"

properties (object) • list and describe the targets your app expects

}

Example

{
      "$id": "https://example.com/product",
      "$schema": "https://api.akeneo.com/mapping/product/1.0.3/schema",
      "type": "object",
      "properties": {
        "code": {
          "title": "Model ID",
          "type": "string"
        },
        "brand": {
          "title": "Brand name",
          "type": "string"
        },
        "description": {
          "title": "Product description",
          "type": "string"
        },
        "fabrics": {
          "title": "Fabrics",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "localized_names": {
          "title": "Name with multiple locales",
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "locale": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "required": [
              "locale",
              "value"
            ]
          }
        },
        "localized_number": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "locale": {
                "type": "string"
              },
              "value": {
                "type": "number"
              }
            },
            "required": [
              "locale",
              "value"
            ]
          }
        },
        "localized_link": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "locale": {
                "type": "string"
              },
              "value": {
                "type": "string",
                "format": "uri"
              }
            },
            "required": [
              "locale",
              "value"
            ]
          }
        },
        "localized_datetime": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "locale": {
                "type": "string"
              },
              "value": {
                "type": "string",
                "format": "date-time"
              }
            },
            "required": [
              "locale",
              "value"
            ]
          }
        },
        "localized_boolean": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "locale": {
                "type": "string"
              },
              "value": {
                "type": "boolean"
              }
            },
            "required": [
              "locale",
              "value"
            ]
          }
        },
        "variation_axes": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string"
              },
              "label": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "locale": {
                      "type": "string"
                    },
                    "value": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "variants": {
          "oneOf": [
            {
              "type": "string",
              "format": "uri"
            },
            {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "variation_axes_values": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "string"
                        },
                        "value": {
                          "oneOf": [
                            {
                              "type": [
                                "string",
                                "boolean"
                              ]
                            },
                            {
                              "type": "object",
                              "properties": {
                                "amount": {
                                  "type": "number"
                                },
                                "unit": {
                                  "type": "string"
                                }
                              }
                            }
                          ]
                        },
                        "label": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "locale": {
                                "type": "string"
                              },
                              "value": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "uuid": {
                    "title": "uuid",
                    "type": "string"
                  },
                  "sku": {
                    "title": "SKU",
                    "type": "string"
                  },
                  "position": {
                    "title": "Position",
                    "type": "number"
                  },
                  "price": {
                    "title": "Price",
                    "type": "string"
                  },
                  "response_time": {
                    "title": "Response time",
                    "type": "string"
                  },
                  "localized_product_photos_media_file": {
                    "title": "Photos with value per locale(links)",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "locale": {
                          "type": "string"
                        },
                        "value": {
                          "type": "array",
                          "items": {
                            "type": "string",
                            "format": "uri"
                          }
                        }
                      },
                      "required": [
                        "locale",
                        "value"
                      ]
                    }
                  },
                  "localized_prices": {
                    "title": "Price in multiple currencies with value per locale",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "locale": {
                          "type": "string"
                        },
                        "value": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "amount": {
                                "type": "number"
                              },
                              "currency": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "amount",
                              "currency"
                            ]
                          }
                        }
                      },
                      "required": [
                        "locale",
                        "value"
                      ]
                    }
                  }
                },
                "required": [
                  "uuid"
                ]
              }
            }
          ]
        }
      }
    }

RESPONSES

Successfully created or updated product mapping schema, empty response body

Body Format application/json

Ø

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the server understands the request but cannot process it due to validation errors in the provided data.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 422,
      "message": "Validation failed."
    }

Delete the product mapping schema related to a catalog

This endpoint allows you to delete the product mapping schema related to a catalog


REQUEST

delete /api/rest/v1/catalogs/{id}/mapping-schemas/product

Path parameters

id (string) • This path parameter is used to specify the unique identifier of the catalog you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the catalog ID is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', 'xxx' being the App authentication token, see documentation for getting an app token

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

No content to return. Means that the deletion was successful.

Body Format application/json

Ø

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 404,
      "message": "Resource `my_resource_code` does not exist."
    }

Utilities

Overview

Get list of all endpoints

This endpoint allows you to get the list of all the available endpoints. No need to be authenticated to use this endpoint.


REQUEST

get /api/rest/v1

Path parameters

Ø

Query parameters

Ø

Headers

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Return the list of all available endpoints

Body Format application/json

{

host (string) • Host name

authentication (object) • Endpoint to get the authentication token

routes (object) • All the available endpoints

}

Example

{
      "host": "https://demo.akeneo.com",
      "authentication": {
        "fos_oauth_server_token": {
          "route": "/api/oauth/v1/token",
          "methods": [
            "POST"
          ]
        }
      },
      "routes": {
        "pim_api_attribute_list": {
          "route": "/api/rest/v1/attributes",
          "methods": [
            "GET"
          ]
        },
        "pim_api_attribute_create": {
          "route": "/api/rest/v1/attributes",
          "methods": [
            "POST"
          ]
        },
        "pim_api_attribute_partial_update": {
          "route": "/api/rest/v1/attributes/{code}",
          "methods": [
            "PATCH"
          ]
        },
        "pim_api_attribute_get": {
          "route": "/api/rest/v1/attributes/{code}",
          "methods": [
            "GET"
          ]
        },
        "pim_api_attribute_partial_update_list": {
          "route": "/api/rest/v1/attributes",
          "methods": [
            "PATCH"
          ]
        },
        "pim_api_category_list": {
          "route": "/api/rest/v1/categories",
          "methods": [
            "GET"
          ]
        },
        "pim_api_product_partial_update": {
          "route": "/api/rest/v1/products/{code}",
          "methods": [
            "PATCH"
          ]
        },
        "pim_api_product_delete": {
          "route": "/api/rest/v1/products/{code}",
          "methods": [
            "DELETE"
          ]
        },
        "pim_api_product_uuid_create": {
          "route": "/api/rest/v1/products-uuid",
          "methods": [
            "POST"
          ]
        },
        "pim_api_channel_list": {
          "route": "/api/rest/v1/channels",
          "methods": [
            "GET"
          ]
        },
        "akeneo_catalogs_public_get_catalogs": {
          "route": "/api/rest/v1/catalogs",
          "methods": [
            "GET"
          ]
        },
        "akeneo_asset_manager_assets_rest_connector_create_or_update": {
          "route": "/api/rest/v1/asset-families/{asset_family_code}/assets",
          "methods": [
            "PATCH"
          ]
        },
        "pim_api_locale_list": {
          "route": "/api/rest/v1/locales",
          "methods": [
            "GET"
          ]
        },
        "pim_analytics_external_api_system_info_get": {
          "route": "/api/rest/v1/system-information",
          "methods": [
            "GET"
          ]
        }
      }
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Authentication

Get an authentication token

This endpoint allows you to get an authentication token. No need to be authenticated to use this endpoint. Want to get your token directly in the API reference? Check the Get your API token guide.


REQUEST

post /api/oauth/v1/token

Path parameters

Ø

Query parameters

Ø

Headers

Content-Type • This header indicates the media type of the resource being sent to the server. It is used to specify the format of the request body, allowing the server to correctly interpret the data being sent. Equal to 'application/json' or 'application/x-www-form-urlencoded', no other value allowed.

Authorization • This header is used to authenticate requests to the API. Equal to 'Basic xx', where 'xx' is the base 64 encoding of the client id and secret. Find out how to generate them in the Client ID/secret generation section.

Body

Given as form-data

username (string) • Your PIM username, field username in your PIM connection settings. See here for more details.

password (string) • Your PIM password, field password in your PIM connection settings. See here for more details.

grant_type (string) • Always equal to password


RESPONSES

Return an authentication token

Body Format application/json

{

access_token (string) • Authentication token that should be given in every authenticated request to the API

expires_in (integer) • Validity of the token given in seconds, 3600s = 1h by default

token_type (string) • Token type, always equal to bearer

scope (string,null) • Unused, always equal to null

refresh_token (string) • Use this token when your access token has expired. See.

}

Example

{
      "access_token": "ZTZmYjU4ZmQxZWNmMzk1M2NlYzA5NmFhNmIzVjExMzE4NmJmODBkZGIyYTliYmQyNjk2ZDQwZThmNjdiZDQzOQ",
      "expires_in": 3600,
      "token_type": "bearer",
      "scope": null,
      "refresh_token": "M3FlODI0OTE3ODMyNjViMzRiOWE5ODMyNWViMThkNDU5YzJjNjFiZjNkZWFjMzIyYjc4YTgzZWY1MjE5ZTY5Mw"
    }

This response indicates that the server cannot process the request due to a client error, such as malformed request syntax, invalid request message framing, or deceptive request routing. It is typically used when the server cannot understand the request due to invalid JSON or other client-side issues.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 400,
      "message": "Invalid JSON message received"
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the data provided does not meet the required format or constraints defined by the API, and includes a link to the documentation for reference.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Property \\\"labels\\\" expects an array as data, \\\"NULL\\\" given. Check the API reference documentation.",
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

System

Get system information

This endpoint allows you to get the version and the edition of the PIM


REQUEST

get /api/rest/v1/system-information

Path parameters

Ø

Query parameters

Ø

Headers

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Return the version and the edition of the PIM

Body Format application/json

{

version (string) • Version of the PIM

edition (string) • Edition of the PIM

}

Example

{
      "version": "v20250717143807",
      "edition": "Serenity"
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Extensions

UI Extensions

List UI extensions

List all UI extensions associated with your token


REQUEST

get /api/rest/v1/ui-extensions

Path parameters

Ø

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Returns the list of extensions

Body Format application/json

[
    {

       name (string) • Name of the extension, shown within the Administration interface

       description (string) • Short description, shown within the Administration interface

       version (string) • Version of the extension, shown within the Administration interface

       position (string)Position of the UI extension

       type (string)Type of the UI extension

       configuration (object) : {
           default_label (string) • Default label, used if there is no translation for the PIM user locale
           labels (object) • Label translations
           secret (string) • Shows REDACTED if a secret is registered for the extension
           url (string) • Destination URL of the extension
        }

       status (string) • Status of the UI extension (active or inactive)

       credentials (array [object]) : [
        {
         type (string) • Type of credentials
         value (object) • Custom header credentials
        }
    ]
    }
]

Example

[
      {
        "uuid": "d414135b-ff4d-44e1-8cb6-fce64cbe29c0",
        "name": "my_awesome_iframe_extension",
        "type": "iframe",
        "position": "pim.product.tab",
        "configuration": {
          "url": "https://www.example.com",
          "labels": {
            "en_US": "My awesome iframe extension",
            "fr_FR": "Ma super iframe extension"
          },
          "default_label": "My awesome iframe extension"
        },
        "status": "active",
        "version": "V1.02.3",
        "description": "A short human readable description."
      },
      {
        "uuid": "64c683bd-452b-4609-b957-c586ff6b0999",
        "name": "my_other_iframe_extension",
        "type": "iframe",
        "position": "pim.product.tab",
        "configuration": {
          "url": "https://www.example2.com",
          "labels": {
            "en_US": "My other iframe extension",
            "fr_FR": "Mon autre iframe extension"
          },
          "default_label": "My other link extension"
        },
        "status": "active",
        "version": "V0.1.0",
        "description": "A short human readable description."
      }
    ]

Create a new UI extension

This endpoint allows you to create a new UI extension. default_label and url configuration fields are mandatory for all UI extensions. secret is optional and only available for action UI extension.


REQUEST

post /api/rest/v1/ui-extensions

Path parameters

Ø

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/json', no other value allowed

Body

Follow the standard format of the entity

{

name (string) • Name of the extension, shown within the Administration interface

description (string) • Short description, shown within the Administration interface

version (string) • Version of the extension, shown within the Administration interface

position (string) Position of the UI extension

type (string) Type of the UI extension

configuration (object) : {
        default_label (string) • Default label, used if there is no translation for the PIM user locale
        labels (object) • Label translations
        secret (string) • Shows REDACTED if a secret is registered for the extension
        url (string) • Destination URL of the extension
    }

status (string) • Status of the UI extension (active or inactive)

credentials (array[object]) : [
        {
           type (string) • Type of credentials
           value (object) • Custom header credentials
        }
    ]

}

Example

{
      "name": "my_awesome_button_extension",
      "type": "iframe",
      "position": "pim.product.tab",
      "configuration": {
        "url": "https://www.example.com",
        "secret": "UOL2EHjh7P0nGNUV8RwDMBclyMwe4c5IA",
        "labels": {
          "en_US": "My awesome link extension",
          "fr_FR": "Ma super link extension"
        },
        "default_label": "My awesome link extension"
      },
      "version": "V1.02.3",
      "description": "A short human readable description."
    }

RESPONSES

Creation successfully applied. Returns a JSON document representing the UI extension created.

Body Format application/json

{

name (string) • Name of the extension, shown within the Administration interface

description (string) • Short description, shown within the Administration interface

version (string) • Version of the extension, shown within the Administration interface

position (string)Position of the UI extension

type (string)Type of the UI extension

configuration (object) : {
    default_label (string) • Default label, used if there is no translation for the PIM user locale
    labels (object) • Label translations
    secret (string) • Shows REDACTED if a secret is registered for the extension
    url (string) • Destination URL of the extension
  }

status (string) • Status of the UI extension (active or inactive)

credentials (array [object]) : [
        {
         type (string) • Type of credentials
         value (object) • Custom header credentials
        }
    ]

}

Example

{
      "uuid": "d414135b-ff4d-44e1-8cb6-fce64cbe29c0",
      "name": "my_awesome_iframe_extension",
      "type": "iframe",
      "position": "pim.product.tab",
      "configuration": {
        "url": "https://www.example.com",
        "labels": {
          "en_US": "My awesome iframe extension",
          "fr_FR": "Ma super iframe extension"
        },
        "default_label": "My awesome iframe extension"
      },
      "status": "active",
      "credentials": [],
      "version": "V1.02.3",
      "description": "A short human readable description."
    }

This response indicates that the server cannot process the request due to a client error, such as malformed request syntax, invalid request message framing, or deceptive request routing. It is typically used when the server cannot understand the request due to invalid JSON or other client-side issues.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 400,
      "message": "Invalid JSON message received"
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the server understands the request but cannot process it due to validation errors in the provided data.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

errors (array [object]) : [
        {
         property (string) • Name of the invalid property
         message (string) • Human-readable error message
         attribute (string,null) • Attribute code (if the error is on an attribute)
         locale (string,null) • Locale code involved in the error, if any
         scope (string,null) • Channel code involved in the error, if any
        }
    ]

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Validation failed.",
      "errors": [
        {
          "property": "family",
          "message": "The tshirts family does not exist in your PIM."
        },
        {
          "property": "categories",
          "message": "The \"tvs_projectors\" category does not exist."
        },
        {
          "property": "associations.SUBSTITUTION.groups",
          "message": "You should associate existing groups. The \"promotion\" group does not exist."
        },
        {
          "property": "values",
          "message": "The \"description\" attribute requires a channel.",
          "attribute": "description",
          "locale": "en_US",
          "scope": null
        },
        {
          "property": "values",
          "message": "The \"name\" attribute requires a locale.",
          "attribute": "name",
          "locale": null,
          "scope": null
        }
      ],
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

Update a UI extension

This endpoint allows you to update an existing UI extension. You can send only the fields that you want to update. If a field is not sent, the previous value is kept. This endpoint is also available as POST, prefer the POST if you need to upload a file.


REQUEST

patch /api/rest/v1/ui-extensions/{uuid}

Path parameters

uuid (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the UUID is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/json', no other value allowed

Body

Follow the standard format of the entity

{

name (string) • Name of the extension, shown within the Administration interface

description (string) • Short description, shown within the Administration interface

version (string) • Version of the extension, shown within the Administration interface

position (string)Position of the UI extension

type (string)Type of the UI extension

configuration (object) : {
        default_label (string) • Default label, used if there is no translation for the PIM user locale
        labels (object) • Label translations
        secret (string) • Shows REDACTED if a secret is registered for the extension
        url (string) • Destination URL of the extension
    }

status (string) • Status of the UI extension (active or inactive)

credentials (array[object]) : [
        {
           type (string) • Type of credentials
           value (object) • Custom header credentials
        }
    ]

}

Example

{
      "type": "link",
      "position": "pim.product.header",
      "version": "V1.02.4"
    }

RESPONSES

Changes applied successfully. Returns a JSON document representing the UI extension updated.

Body Format application/json

{

name (string) • Name of the extension, shown within the Administration interface

description (string) • Short description, shown within the Administration interface

version (string) • Version of the extension, shown within the Administration interface

position (string)Position of the UI extension

type (string)Type of the UI extension

configuration (object) : {
    default_label (string) • Default label, used if there is no translation for the PIM user locale
    labels (object) • Label translations
    secret (string) • Shows REDACTED if a secret is registered for the extension
    url (string) • Destination URL of the extension
  }

status (string) • Status of the UI extension (active or inactive)

credentials (array [object]) : [
        {
         type (string) • Type of credentials
         value (object) • Custom header credentials
        }
    ]

}

Example

{
      "uuid": "d414135b-ff4d-44e1-8cb6-fce64cbe29c0",
      "name": "my_awesome_iframe_extension",
      "type": "iframe",
      "position": "pim.product.tab",
      "configuration": {
        "url": "https://www.example.com",
        "labels": {
          "en_US": "My awesome iframe extension",
          "fr_FR": "Ma super iframe extension"
        },
        "default_label": "My awesome iframe extension"
      },
      "status": "active",
      "credentials": [],
      "version": "V1.02.3",
      "description": "A short human readable description."
    }

This response indicates that the server cannot process the request due to a client error, such as malformed request syntax, invalid request message framing, or deceptive request routing. It is typically used when the server cannot understand the request due to invalid JSON or other client-side issues.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 400,
      "message": "Invalid JSON message received"
    }

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 404,
      "message": "Resource `my_resource_code` does not exist."
    }

This response indicates that the validation of the entity given in the body of the request failed. It occurs when the server understands the request but cannot process it due to validation errors in the provided data.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

errors (array [object]) : [
        {
         property (string) • Name of the invalid property
         message (string) • Human-readable error message
         attribute (string,null) • Attribute code (if the error is on an attribute)
         locale (string,null) • Locale code involved in the error, if any
         scope (string,null) • Channel code involved in the error, if any
        }
    ]

_links (object) : {
    documentation (object) : {
        href (string)
    }
  }

}

Example

{
      "code": 422,
      "message": "Validation failed.",
      "errors": [
        {
          "property": "family",
          "message": "The tshirts family does not exist in your PIM."
        },
        {
          "property": "categories",
          "message": "The \"tvs_projectors\" category does not exist."
        },
        {
          "property": "associations.SUBSTITUTION.groups",
          "message": "You should associate existing groups. The \"promotion\" group does not exist."
        },
        {
          "property": "values",
          "message": "The \"description\" attribute requires a channel.",
          "attribute": "description",
          "locale": "en_US",
          "scope": null
        },
        {
          "property": "values",
          "message": "The \"name\" attribute requires a locale.",
          "attribute": "name",
          "locale": null,
          "scope": null
        }
      ],
      "_links": {
        "documentation": {
          "href": "http://api.akeneo.com/api-reference.html"
        }
      }
    }

Delete a UI extension

This endpoint allows you to delete a given UI extension


REQUEST

delete /api/rest/v1/ui-extensions/{uuid}

Path parameters

uuid (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the UUID is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

No content to return. Means that the deletion was successful.

Body Format application/json

Ø

This response indicates that the server cannot process the request due to a client error, such as malformed request syntax, invalid request message framing, or deceptive request routing. It is typically used when the server cannot understand the request due to invalid JSON or other client-side issues.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 400,
      "message": "Invalid JSON message received"
    }

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 404,
      "message": "Resource `my_resource_code` does not exist."
    }

Workflows

Workflows

Get list of workflows

Retrieves a paginated list of workflows


REQUEST

get /api/rest/v1/workflows

Path parameters

Ø

Query parameters

page (integer, 1 by default) • Specify which page of results to retrieve when using pagination. It is useful for navigating through large datasets by breaking them into smaller, manageable pages. See Pagination section for more details.

limit (integer, 100 by default) • Specify the maximum number of results to return per page. It is useful for controlling the amount of data returned in a single request, especially when dealing with large datasets. See Pagination section for more details.

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Paginated list of workflows. The response is paginated and includes links to navigate through the pages.

Body Format application/json

{

_links (object) : {
    self (object) : {
        href (string) • URI of the current page of resources
    }
    first (object) : {
        href (string) • URI of the first page of resources
    }
    previous (object) : {
        href (string) • URI of the previous page of resources
    }
    next (object) : {
        href (string) • URI of the next page of resources
    }
  }

current_page (integer) • Current page number

_embedded (object) : {
    items (array) : [
        {
          _links (object) : {
              self (object) : {
                  href (string) • URI of the resource
              }
          }
          uuid (string) • Workflow UUID
          code (string) • Workflow code
          labels (object) : {
              {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Label for locale
          }
          enabled (boolean) • Whether the workflow is enabled
        }
    ]
  }

}

Example

{
      "_links": {
        "self": {
          "href": "https://demo.akeneo.com/api/rest/v1/workflows?page=1"
        },
        "first": {
          "href": "https://demo.akeneo.com/api/rest/v1/workflows?page=1"
        },
        "next": {
          "href": "https://demo.akeneo.com/api/rest/v1/workflows?page=2"
        }
      },
      "current_page": 1,
      "_embedded": {
        "items": [
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/workflows/6f37476a-04c2-46c0-b6d0-e18316959068"
              }
            },
            "uuid": "6f37476a-04c2-46c0-b6d0-e18316959068",
            "code": "enrichment_workflow",
            "enabled": true,
            "labels": {
              "en_US": "Enrichment workflow",
              "fr_FR": "Workflow d'enrichissement"
            }
          },
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/workflows/a1b2c3d4-e5f6-7890-1234-567890abcdef"
              }
            },
            "uuid": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
            "code": "translation_workflow",
            "enabled": false,
            "labels": {
              "en_US": "Translation workflow",
              "fr_FR": "Workflow de traduction"
            }
          }
        ]
      }
    }

This response indicates that the server cannot process the request due to a client error, such as malformed request syntax, invalid request message framing, or deceptive request routing. It is typically used when the server cannot understand the request due to invalid JSON or other client-side issues.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 400,
      "message": "Invalid JSON message received"
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

Get a workflow

This endpoint allows you to get the information about a given workflow as well as its steps


REQUEST

get /api/rest/v1/workflows/{uuid}

Path parameters

uuid (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the UUID is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Returns the content of the workflow in JSON standard format

Body Format application/json

{

uuid (string) • Workflow UUID

code (string) • Workflow code

labels (object) : {
    {^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$} (string,null) • Workflow labels per locale
  }

enabled (boolean) • Whether the workflow is enabled

steps (array [object]) : [
        {
         uuid (string) • Step UUID
         code (string) • Step code
         type (string) • Step type (e.g. enrichment, review)
         labels (object) • Locale code
         descriptions (object) • Locale code
         allotted_time (object,null) • Allotted time for the step (e.g. {"value": 1, "unit": "days"} or nullable)
         channels_and_locales (object) • Step configuration for channels and locales
        }
    ]

}

Example

{
      "uuid": "6f37476a-04c2-46c0-b6d0-e18316959068",
      "code": "enrichment_workflow",
      "labels": {
        "en_US": "Enrichment workflow",
        "fr_FR": "Workflow d'enrichissement"
      },
      "enabled": true,
      "steps": [
        {
          "uuid": "f626d0e5-84a5-41fc-8215-65508c253edb",
          "code": "marketing_enrichment",
          "type": "enrichment",
          "labels": {
            "en_US": "Marketing enrichment",
            "fr_FR": "Enrichissement marketing"
          },
          "descriptions": {
            "en_US": "Enrich marketing attributes"
          },
          "allotted_time": {
            "value": 3,
            "unit": "days"
          },
          "channels_and_locales": {
            "ecommerce": [
              "en_US"
            ],
            "mobile": [
              "en_US",
              "fr_FR"
            ]
          }
        },
        {
          "uuid": "b2c1f3d4-5e6a-4c8b-9f0e-2d3e4f5a6b7c",
          "code": "marketing_review",
          "type": "review",
          "labels": {},
          "descriptions": {},
          "allotted_time": null,
          "channels_and_locales": {
            "ecommerce": [
              "en_US"
            ]
          }
        }
      ]
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the requested resource could not be found on the server. It can occur when the resource code given in the URI does not correspond to any existing PIM resource.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 404,
      "message": "Resource `my_resource_code` does not exist."
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Get list of workflow step assignees

Retrieves a paginated list of assignees for a specified workflow step


REQUEST

get /api/rest/v1/workflows/steps/{uuid}/assignees

Path parameters

uuid (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the UUID is correctly formatted and corresponds to an existing entity in the system.

Query parameters

page (integer, 1 by default) • Specify which page of results to retrieve when using pagination. It is useful for navigating through large datasets by breaking them into smaller, manageable pages. See Pagination section for more details.

limit (integer, 100 by default) • Specify the maximum number of results to return per page. It is useful for controlling the amount of data returned in a single request, especially when dealing with large datasets. See Pagination section for more details.

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Paginated list of assignees for a specified workflow step. The response is paginated and includes links to navigate through the pages.

Body Format application/json

{

current_page (integer) • Current page number

_embedded (object) : {
    items (array[object]) : [
        {
            uuid (string ) • Assignee UUID
            first_name (string ) • Assignee first name
            last_name (string ) • Assignee last name
            email (string ) • Assignee email address
        }
    ]
  }

_links (object) : {
    self (object) : {
        href (string) • URI of the current page of resources
    }
    first (object) : {
        href (string) • URI of the first page of resources
    }
    previous (object) : {
        href (string) • URI of the previous page of resources
    }
    next (object) : {
        href (string) • URI of the next page of resources
    }
  }

}

Example

{
      "_links": {
        "self": {
          "href": "https://demo.akeneo.com/api/rest/v1/workflows/steps/f626d0e5-84a5-41fc-8215-65508c253edb/assignees?page=1&limit=10"
        },
        "first": {
          "href": "https://demo.akeneo.com/api/rest/v1/workflows/steps/f626d0e5-84a5-41fc-8215-65508c253edb/assignees?page=1&limit=10"
        },
        "next": {
          "href": "https://demo.akeneo.com/api/rest/v1/workflows/steps/f626d0e5-84a5-41fc-8215-65508c253edb/assignees?page=2&limit=10"
        }
      },
      "current_page": 1,
      "_embedded": {
        "items": [
          {
            "uuid": "25566245-55c3-42ce-86d9-8610ac459fa8",
            "first_name": "John",
            "last_name": "Doe",
            "email": "john@example.com"
          },
          {
            "uuid": "be6354b0-4545-4aaa-882d-aa14be68642c",
            "first_name": "Julia",
            "last_name": "Stark",
            "email": "julia@example.com"
          }
        ]
      }
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Workflow executions

Start several workflow executions

This endpoint allows you to start workflow executions for products and/or product models


REQUEST

post /api/rest/v1/workflows/executions

Path parameters

Ø

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/json', no other value allowed

Body

Follow the standard format of the entity

{

   [

       workflow (object{uuid : string}) • Workflow UUID

       product (object{uuid : string}) • Product UUID

   ]

}

Example

[
      {
        "workflow": {
          "uuid": "6f37476a-04c2-46c0-b6d0-e18316959068"
        },
        "product": {
          "uuid": "87654321-4321-4321-4321-210987654321"
        }
      },
      {
        "workflow": {
          "uuid": "6f37476a-04c2-46c0-b6d0-e18316959068"
        },
        "product_model": {
          "code": "model_1234"
        }
      }
    ]

RESPONSES

Workflow execution started successfully. All elements have been processed.

Body Format application/json

Ø

Multi-status response. Workflow execution started with some errors.

Body Format application/json

{

code (integer)

message (string)

processed (integer) • Number of successfully processed elements

errors (array [object]) : [
        {
         index (integer) • Index of the failed element in the request array
         message (string) • Error message
        }
    ]

}

This response indicates that the server cannot process the request due to a client error, such as malformed request syntax, invalid request message framing, or deceptive request routing. It is typically used when the server cannot understand the request due to invalid JSON or other client-side issues.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 400,
      "message": "Invalid JSON message received"
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the server cannot produce a response matching the list of acceptable values defined in the request's Accept header. It is typically used when the requested resource is not available in the requested format.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 406,
      "message": "xxx in `Accept` header is not valid. Only `application/json` is allowed."
    }

Workflow tasks

Get list of workflow tasks

Retrieves a paginated list of tasks for a specified workflow step


REQUEST

get /api/rest/v1/workflows/tasks

Path parameters

Ø

Query parameters

search (string) • Stringified JSON to filter tasks. For more details see the Filters section.

with_attributes (boolean) • Whether to include task attributes in the response

page (integer, 1 by default) • Specify which page of results to retrieve when using pagination. It is useful for navigating through large datasets by breaking them into smaller, manageable pages. See Pagination section for more details.

limit (integer, 100 by default) • Specify the maximum number of results to return per page. It is useful for controlling the amount of data returned in a single request, especially when dealing with large datasets. See Pagination section for more details.

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Accept • Equal to 'application/json', no other value allowed

Body

Ø


RESPONSES

Paginated list of tasks for a specified workflow step. The response is paginated and includes links to navigate through the pages.

Body Format application/json

{

_links (object) : {
    self (object) : {
        href (string) • URI of the current page of resources
    }
    first (object) : {
        href (string) • URI of the first page of resources
    }
    previous (object) : {
        href (string) • URI of the previous page of resources
    }
    next (object) : {
        href (string) • URI of the next page of resources
    }
  }

current_page (integer) • Current page number

_embedded (object) : {
    items (array) : [
        {
          _links (object) : {
              self (object) : {
                  href (string) • URI of the resource
              }
              edit (object) : {
                  href (string) • URL to access the task in Akeneo
              }
          }
          uuid (string) • Task UUID
          status (string) • Task status
          created_at (string) • Task creation date
          product (object) : {
              uuid (string) • Product UUID
          }
          product_model (object) : {
              code (string) • Product model code
          }
          due_date (string,null) • Due date
          rejected (boolean) • Whether the task is rejected
          pending_attributes (object) • Object of attributes for the task that are awaiting completion or require user input. Each key is an attribute code and each value is an array of objects with information on locale, scope, rejection status and comment. This field is only included when with_attributes=true.
        }
    ]
  }

}

Example

{
      "_links": {
        "self": {
          "href": "https://demo.akeneo.com/api/rest/v1/workflows/tasks?search={\"step_uuid\":[{\"operator\":\"=\",\"value\":\"0a2c9f49-2b4f-42a5-b7f9-6c50f6bce8e9\"}]}&page=1&limit=10"
        },
        "first": {
          "href": "https://demo.akeneo.com/api/rest/v1/workflows/tasks?search={\"step_uuid\":[{\"operator\":\"=\",\"value\":\"0a2c9f49-2b4f-42a5-b7f9-6c50f6bce8e9\"}]}&page=1&limit=10"
        },
        "next": {
          "href": "https://demo.akeneo.com/api/rest/v1/workflows/tasks?search={\"step_uuid\":[{\"operator\":\"=\",\"value\":\"0a2c9f49-2b4f-42a5-b7f9-6c50f6bce8e9\"}]}&page=2&limit=10"
        }
      },
      "current_page": 1,
      "_embedded": {
        "items": [
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/workflows/tasks/8f6c2d18-fbd4-4f7e-81df-cb3dc368fe07"
              },
              "edit": {
                "href": "https://demo.akeneo.com/public/workflows/tasks/8f6c2d18-fbd4-4f7e-81df-cb3dc368fe07/edit"
              }
            },
            "uuid": "8f6c2d18-fbd4-4f7e-81df-cb3dc368fe07",
            "status": "in_progress",
            "created_at": "2024-02-22T17:31:00Z",
            "product": {
              "uuid": "7108ee60-a1ea-4fe1-baca-b39909e23d24"
            },
            "due_date": "2024-03-31T18:00:00Z",
            "rejected": true
          },
          {
            "_links": {
              "self": {
                "href": "https://demo.akeneo.com/api/rest/v1/workflows/tasks/782dd26a-b58d-40d3-a8e2-c41bb342f20f"
              },
              "edit": {
                "href": "https://demo.akeneo.com/public/workflows/tasks/782dd26a-b58d-40d3-a8e2-c41bb342f20f/edit"
              }
            },
            "uuid": "782dd26a-b58d-40d3-a8e2-c41bb342f20f",
            "status": "in_progress",
            "created_at": "2024-02-22T17:31:00Z",
            "product_model": {
              "code": "a-product-model-code"
            },
            "due_date": "2024-03-28T18:00:00Z",
            "rejected": false
          }
        ]
      }
    }

This response indicates that the server cannot process the request due to a client error, such as malformed request syntax, invalid request message framing, or deceptive request routing. It is typically used when the server cannot understand the request due to invalid JSON or other client-side issues.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 400,
      "message": "Invalid JSON message received"
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

Update a Workflow Task's Status (Approve, Reject, Complete)

Completes or approves/rejects a task. The request body's structure depends on the action being performed.

  • To approve a 'review' task, set status to approved.
  • To complete an 'enrichment' task, set status to completed.
  • To reject a 'review' task, set status to rejected, provide send_back_to_step_uuid, and optionally provide rejected_attributes to specify details about rejected attributes.


REQUEST

patch /api/rest/v1/workflows/tasks/{uuid}

Path parameters

uuid (string) • This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate. It is essential for identifying the specific entity in the API requests. Ensure that the UUID is correctly formatted and corresponds to an existing entity in the system.

Query parameters

Ø

Headers

Authorization • Equal to 'Bearer xxx', `xxx` being the authentication token, see Authentication section

Content-type • Equal to 'application/json', no other value allowed

Body

Follow the standard format of the entity

{

status (string) • Must be 'rejected' for this action

send_back_to_step_uuid (string) • The UUID of the workflow step to which the task should be returned

rejected_attributes (object) • Optionally provides details about which attributes were rejected. For each attribute name you can specify a comment, the locale, and the scope for the rejection.

}

Example

{
      "status": "rejected",
      "send_back_to_step_uuid": "123e4567-e89b-12d3-a456-426614174000",
      "rejected_attributes": {
        "name": [
          {
            "comment": "",
            "locale": null,
            "scope": null
          }
        ],
        "description": [
          {
            "comment": "Wrong description",
            "locale": "en_US",
            "scope": "ecommerce"
          },
          {
            "comment": "",
            "locale": "fr_FR",
            "scope": "mobile"
          }
        ]
      }
    }

RESPONSES

This response indicates that the request was successful and that there is no content to return. It is typically used in response to a successful update operation where the server does not need to return any data to the client.

Headers

Location • URI of the updated resource

Body Format application/json

Ø

This response indicates that the server cannot process the request due to a client error, such as malformed request syntax, invalid request message framing, or deceptive request routing. It is typically used when the server cannot understand the request due to invalid JSON or other client-side issues.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 400,
      "message": "Invalid JSON message received"
    }

This response indicates that authentication is required to access the requested resource. It can be caused by a missing or expired token, or if the provided credentials are invalid.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 401,
      "message": "Authentication is required"
    }

This response indicates that the user does not have the permission to execute this request. It can occur when the user tries to access a resource or perform an action that they are not authorized to do.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 403,
      "message": "Access forbidden. You are not allowed to list this entity."
    }

This response indicates that the Content-type header of the request is not supported by the server. The server expects the Content-type header to be application/json, and any other value will result in this error.

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Message explaining the error

}

Example

{
      "code": 415,
      "message": "xxx in `Content-type` header is not valid.  Only `application/json` is allowed.\""
    }

Unprocessable entity

Body Format application/json

{

code (integer) • HTTP status code

message (string) • Description of the validation error

}

Example

{
      "code": 422,
      "message": "Cannot update task, provided status is not supported."
    }