openapi: 3.1.0
info:
  title: Akeneo API REFERENCE
  version: 1.0.0
  description: |
    This is the reference documentation for the Akeneo PIM REST API.
    It provides detailed information about the available endpoints, request and response formats, and authentication methods.

    For more information, visit the [Akeneo PIM documentation](https://docs.akeneo.com/).
  license:
    name: Open Software License 3.0
    url: http://opensource.org/licenses/OSL-3.0
  contact:
    name: Akeneo Support
    url: https://www.akeneo.com/support-help-center/
    email: contact@akeneo.com
servers:
  - url: '{your-pim-url}'
    variables:
      your-pim-url:
        default: ''
        description: 'Set the PIM url you want to target ex: https://my-pim.cloud.akeneo.com or https://localhost:8443'
tags:
  - name: Product [uuid]
    description: |
      A product is a single item that can be managed in the PIM.
      It can have various attributes and values, and can be associated with product models, categories, and other entities.
      Products are the core entities in the PIM and are used to manage the product information.
      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.
  - name: Product [identifier]
    description: |
      A product is a single item that can be managed in the PIM.
      It can have various attributes and values, and can be associated with product models, categories, and other entities.
      Products are the core entities in the PIM and are used to manage the product information.
      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.
  - name: Product model
    description: |
      A product model is a template for products that share the same attributes and values.
      It allows you to create a hierarchy of products, where a product model can have several variants.
      A product model can also have its own attributes and values, which are inherited by its variants.
  - name: Product media file
    description: |
      A media file is a file that can be attached to a product, product model, category, or asset.
      It can be an image, a video, a PDF, or any other type of file.
      Media files are used to enrich the product information and provide additional context to the products.
  - name: Jobs
    description: |
      A job is a process that can be executed in the PIM to perform various tasks, such as importing or exporting data.
      Jobs can be used to synchronize data between the PIM and external systems, or to perform bulk operations on products, product models, or other entities.
  - name: Family
    description: |
      A family is a set of attributes that are shared by products belonging to this family.
      In other words, a family can be considered as a template for products.
      A product family can use all of the attributes available in the PIM.
      Several families of products can use the same attributes.
  - name: Family variant
    description: |
      A family variant is a specific type of family that allows you to create variants of a product model.
      It allows you to define the attributes and values that are specific to the variants of a product model.
      Family variants are used to manage the relationships between product models and their variants.
  - name: Attribute
    description: |
      An attribute is a piece of information that can be associated with a product or product model.
      Attributes can be used to store various types of data, such as text, numbers, dates, or media files.
      They are used to define the characteristics of products and to provide additional information about them.
  - name: Attribute option
    description: |
      An attribute option is a value that can be associated with an attribute.
      For example, if you have an attribute called "Color", the options could be "Red", "Blue", "Green", etc.
      Options are used to provide predefined values for attributes, making it easier to manage and maintain product data.
  - name: Attribute group
    description: |
      An attribute group is a way to organize attributes in the PIM.
      It allows you to group related attributes together, making it easier to manage and maintain product data.
      For example, you could have an attribute group called "Specifications" that contains attributes like "Weight", "Dimensions", and "Material".
  - name: Association type
    description: |
      An association type is a way to define the relationship between products or product models.
      It allows you to create links between products, such as "related products", "up-sell products", or "cross-sell products".
      Association types are used to manage the relationships between products and to provide additional context to the product information.
  - name: Category
    description: |
      A category is a way of classifying products.
      Categories constitute category trees and in Akeneo, you can have multiple category trees with an unlimited number of levels (categories, subcategories, subsubcategories..).
  - name: Channel
    description: |
      A channel is a way to define how products are presented in different contexts, such as online stores, mobile applications, or print catalogs.
      Channels can have different configurations, such as currencies, locales, and measurement systems.
      They allow you to tailor the product information to specific markets or audiences.
  - name: Locale
    description: |
      A locale is a combination of a language (English, German, French...) and a country (United States, United Kingdom, France...).
      Examples: English UK (en_GB), English US (en_US), English AU (en_AU).
      You can have one or more locales activated in your PIM.
  - name: Currency
    description: |
      A currency is a unit of exchange that is used to price products.
      Currencies are used in the PIM to define the prices of products in different markets.
  - name: Measurement family
    description: |
      A measurement family is a set of comparable units used to measure a specific physical quantity, such as Area, Weight, or Power. 
      For example, the "Weight" measurement family can group units like "Kilogram" and "Pound" together. 
      Each family has a standard unit for conversions (e.g., "Kilogram"), and all other units within that family include their conversion formulas. 
      These families are used for metric attributes, allowing product data to be entered in one unit and automatically converted for different channels or locales.
  - name: Reference entity
    description: |
      A reference entity is a custom entity that can be used to store additional information about products or product models.
      It allows you to create your own entities with their own attributes and values, which can be linked to products or product models.
      Reference entities are useful for managing complex data structures or for integrating with external systems.
  - name: Reference entity attribute
    description: |
      A reference entity attribute is a piece of information that can be associated with a reference entity.
      Reference entity attributes can be used to store various types of data, such as text, numbers, dates, or media files.
      They are used to define the characteristics of reference entities and to provide additional information about them.
  - name: Reference entity attribute option
    description: |
      A reference entity attribute option is a value that can be associated with a reference entity attribute.
      For example, if you have a reference entity attribute called "Category", the options could be "Electronics", "Clothing", "Books", etc.
      Options are used to provide predefined values for reference entity attributes, making it easier to manage and maintain reference entity data.
  - name: Reference entity record
    description: |
      A reference entity record is a specific instance of a reference entity.
      It contains the values for the attributes defined in the reference entity.
      Reference entity records can be linked to products or product models, allowing you to associate additional information with them.
  - name: Reference entity media file
    description: |
      A reference entity media file is a file that can be attached to a reference entity record.
      It can be an image, a video, a PDF, or any other type of file.
      Reference entity media files are used to enrich the reference entity information and provide additional context to the reference entities.
  - name: Asset family
    description: |
      An asset family is a set of attributes that are shared by assets belonging to this family.
      In other words, an asset family can be considered as a template for assets.
  - name: Asset attribute
    description: |
      An asset attribute is a piece of information that can be associated with an asset.
      Asset attributes can be used to store various types of data, such as text, numbers, dates, or media files.
      They are used to define the characteristics of assets and to provide additional information about them.
  - name: Asset attribute option
    description: |
      An asset attribute option is a value that can be associated with an asset attribute.
      For example, if you have an asset attribute called "Type", the options could be "Image", "Video", "Document", etc.
      Options are used to provide predefined values for asset attributes, making it easier to manage and maintain asset data.
  - name: Asset media file
    description: |
      An asset media file is a file that can be attached to an asset family or an asset.
      It can be an image, a video, a PDF, or any other type of file.
      Asset media files are used to enrich the asset information and provide additional context to the assets.
  - name: Asset
    description: |
      An asset is a flexible object that makes it possible to enrich products with images, videos, documents…
      An asset must be part of an asset family. That way, it will have its own attributes and lifecycle.
      Assets can be linked to products and product models, in order to enrich them.
  - name: Catalogs
    description: |
      A catalog is a collection of products that can be managed in the PIM.
      It allows you to create a subset of products that can be used in specific contexts, such as online stores, mobile applications, or print catalogs.
      Catalogs can have their own configurations, such as channels, locales, and measurement systems.
  - name: Catalog products
    description: |
      A catalog contains a selection of products from the PIM, intended to be synchronized with a third-party application via the API.
      The Catalog products endpoint allows you to retrieve the list of products for a given catalog, with options to filter, paginate, and select the returned fields.
      Each returned product includes its attributes, values, status information, and associated references, all in the context of the catalog.
      This endpoint is mainly used by Apps to synchronize product data between Akeneo PIM and external platforms, while respecting access rights and catalog configuration.
  - name: Mapping schema for products
    description: |
      The mapping schema for products defines the expected structure of product data when synchronizing via the API.
      It describes the fields, their types, constraints, and transformation rules applied during the export or import of products in a catalog connected to an App.
      This schema ensures data consistency between Akeneo PIM and third-party applications by clarifying how PIM attributes correspond to those expected by the App.
      For each field, the schema specifies the data type (text, number, boolean, etc.), whether the field is required or optional, and any allowed values or transformations to apply.
  - name: Overview
    description: |
      This API reference provides comprehensive documentation for the Akeneo PIM REST API.  
      It describes all available endpoints, request and response formats, authentication methods, and error codes.
      The Akeneo PIM REST API enables you to interact programmatically with your PIM instance, allowing you to manage products, product models, attributes, categories, assets, reference entities, and more.  
      You can use the API to integrate Akeneo PIM with other systems, automate data flows, and build custom applications.
      All API endpoints are organized by resource type and support standard HTTP methods (GET, POST, PUT, PATCH, DELETE).  
      Authentication is required for all endpoints and is based on OAuth 2.0 or HTTP Basic authentication.
      For more details, please refer to the [official Akeneo API documentation](https://api.akeneo.com/).
  - name: Authentication
    description: |
      The Authentication endpoints provide methods to authenticate and authorize access to the Akeneo PIM API.  
      You can use these endpoints to obtain an access token, which is required for accessing protected resources in the API.  
      The authentication process typically involves providing credentials (username and password) or using OAuth 2.0 for secure access.
  - name: System
    description: |
      The System endpoints provide information about the Akeneo PIM instance and its environment.  
      You can use these endpoints to retrieve details such as the PIM version, edition, enabled features, and system health.  
      This information is useful for monitoring, troubleshooting, and ensuring compatibility with integrations or applications that interact with the PIM API.
  - name: UI Extensions
    description: |
      UI Extensions allow you to extend the Akeneo PIM user interface with custom components.
      They can be used to add new features or to modify the existing ones.
      UI Extensions are useful for integrating with external systems or for providing additional functionality to the PIM.
  - name: Workflows
    description: |
      Workflows are a way to automate processes in the PIM.
      They allow you to define a sequence of steps that can be executed automatically or manually.
      Workflows can be used to manage the lifecycle of products, product models, assets, and other entities in the PIM.
  - name: Workflow tasks
    description: |
      Workflow tasks are specific actions that can be assigned to users or groups within a workflow.
      They represent the work that needs to be done at each step of the workflow.
      Tasks can be assigned to users, and they can be completed, approved or rejected.
      This allows for better collaboration and tracking of progress within workflows.
paths:
  /api/rest/v1/products-uuid:
    get:
      summary: Get list of products
      operationId: get_products_uuid
      tags:
        - Product [uuid]
      security:
        - bearerToken: []
      description: |
        This endpoint allows you to get a list of products. Products are paginated
        and they can be filtered. In the Enterprise Edition, permissions based on
        your user groups are applied to the set of products you request.
      parameters:
        - name: search
          in: query
          description: |
            Filter products, for more details see the [Filters](https://api.akeneo.com/documentation/filter.html) section.
          required: false
          schema:
            type: string
          examples:
            getProductsByProductUuid:
              summary: Filter the products by their uuid
              value: '{"uuid":[{"operator":"IN","value":["8945388d-cf5b-49af-8799-05d1ed6e296f", "941fe892-99dd-440f-b2a9-8eccb94248f0"]}]}'
            getProductsByCategory:
              summary: Filter the products by their category
              value: '{"categories":[{"operator":"IN","value":["winter_collection"]}]}'
            getProductsByCategoryButNotInAnother:
              summary: Filter the products categorized on the Winter Collection category and that are not categorized on the Accessories category
              value: '{"categories":[{"operator":"IN","value":["winter_collection"]},{"operator":"NOT IN","value":["accessories"]}]}'
            getProductsByStatus:
              summary: Filter the products by their status
              value: '{"enabled":[{"operator":"=","value":false}]}'
            getProductsByCompleteness:
              summary: Filter the products by their completeness
              value: '{"completeness":[{"operator":"=","value":50,"scope":"ecommerce"}]}'
            getProducts100PercentComplete:
              summary: Filter the products that are 100% complete on both the en_US and fr_FR locales for the ecommerce channel
              value: '{"completeness":[{"operator":"GREATER OR EQUALS THAN ON ALL LOCALES","value":100,"locales":["en_US","fr_FR"],"scope":"ecommerce"}]}'
            getProductsByGroup:
              summary: Filter the products by their group
              value: '{"groups":[{"operator":"IN","value":["promotion"]}]}'
            getProductsByFamily:
              summary: Filter the products by their family
              value: '{"family":[{"operator":"NOT IN","value":["camcorders","digital_cameras"]}]}'
            getProductsByCreationDate:
              summary: Filter the products by their creation date
              value: '{"created":[{"operator":"=","value":"2016-07-04 10:00:00"}]}'
            getProductsByUpdatedDate:
              summary: Filter the products updated since X days
              value: '{"updated":[{"operator":"SINCE LAST N DAYS","value":4}]}'
            getVariantProductsByProductModelCode:
              summary: Filter the variant products by their parent
              value: '{"parent":[{"operator":"IN","value":["tops"]}]}'
            getVariantProductsBySubProductModelCodes:
              summary: Filter the variant products by their sub product model
              value: '{"parent":[{"operator":"IN","value":["tshirt_armor_blue","tshirt_armor_red"]}]}'
            getAllVariantProducts:
              summary: Get all variant products
              value: '{"parent":[{"operator":"NOT EMPTY"}]}'
            getAllSimpleProducts:
              summary: Get all simple products
              value: '{"parent":[{"operator":"EMPTY"}]}'
            getProductsByQualityScore:
              summary: Filter the products with a "D" for the ecommerce channel and en_US locale
              value: '{"quality_score":[{"operator":"IN","value":["D"],"scope":"ecommerce","locale":"en_US"}]}'
            getProductsWithMultipleQualityScores:
              summary: Filter the products with an "A" or "B" for the mobile channel and en_GB locale
              value: '{"quality_score":[{"operator":"IN","value":["A","B"],"scope":"mobile","locale":"en_GB"}]}'
            getEnabledProducts:
              summary: Get only enabled products
              value: '{"enabled":[{"operator":"=","value":true}]}'
            getEnabledProductsCompleteAtLeast70Percent:
              summary: Get only enabled products that are at least 70% complete on the ecommerce channel
              value: '{"enabled":[{"operator":"=","value":true}],"completeness":[{"operator":">","value":70,"scope":"ecommerce"}]}'
            getProductsByAttributeValue:
              summary: Filter the products by an attribute value
              value: '{"main_color":[{"operator":"IN","value":["purple"]}]}'
            getProductsWithSpecificDescription:
              summary: Filter the products having a description begining with Amazing on the en_US locale
              value: '{"description":[{"operator":"STARTS WITH","value":"Amazing","locale":"en_US"}]}'
            getProductsWithSpecificReleaseDate:
              summary: Filter the products that have a release date due after the 4th of July 2016 for the ecommerce channel
              value: '{"release_date":[{"operator":">","value":"2016-07-04","scope":"ecommerce"}]}'
            getProductsContainingText:
              summary: Filter the products containing a text in the name attribute
              value: '{"name":[{"operator":"CONTAINS","value":"shirt","locale":"en_US","scope":"mobile"}]}'
            getProductsByMultipleAttributeValues:
              summary: Filter the products by multiple attribute values
              value: '{"description":[{"operator":"STARTS WITH","value":"Amazing","locale":"en_US","scope":"ecommerce"}],"main_color":[{"operator":"IN","value":["purple"]}]}'
            getProductsByMultipleAttributeConditions:
              summary: Filter the products by multiple attribute conditions
              value: '{"description":[{"operator":"NOT EMPTY","locale":"en_US","scope":"ecommerce"},{"operator":"EMPTY","locale":"fr_FR","scope":"ecommerce"}]}'
        - in: query
          name: scope
          description: |
            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](https://api.akeneo.com/documentation/filter.html#via-channel) section.
          required: false
          schema: &ref_27
            type: string
          example: ecommerce
        - in: query
          name: locales
          description: |
            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](https://api.akeneo.com/documentation/filter.html#via-locale) section.
          required: false
          schema: &ref_28
            type: string
          example: en_US,fr_FR
        - in: query
          name: attributes
          description: |
            Filter product values to only return those concerning the given attributes,
            for more details see the [Filter product values via attributes](https://api.akeneo.com/documentation/filter.html#via-attributes) section.
          required: false
          schema: &ref_29
            type: string
          example: name,description
        - in: query
          name: pagination_type
          description: |
            Pagination method type, see [Pagination](https://api.akeneo.com/documentation/pagination.html) section.
          required: false
          schema: &ref_7
            type: string
            enum:
              - page
              - search_after
            default: page
          example: page
        - in: query
          name: page
          description: |
            The `page` query parameter allows you to 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](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: &ref_8
            type: integer
            default: 1
          example: 1
        - in: query
          name: search_after
          description: |
            Cursor when using the `search_after` pagination method type.
            Should never be set manually, see [Pagination](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: &ref_9
            type: string
            default: cursor to the first page
          example: qaXbcde
        - in: query
          name: limit
          description: |
            The `limit` query parameter allows you to 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](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: &ref_10
            type: integer
            default: 10
            minimum: 1
            maximum: 100
          example: 100
        - in: query
          name: search_scope
          description: |
            The `search_scope` query parameter allows you to 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](https://api.akeneo.com/documentation/filter.html#search_scope-query-parameter) section.
          required: false
          schema: &ref_30
            type: string
          example: ecommerce
        - in: query
          name: search_locale
          description: |
            The `search_locale` query parameter allows you to 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](https://api.akeneo.com/documentation/filter.html#search_locale-query-parameter) section.
          required: false
          schema: &ref_31
            type: string
          example: en_US
        - in: query
          name: convert_measurements
          description: |
            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.
          schema: &ref_32
            type: boolean
            default: false
          required: false
          example: true
        - in: query
          name: with_count
          description: |
            The `with_count` query parameter allows you to 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.
          required: false
          schema: &ref_11
            type: boolean
            default: false
          example: true
        - in: query
          name: with_attribute_options
          description: |
            Return labels of attribute options in the response.
            See [the `linked_data` format](https://api.akeneo.com/concepts/products.html#the-linked_data-format) section for more details.
            (Only available since the 5.0 version)
          required: false
          schema: &ref_14
            type: boolean
            default: false
          example: true
        - in: query
          name: with_asset_share_links
          description: |
            Whether to return asset collection share link URLs in the response. 
            See [the `linked_data` format](https://api.akeneo.com/concepts/products.html#the-linked_data-format) for more details.
            (Only available in the SaaS version)
          required: false
          schema: &ref_15
            type: boolean
            default: false
          example: true
        - in: query
          name: with_quality_scores
          description: |
            Return product quality scores in the response.
            (Only available since the 5.0 version)
          required: false
          schema: &ref_16
            type: boolean
            default: false
          example: true
        - in: query
          name: with_completenesses
          description: |
            Return product completenesses in the response.
            (Only available since the 6.0 version)
          required: false
          schema: &ref_17
            type: boolean
            default: false
          example: true
        - in: query
          name: with_root_parent
          description: |
            Return the root parent product model code of a variant.
            (Only available for SaaS version)
          required: false
          schema: &ref_18
            type: boolean
            default: false
          example: true
      responses:
        '200':
          description: Returns products paginated
          content: &ref_12
            application/json:
              schema:
                title: Products
                type: object
                allOf:
                  - type: object
                    properties: &ref_36
                      _links:
                        type: object
                        properties:
                          self:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the current page of resources
                                example: https://demo.akeneo.com/api/rest/v1/categories?page=2&limit=5
                          first:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the first page of resources
                                example: https://demo.akeneo.com/api/rest/v1/categories?page=1&limit=5
                          previous:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the previous page of resources
                                example: https://demo.akeneo.com/api/rest/v1/categories?page=1&limit=5
                          next:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the next page of resources
                                example: https://demo.akeneo.com/api/rest/v1/categories?page=3&limit=5
                  - type: object
                    properties:
                      current_page:
                        type: integer
                        description: Current page number
                        example: 3
                      _embedded:
                        type: object
                        properties:
                          items:
                            type: array
                            items:
                              allOf:
                                - type: object
                                  properties:
                                    _links:
                                      type: object
                                      properties:
                                        self:
                                          type: object
                                          properties:
                                            href:
                                              type: string
                                              description: URI of the resource
                                - type: object
                                  allOf: &ref_19
                                    - type: object
                                      properties: &ref_37
                                        family:
                                          type:
                                            - string
                                            - 'null'
                                          description: |
                                            Family code from which the product inherits its attributes and attributes requirements. It is equal to an existing family code. In the case of variant product, the given family should be the same as the product model family.
                                          default: null only in the case of a non variant product
                                          example: smartphone
                                        categories:
                                          type: array
                                          description: Codes of the categories in which the product is classified. Each string of the array is equal to an existing category code.
                                          items:
                                            type: string
                                          default: []
                                          example:
                                            - smartphones
                                            - electronics
                                        parent:
                                          type:
                                            - string
                                            - 'null'
                                          description: |
                                            Code of the parent product model when the product is a variant. It is equal to an existing product model code only if the product is variant otherwise it's equal to null.
                                          default: null
                                          example: my_super_battery
                                        values:
                                          type: object
                                          description: Product attributes values. See Akeneo documentation for more details. Validation rules detailed in Product values section.
                                          patternProperties:
                                            ^\w+$:
                                              type: array
                                              items:
                                                type: object
                                                description: |
                                                  A value for a given attribute, for a given locale/scope combination.
                                                  - locale: Locale code, or null if not localizable.
                                                  - scope: Channel code, or null if not scopable.
                                                  - data: The value for this attribute/locale/scope. Type and format depend on the attribute type (see Akeneo docs).
                                                  - linked_data: Additional data for select/multiselect/asset attributes. Read-only.
                                                  - attribute_type: The type of the value's attribute. Read-only.
                                                  - reference_data_name: Reference entity code or asset family code. Read-only.
                                                properties: &ref_1
                                                  locale:
                                                    type:
                                                      - string
                                                      - 'null'
                                                    description: '[Locale](https://api.akeneo.com/api-reference.html#Locale) code of the product value'
                                                    example: en_US
                                                  scope:
                                                    type:
                                                      - string
                                                      - 'null'
                                                    description: '[Channel](https://api.akeneo.com/api-reference.html#Channel) code of the product value'
                                                    example: ecommerce
                                                  data:
                                                    description: |
                                                      The value for this attribute/locale/scope. Type and format depend on the attribute type.
                                                      - String for text, textarea, file, image, date, simple select, reference data simple select, reference entity.
                                                      - Array of strings for multi select, reference data multi select, reference entity collection, asset collection, PAM asset collection.
                                                      - Integer or string for number (depending on decimals_allowed).
                                                      - Boolean for boolean attributes.
                                                      - Object for metric, containing an "amount" (int) and "unit" (string) key
                                                      - Object for product link, containing a "type" (string) and "id" (string) key
                                                      - Object for table, containing different keys (int, boolean or string)
                                                      - Object for price, with a "amount" (int) and a "currency" (string) key
                                                    anyOf:
                                                      - type: string
                                                        description: A reference entity value. The string is the code of the reference entity.
                                                        example: designer_ref
                                                      - type: array
                                                        description: A reference entity collection value. The array contains codes of reference entities.
                                                        items:
                                                          type: string
                                                        example:
                                                          - designer_ref_1
                                                          - designer_ref_2
                                                      - type: array
                                                        description: An asset collection value. The array contains asset codes.
                                                        items:
                                                          type: string
                                                        example:
                                                          - left_side
                                                          - right_side
                                                      - type: boolean
                                                        description: A boolean value. Used for attributes of type pim_catalog_boolean.
                                                        example: true
                                                      - type: string
                                                        format: date
                                                        description: A date value in YYYY-MM-DD format. Used for attributes of type pim_catalog_date.
                                                        example: '2021-04-29T08:58:00.101Z'
                                                      - type: string
                                                        description: A file value. The string is a file key referencing the uploaded file.
                                                        example: f/2/e/6/f2e6674e0766acdc70f814_myFile.pdf
                                                      - type: string
                                                        description: An identifier value. Used for attributes of type pim_catalog_identifier.
                                                        example: SKU-12345
                                                      - type: string
                                                        description: An image value. The string is a file key referencing the uploaded image.
                                                        example: 1/d/7/f/1d7f0987000cea4d14908fe679af4e36ea3632ef_10806799_1356.jpg
                                                      - type: object
                                                        description: A metric value. Object with amount and unit.
                                                        properties:
                                                          amount:
                                                            description: |
                                                              The amount of the metric.
                                                              - String representing a number if allowed on attribute settings ("decimals_allowed" parameter)
                                                              - Integer if the attribute does not allow decimals.
                                                            oneOf:
                                                              - type: string
                                                                example: '800.0000'
                                                              - type: integer
                                                                example: 800
                                                          unit:
                                                            type: string
                                                            description: The unit of the metric.
                                                            example: GRAM
                                                        required:
                                                          - amount
                                                          - unit
                                                        example:
                                                          amount: '800.0000'
                                                          unit: GRAM
                                                      - type: array
                                                        description: A multi select value. The array contains option codes.
                                                        items:
                                                          type: string
                                                        example:
                                                          - summer_2017
                                                          - winter_2016
                                                      - anyOf:
                                                          - type: number
                                                          - type: string
                                                            pattern: ^\\d+(\\.\\d+)?$
                                                        description: A number value. Used for attributes of type pim_catalog_number. Can be integer or decimal, depending on attribute settings ("decimals_allowed" parameter).
                                                        example: 42.5
                                                      - type: array
                                                        description: A price collection value. The array contains objects with amount and currency.
                                                        items:
                                                          type: object
                                                          properties:
                                                            amount:
                                                              description: |
                                                                The amount of the price.
                                                                - String representing a number if the attribute allows decimals.
                                                                - Integer if the attribute does not allow decimals.
                                                              oneOf:
                                                                - type: string
                                                                  example: '12.50'
                                                                - type: integer
                                                                  example: 10
                                                            currency:
                                                              type: string
                                                              description: The currency code.
                                                              example: USD
                                                          required:
                                                            - amount
                                                            - currency
                                                        example:
                                                          - amount: '12.50'
                                                            currency: USD
                                                          - amount: 10
                                                            currency: EUR
                                                      - type: object
                                                        oneOf:
                                                          - type: object
                                                            description: Link to a product by UUID or identifier.
                                                            properties:
                                                              type:
                                                                type: string
                                                                enum:
                                                                  - product
                                                                description: The type of the linked entity.
                                                                example: product
                                                              id:
                                                                type: string
                                                                description: The UUID of the linked product.
                                                                example: fc24e6c3-933c-4a93-8a81-e5c703d134d5
                                                            required:
                                                              - type
                                                              - id
                                                            additionalProperties: false
                                                          - type: object
                                                            description: Link to a product by identifier.
                                                            properties:
                                                              type:
                                                                type: string
                                                                enum:
                                                                  - product
                                                                description: The type of the linked entity.
                                                                example: product
                                                              identifier:
                                                                type:
                                                                  - string
                                                                  - 'null'
                                                                description: The identifier of the linked product.
                                                                example: bl1850b
                                                            required:
                                                              - type
                                                              - identifier
                                                            additionalProperties: false
                                                          - type: object
                                                            description: Link to a product model by code.
                                                            properties:
                                                              type:
                                                                type: string
                                                                enum:
                                                                  - product_model
                                                                description: The type of the linked entity.
                                                                example: product_model
                                                              id:
                                                                type: string
                                                                description: The code of the linked product model.
                                                                example: my_super_battery
                                                            required:
                                                              - type
                                                              - id
                                                            additionalProperties: false
                                                        description: |
                                                          A product link value. Object with:
                                                            - type: 'product' or 'product_model'
                                                            - id: UUID (for product) or code (for product_model)
                                                            - identifier: identifier (for product)
                                                          Only one of id or identifier is present, depending on the type and linking method.
                                                        example:
                                                          type: product
                                                          id: fc24e6c3-933c-4a93-8a81-e5c703d134d5
                                                      - type: string
                                                        description: A simple select value. The string is the option code.
                                                        example: black
                                                      - type: array
                                                        description: |
                                                          A table value. Each item in the array is a row, represented as an object.
                                                          Each key in the row object is a column code, and the value depends on the column type:
                                                            - string (for text, select, reference entity, date)
                                                            - integer or number (for number, depending on decimals_allowed)
                                                            - boolean (for yes/no)
                                                            - object (for product link, measurement, etc.)
                                                          The first column is always a select, reference entity, incremental number, or product link.
                                                          The table structure (columns and types) is defined in the attribute configuration.
                                                        items:
                                                          type: object
                                                          description: |
                                                            The value for the column identified by the key. The type of the value depends on the column type defined in the attribute configuration.
                                                          patternProperties:
                                                            ^\w+$:
                                                              oneOf:
                                                                - type: string
                                                                  description: Text, select, reference entity, or date value
                                                                  example: value1
                                                                - type: number
                                                                  description: Decimal value (number column, with or without decimals)
                                                                  example: 3.14
                                                                - type: boolean
                                                                  description: Boolean value (yes/no column)
                                                                  example: true
                                                                - type: object
                                                                  description: Product link value (see pim_catalog_product_link)
                                                                  properties:
                                                                    type:
                                                                      type: string
                                                                      enum:
                                                                        - product
                                                                        - product_model
                                                                      description: The type of the linked entity.
                                                                      example: product
                                                                    id:
                                                                      type: string
                                                                      description: The UUID (for product) or code (for product_model).
                                                                      example: fc24e6c3-933c-4a93-8a81-e5c703d134d5
                                                                    identifier:
                                                                      type: string
                                                                      description: The identifier of the linked product (alternative to id for product).
                                                                      example: bl1850b
                                                                  required:
                                                                    - type
                                                                  additionalProperties: false
                                                                - type: object
                                                                  description: Measurement value (metric column)
                                                                  properties:
                                                                    amount:
                                                                      oneOf:
                                                                        - type: string
                                                                          pattern: ^-?\d+\.\d+$
                                                                          example: '12.50'
                                                                        - type: integer
                                                                          example: 10
                                                                      description: The amount of the measurement.
                                                                    unit:
                                                                      type: string
                                                                      description: The unit of the measurement.
                                                                      example: GRAM
                                                                  required:
                                                                    - amount
                                                                    - unit
                                                                  additionalProperties: false
                                                        example:
                                                          - ingredient: Sugar
                                                            quantity: 10
                                                            organic: true
                                                            best_before: '2024-12-31'
                                                            included_product:
                                                              type: product
                                                              id: fc24e6c3-933c-4a93-8a81-e5c703d134d5
                                                            weight:
                                                              amount: '12.50'
                                                              unit: GRAM
                                                      - type: string
                                                        description: A text value. Used for attributes of type pim_catalog_text.
                                                        example: T-shirt long sleeves Winter special, 100% wool
                                                      - type: string
                                                        description: A textarea value. Used for attributes of type pim_catalog_textarea.
                                                        example: This is a long product description with multiple lines.
                                                      - type: 'null'
                                                        description: Null value used to clear/remove attribute values
                                                    example: T-shirt long sleeves Winter special, 100% wool
                                                  linked_data:
                                                    type:
                                                      - object
                                                      - 'null'
                                                    description: Object containing additional data when a related query parameter is enabled. See [the `linked_data` format](https://api.akeneo.com/concepts/products.html#the-linked_data-format) section for more details. (only available since the 5.0)
                                                    example:
                                                      attribute: main_color
                                                      code: black
                                                      labels:
                                                        en_US: Black
                                                        fr_FR: Noir
                                                  attribute_type:
                                                    type: string
                                                    description: The type of the value's attribute. See [type](https://api.akeneo.com/concepts/catalog-structure.html#attribute) section for more details.
                                                    readOnly: true
                                                    enum:
                                                      - pim_catalog_identifier
                                                      - pim_catalog_text
                                                      - pim_catalog_textarea
                                                      - pim_catalog_simpleselect
                                                      - pim_catalog_multiselect
                                                      - pim_catalog_boolean
                                                      - pim_catalog_date
                                                      - pim_catalog_number
                                                      - pim_catalog_metric
                                                      - pim_catalog_price_collection
                                                      - pim_catalog_image
                                                      - pim_catalog_file
                                                      - pim_catalog_asset_collection
                                                      - akeneo_reference_entity
                                                      - akeneo_reference_entity_collection
                                                      - pim_reference_data_simpleselect
                                                      - pim_reference_data_multiselect
                                                      - pim_catalog_table
                                                      - pim_catalog_product_link
                                                    example: pim_catalog_text
                                                  reference_data_name:
                                                    type: string
                                                    description: 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`
                                                    readOnly: true
                                                    example: designer_ref
                                                  _links:
                                                    type:
                                                      - object
                                                      - 'null'
                                                    description: Object containing download links for media files (images, files). Only present for file and image attribute types.
                                                    readOnly: true
                                                    properties:
                                                      download:
                                                        type: object
                                                        properties:
                                                          href:
                                                            type: string
                                                            description: URL for downloading the media file
                                                            example: http://localhost/api/rest/v1/media-files/path/to/file/download
                                                    example:
                                                      download:
                                                        href: http://localhost/api/rest/v1/media-files/5/d/b/1/5db16b5800314d8bc6358fb80b75f0fb0dedc6d0_akeneo.jpg/download
                                                required: &ref_2
                                                  - data
                                          example:
                                            description:
                                              - data: T-shirt long sleeves Winter special, 100% wool
                                                locale: null
                                                scope: null
                                        associations:
                                          oneOf:
                                            - type: object
                                            - type: array
                                          description: |
                                            Several associations related to groups, product models and/or other products, grouped by association types.
                                            Should be an object, but temporarily accepting arrays for backward compatibility.
                                          patternProperties:
                                            ^\w+$:
                                              type: object
                                              properties:
                                                groups:
                                                  type: array
                                                  description: Array of groups codes with which the product is in relation
                                                  items:
                                                    type: string
                                                products:
                                                  type: array
                                                  description: Array of product identifiers with which the product is in relation
                                                  items:
                                                    type: string
                                                product_models:
                                                  type: array
                                                  description: Array of product model codes with which the product is in relation (only available since the v2.1)
                                                  items:
                                                    type: string
                                          additionalProperties: false
                                          example:
                                            X_SELL:
                                              groups: []
                                              products:
                                                - product_1
                                                - product_2
                                              product_models:
                                                - product_model_1
                                            UPSELL:
                                              groups:
                                                - group_1
                                              products: []
                                              product_models: []
                                        quantified_associations:
                                          oneOf:
                                            - type: object
                                            - type: array
                                          description: |
                                            Several quantified associations related to products and/or product models, grouped by quantified association types (only available since the 5.0).
                                            Should be an object, but temporarily accepting arrays for backward compatibility.
                                          patternProperties:
                                            ^\w+$:
                                              type: object
                                              properties:
                                                products:
                                                  type: array
                                                  description: Array of objects containing product identifiers and quantities with which the product is in relation
                                                  items:
                                                    type: object
                                                    properties:
                                                      identifier:
                                                        type: string
                                                      quantity:
                                                        type: integer
                                                product_models:
                                                  type: array
                                                  description: Array of objects containing product model codes and quantities with which the product is in relation
                                                  items:
                                                    type: object
                                                    properties:
                                                      code:
                                                        type: string
                                                      quantity:
                                                        type: integer
                                          example:
                                            PACK:
                                              products:
                                                - identifier: product_1
                                                  quantity: 2
                                                - identifier: product_2
                                                  quantity: 3
                                              product_models:
                                                - code: product_model_1
                                                  quantity: 1
                                            UPSELL:
                                              products: []
                                              product_models: []
                                        root_parent:
                                          type: string
                                          readOnly: true
                                          description: |
                                            Code of the root parent product model when the product is a variant (only available for Serenity and when the "with_root_parent" is set to "true"). It is equal to an existing product model code only if the product is variant ; otherwise, the property does not appear.
                                          default: 'null'
                                          example: my_super_battery
                                        created:
                                          type: string
                                          description: Date of creation
                                          format: date-time
                                          x-immutable: true
                                          readOnly: true
                                          example: '2022-03-14T15:25:45+00:00'
                                        updated:
                                          type: string
                                          description: Date of the last update
                                          format: date-time
                                          readOnly: true
                                          example: '2022-06-24T12:54:58+00:00'
                                        metadata:
                                          type: object
                                          description: More information around the product (only available since the v2.0 in the Enterprise Edition)
                                          x-immutable: true
                                          readOnly: true
                                          properties:
                                            workflow_status:
                                              description: Status of the product regarding the user permissions
                                              type: string
                                              enum:
                                                - read_only
                                                - draft_in_progress
                                                - proposal_waiting_for_approval
                                                - working_copy
                                          example:
                                            workflow_status: read_only
                                        quality_scores:
                                          type: array
                                          items:
                                            type: object
                                            properties:
                                              scope:
                                                type: string
                                                description: Channel code for which the quality score is calculated
                                              locale:
                                                type: string
                                                description: Locale code for which the quality score is calculated
                                              data:
                                                type: string
                                                enum:
                                                  - A
                                                  - B
                                                  - C
                                                  - D
                                                  - E
                                                description: Quality score value for the given channel/locale combination
                                          description: Product quality scores for each channel/locale combination (only available since the 5.0 and when the "with_quality_scores" query parameter is set to "true")
                                          x-immutable: true
                                          readOnly: true
                                          example:
                                            - scope: ecommerce
                                              locale: en_US
                                              data: A
                                  properties: &ref_20
                                    uuid:
                                      type: string
                                      description: Product UUID
                                      example: fc24e6c3-933c-4a93-8a81-e5c703d134d5
                                    identifier:
                                      type: string
                                      description: Product identifier, i.e. the value of the only `pim_catalog_identifier` attribute
                                      example: bl1850b
                                    enabled:
                                      type: boolean
                                      description: Whether the product is enabled
                                      default: true
                                      example: true
                                    groups:
                                      type: array
                                      description: Codes of the groups to which the product belong. Each string of the array is equal to an existing group code.
                                      items:
                                        type: string
                                      default: []
                                      example:
                                        - summer_collection
                                        - sale
                                    parent:
                                      type:
                                        - string
                                        - 'null'
                                      description: |
                                        Code of the parent product model when the product is a variant. It is equal to an existing product model code only if the product is variant otherwise it's equal to null.
                                      default: null
                                      example: my_super_battery
                                    root_parent:
                                      type: string
                                      readOnly: true
                                      description: |
                                        Code of the root parent product model when the product is a variant (only available for Serenity and when the "with_root_parent" is set to "true"). It is equal to an existing product model code only if the product is variant ; otherwise, the property does not appear.
                                      default: 'null'
                                      example: my_super_battery
                        example:
                          items:
                            - _links:
                                self:
                                  href: https://demo.akeneo.com/api/rest/v1/product/top
                              uuid: aaf518b2-f91e-40f1-a53a-78ce5e81a6f9
                              identifier: top
                              family: tshirt
                              groups: []
                              categories:
                                - summer_collection
                              enabled: true
                              values:
                                name:
                                  - data: Débardeur
                                    locale: fr_FR
                                    attribute_type: pim_catalog_text
              example:
                _links:
                  self:
                    href: https://demo.akeneo.com/api/rest/v1/products?page=3&limit=3&with_quality_scores=true&with_completenesses=true&with_attribute_options=true
                  first:
                    href: https://demo.akeneo.com/api/rest/v1/products?page=1&limit=3&with_quality_scores=true&with_completenesses=true&with_attribute_options=true
                  previous:
                    href: https://demo.akeneo.com/api/rest/v1/products?page=2&limit=3&with_quality_scores=true&with_completenesses=true&with_attribute_options=true
                  next:
                    href: https://demo.akeneo.com/api/rest/v1/products?page=4&limit=3&with_quality_scores=true&with_completenesses=true&with_attribute_options=true
                current_page: 3
                _embedded:
                  items:
                    - _links:
                        self:
                          href: https://demo.akeneo.com/api/rest/v1/product/top
                      uuid: aaf518b2-f91e-40f1-a53a-78ce5e81a6f9
                      identifier: top
                      family: tshirt
                      groups: []
                      categories:
                        - summer_collection
                      enabled: true
                      values:
                        name:
                          - data: Top
                            locale: en_US
                            attribute_type: pim_catalog_text
                          - data: Débardeur
                            locale: fr_FR
                            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
                            attribute_type: pim_catalog_price_collection
                        color:
                          - data: black
                            linked_data:
                              attribute: color
                              code: black
                              labels:
                                en_US: Black
                                fr_FR: Noir
                            attribute_type: pim_catalog_simpleselect
                        size:
                          - data: m
                            linked_data:
                              attribute: size
                              code: m
                              labels:
                                en_US: M
                                fr_FR: M
                            attribute_type: pim_catalog_simpleselect
                        collection:
                          - data:
                              - winter_2016
                            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:
                            - 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
                      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
                    - _links:
                        self:
                          href: https://demo.akeneo.com/api/rest/v1/product/cap
                      uuid: aec6780b-c813-4bd7-8e24-1a8574471576
                      identifier: cap
                      family: caps
                      groups: []
                      categories:
                        - summer_collection
                      enabled: true
                      values:
                        name:
                          - data: Cap
                            locale: en_US
                          - data: Casquette
                            locale: fr_FR
                        description:
                          - data: Cap unisex
                            locale: en_US
                            scope: ecommerce
                          - data: Cap unisex
                            locale: en_US
                            scope: tablet
                          - data: Casquette unisexe
                            locale: fr_FR
                            scope: ecommerce
                          - data: Casquette unisexe
                            locale: fr_FR
                            scope: tablet
                        price:
                          - data:
                              - amount: '20'
                                currency: EUR
                              - amount: '20'
                                currency: USD
                        color:
                          - data: black
                            linked_data:
                              attribute: color
                              code: black
                              labels:
                                en_US: Black
                                fr_FR: Noir
                      created: '2016-06-23T18:24:44+02:00'
                      updated: '2016-06-25T17:56:12+02:00'
                      associations:
                        PACK:
                          products:
                            - sunglasses
                          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
                    - _links:
                        self:
                          href: https://demo.akeneo.com/api/rest/v1/product/sweat
                      uuid: 93f14b03-5ed3-4f23-87c6-ae3806041b6a
                      identifier: sweat
                      groups: []
                      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: []
        '401':
          description: |
            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.
          content: &ref_3
            application/json:
              schema:
                type: object
                properties: &ref_0
                  code:
                    type: integer
                    description: HTTP status code
                    example: 401
                  message:
                    type: string
                    description: Message explaining the error
                    example: Authentication is required
              examples:
                authentication_required:
                  summary: Authentication is required
                  value:
                    code: 401
                    message: Authentication is required
        '403':
          description: |
            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.
          content: &ref_4
            application/json:
              schema:
                type: object
                properties: *ref_0
              example:
                code: 403
                message: Access forbidden. You are not allowed to list this entity.
        '406':
          description: |
            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.
          content: &ref_13
            application/json:
              schema:
                type: object
                properties: *ref_0
              example:
                code: 406
                message: xxx in `Accept` header is not valid. Only `application/json` is allowed.
        '422':
          description: Unprocessable entity
          x-details: The validation of the entity given in the body of the request failed
          content: &ref_5
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: HTTP status code
                    example: 422
                  message:
                    type: string
                    description: Message explaining the error
                    example: Validation failed.
                  errors:
                    type: array
                    description: A list of validation error messages (optional)
                    items:
                      type: object
                      properties:
                        property:
                          type: string
                          description: Name of the invalid property
                        message:
                          type: string
                          description: Human-readable error message
                        attribute:
                          type:
                            - string
                            - 'null'
                          description: Attribute code (if the error is on an attribute)
                        locale:
                          type:
                            - string
                            - 'null'
                          description: Locale code involved in the error, if any
                        scope:
                          type:
                            - string
                            - 'null'
                          description: Channel code involved in the error, if any
                    example:
                      - property: family
                        message: The tshirts family does not exist in your PIM.
                  _links:
                    type: object
                    properties:
                      documentation:
                        type: object
                        properties:
                          href:
                            type: string
                    example:
                      documentation:
                        href: http://api.akeneo.com/api-reference.html
              examples:
                validation-error:
                  summary: Example with multiple validation errors
                  value:
                    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
    post:
      summary: Create a new product
      security:
        - bearerToken: []
      operationId: post_products_uuid
      tags:
        - Product [uuid]
      description: |
        This endpoint allows you to create a new product. In the Enterprise Edition,
        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.
      requestBody:
        description: Body of a product creation request
        content:
          application/json:
            schema:
              type: object
              description: Schema for creating or updating a product (POST/PATCH requests)
              additionalProperties: true
              properties: &ref_22
                uuid:
                  type: string
                  description: Product UUID
                  example: fc24e6c3-933c-4a93-8a81-e5c703d134d5
                identifier:
                  type: string
                  description: Product identifier, i.e. the value of the only `pim_catalog_identifier` attribute
                  example: bl1850b
                enabled:
                  type: boolean
                  description: Whether the product is enabled
                  default: true
                  example: true
                groups:
                  type: array
                  description: Codes of the groups to which the product belong. Each string of the array is equal to an existing group code.
                  items:
                    type: string
                  default: []
                  example:
                    - summer_collection
                    - sale
                family:
                  type:
                    - string
                    - 'null'
                  description: |
                    Family code from which the product inherits its attributes and attributes requirements. It is equal to an existing family code. In the case of variant product, the given family should be the same as the product model family.
                  default: null only in the case of a non variant product
                  example: smartphone
                categories:
                  type: array
                  description: Codes of the categories in which the product is classified. Each string of the array is equal to an existing category code.
                  items:
                    type: string
                  default: []
                  example:
                    - smartphones
                    - electronics
                parent:
                  type:
                    - string
                    - 'null'
                  description: |
                    Code of the parent product model when the product is a variant. It is equal to an existing product model code only if the product is variant otherwise it's equal to null.
                  default: null
                  example: my_super_battery
                values:
                  type: object
                  description: Product attributes values. See Akeneo documentation for more details. Validation rules detailed in Product values section.
                  patternProperties:
                    ^\w+$:
                      type: array
                      items:
                        type: object
                        description: |
                          A value for a given attribute, for a given locale/scope combination.
                          - locale: Locale code, or null if not localizable.
                          - scope: Channel code, or null if not scopable.
                          - data: The value for this attribute/locale/scope. Type and format depend on the attribute type (see Akeneo docs).
                          - linked_data: Additional data for select/multiselect/asset attributes. Read-only.
                          - attribute_type: The type of the value's attribute. Read-only.
                          - reference_data_name: Reference entity code or asset family code. Read-only.
                        properties: *ref_1
                        required: *ref_2
                  example:
                    description:
                      - data: T-shirt long sleeves Winter special, 100% wool
                        locale: null
                        scope: null
                associations:
                  type: object
                  description: Several associations related to groups, product models and/or other products, grouped by association types
                  patternProperties:
                    ^\w+$:
                      type: object
                      properties:
                        groups:
                          type: array
                          description: Array of groups codes with which the product is in relation
                          items:
                            type: string
                        products:
                          type: array
                          description: Array of product identifiers with which the product is in relation
                          items:
                            type: string
                        product_models:
                          type: array
                          description: Array of product model codes with which the product is in relation (only available since the v2.1)
                          items:
                            type: string
                  additionalProperties: false
                  example:
                    X_SELL:
                      groups: []
                      products:
                        - product_1
                        - product_2
                      product_models:
                        - product_model_1
                    UPSELL:
                      groups:
                        - group_1
                      products: []
                      product_models: []
                quantified_associations:
                  anyOf:
                    - type: object
                      description: Several quantified associations related to products and/or product models, grouped by quantified association types (only available since the 5.0)
                      patternProperties:
                        ^\w+$:
                          type: object
                          properties:
                            products:
                              type: array
                              description: Array of objects containing product identifiers and quantities with which the product is in relation
                              items:
                                type: object
                                properties:
                                  identifier:
                                    type: string
                                  quantity:
                                    type: integer
                            product_models:
                              type: array
                              description: Array of objects containing product model codes and quantities with which the product is in relation
                              items:
                                type: object
                                properties:
                                  code:
                                    type: string
                                  quantity:
                                    type: integer
                    - type: array
                      description: Empty array for backwards compatibility
                      maxItems: 0
                  example:
                    PACK:
                      products:
                        - identifier: product_1
                          quantity: 2
                        - identifier: product_2
                          quantity: 3
                      product_models:
                        - code: product_model_1
                          quantity: 1
                    UPSELL:
                      products: []
                      product_models: []
            examples:
              minimalUpdate:
                summary: Minimal create (only name)
                value:
                  uuid: 25566245-55c3-42ce-86d9-8610ac459fa8
                  values:
                    name:
                      - locale: en_US
                        scope: null
                        data: New T-shirt
              allFields:
                summary: Create with all possible fields
                value:
                  uuid: 25566245-55c3-42ce-86d9-8610ac459fa8
                  enabled: true
                  family: tshirt
                  categories:
                    - summer_collection
                    - winter_collection
                  groups:
                    - promo
                    - new
                  parent: tops
                  values:
                    name:
                      - locale: en_US
                        scope: null
                        data: New T-shirt
                    description:
                      - locale: en_US
                        scope: ecommerce
                        data: A very nice T-shirt, just created
                    price:
                      - data:
                          - amount: '19.99'
                            currency: EUR
                          - amount: '22.00'
                            currency: USD
                    color:
                      - data: blue
                        linked_data:
                          attribute: color
                          code: blue
                          labels:
                            en_US: Blue
                            fr_FR: Bleu
                    size:
                      - data: xl
                        linked_data:
                          attribute: size
                          code: xl
                          labels:
                            en_US: XL
                            fr_FR: XL
                    collection:
                      - data:
                          - spring_2024
                          - summer_2024
                        linked_data:
                          spring_2024:
                            attribute: collection
                            code: spring_2024
                            labels:
                              en_US: Spring 2024
                              fr_FR: Printemps 2024
                          summer_2024:
                            attribute: collection
                            code: summer_2024
                            labels:
                              en_US: Summer 2024
                              fr_FR: Été 2024
                    launch_date:
                      - data: '2024-04-01'
                    is_online:
                      - data: true
                    weight:
                      - data:
                          amount: '0.5'
                          unit: KILOGRAM
                    designer:
                      - data: john_doe
                    assets:
                      - data:
                          - asset_001
                          - asset_002
                    related_products:
                      - data:
                          - 123e4567-e89b-12d3-a456-426614174000
                          - 123e4567-e89b-12d3-a456-426614174001
                    product_link:
                      - data:
                          type: product
                          id: 123e4567-e89b-12d3-a456-426614174000
                    table:
                      - data:
                          - column_text: Row 1
                            column_number: 10
                            column_boolean: true
                            column_select: option_1
                            column_date: '2024-04-01'
                            column_metric:
                              amount: 5
                              unit: GRAM
                            column_product_link:
                              type: product
                              id: 123e4567-e89b-12d3-a456-426614174000
                  associations:
                    PACK:
                      products:
                        - 123e4567-e89b-12d3-a456-426614174000
                        - 123e4567-e89b-12d3-a456-426614174001
                      product_models:
                        - model-biker-jacket-leather
                      groups:
                        - promo_group
                        - featured
                    XSELL:
                      products:
                        - 123e4567-e89b-12d3-a456-426614174002
                      product_models: []
                      groups: []
                  quantified_associations:
                    PRODUCT_SET:
                      products:
                        - uuid: 123e4567-e89b-12d3-a456-426614174000
                          quantity: 2
                        - uuid: 123e4567-e89b-12d3-a456-426614174001
                          quantity: 1
                      product_models:
                        - code: model-biker-jacket-leather
                          quantity: 2
              allValueTypes:
                summary: Create with all value types
                value:
                  uuid: 25566245-55c3-42ce-86d9-8610ac459fa8
                  values:
                    text:
                      - data: A simple text value
                    textarea:
                      - data: A long description value
                    number:
                      - data: 42
                    boolean:
                      - data: false
                    date:
                      - data: '2024-05-01'
                    file:
                      - data: file_123.pdf
                    image:
                      - data: image_456.jpg
                    metric:
                      - data:
                          amount: '12.5'
                          unit: LITER
                    price:
                      - data:
                          - amount: '9.99'
                            currency: EUR
                          - amount: '12.00'
                            currency: USD
                    simpleselect:
                      - data: option_1
                    multiselect:
                      - data:
                          - option_1
                          - option_2
                    reference_entity:
                      - data: ref_entity_1
                    reference_entity_collection:
                      - data:
                          - ref_entity_1
                          - ref_entity_2
                    asset_collection:
                      - data:
                          - asset_1
                          - asset_2
                    product_link:
                      - data:
                          type: product
                          id: 123e4567-e89b-12d3-a456-426614174000
      responses:
        '201':
          description: |
            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: &ref_23
            Location:
              description: URI of the created resource
              schema:
                type: string
        '400':
          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.
          content: &ref_33
            application/json:
              schema:
                type: object
                properties: *ref_0
              example:
                code: 400
                message: Invalid JSON message received
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '415':
          description: |
            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.
          content: &ref_6
            application/json:
              schema:
                type: object
                properties: *ref_0
              example:
                code: 415
                message: xxx in `Content-type` header is not valid.  Only `application/json` is allowed."
        '422':
          description: Unprocessable entity
          x-details: The validation of the entity given in the body of the request failed
          content: *ref_5
    patch:
      summary: Update/create several products
      security:
        - bearerToken: []
      operationId: patch_products_uuid
      tags:
        - Product [uuid]
      description: |
        This endpoint allows you to update and/or create several products at once.
        Learn more about [Update behavior](https://api.akeneo.com/documentation/update.html#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 products you try to update.
        It may result in the creation of drafts if you only have edit rights through the product's categories.
      x-body-by-line: |
        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`.
      requestBody:
        description: Body of the request should contain a JSON object representing the products to update or create. One product per line.
        content:
          application/vnd.akeneo.collection+json:
            schema:
              type: string
            examples:
              request:
                summary: Example of product to create or update with a Patch request
                value: |
                  {"uuid":"25566245-55c3-42ce-86d9-8610ac459fa8","values":{"name":[{"locale":"en_US","scope":null,"data":"Updated Cap"}]}}
                  {"uuid":"25566245-55c3-42ce-86d9-8610ac459fa8","enabled":false,"family":"caps","categories":["summer_collection","winter_collection"],"groups":["promo","new"],"parent":"hats","values":{"name":[{"locale":"en_US","scope":null,"data":"Updated Cap"}],"description":[{"locale":"en_US","scope":"ecommerce","data":"A very nice cap, now updated"}],"price":[{"data":[{"amount":"20.00","currency":"EUR"},{"amount":"22.00","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":["spring_2024","summer_2024"],"linked_data":{"spring_2024":{"attribute":"collection","code":"spring_2024","labels":{"en_US":"Spring 2024","fr_FR":"Printemps 2024"}},"summer_2024":{"attribute":"collection","code":"summer_2024","labels":{"en_US":"Summer 2024","fr_FR":"Été 2024"}}}}],"launch_date":[{"data":"2024-04-01"}],"is_online":[{"data":true}],"weight":[{"data":{"amount":"0.2","unit":"KILOGRAM"}}],"designer":[{"data":"jane_doe"}],"assets":[{"data":["asset_003","asset_004"]}],"related_products":[{"data":["tshirt","shoes"]}],"product_link":[{"data":{"type":"identifier","id":"tshirt"}}],"table":[{"data":[{"column_text":"Row 1","column_number":5,"column_boolean":true,"column_select":"option_1","column_date":"2024-04-01","column_metric":{"amount":"2","unit":"GRAM"},"column_product_link":{"type":"identifier","id":"tshirt"}}]}]},"associations":{"PACK":{"products":["tshirt","shoes"],"product_models":["model-biker-jacket-leather"],"groups":["promo_group","featured"]},"XSELL":{"products":["mug"],"product_models":[],"groups":[]}},"quantified_associations":{"PRODUCT_SET":{"products":[{"identifier":"tshirt","quantity":2},{"identifier":"shoes","quantity":1}],"product_models":[{"code":"model-biker-jacket-leather","quantity":2}]}}}
      responses:
        '200':
          description: Returns a plain text response whose lines are JSON containing the status of each update or creation
          x-no-entity: true
          content:
            application/vnd.akeneo.collection+json:
              schema:
                type: string
              examples:
                response:
                  summary: Example of a response line for an updated product
                  value: |
                    {"line":1,"uuid":"25566245-55c3-42ce-86d9-8610ac459fa8","status_code":204}
                    {"line":2,"uuid":"25566245-55c3-42ce-86d9-8610ac459fa7","status_code":422,"message":"Property \"group\" does not exist."}
                    {"line":3,"uuid":"25566245-55c3-42ce-86d9-8610ac459fa9","status_code":201}
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '413':
          description: |
            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.
          content: &ref_34
            application/json:
              schema:
                type: object
                properties: *ref_0
              example:
                code: 413
                message: Too many resources to process, 100 is the maximum allowed.
        '415':
          description: |
            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.
          content: *ref_6
        '422':
          description: Unprocessable entity
          x-details: The validation of the entity given in the body of the request failed
          content: *ref_5
  /api/rest/v1/products-uuid/search:
    post:
      summary: Search list of products
      operationId: search_products_uuid
      tags:
        - Product [uuid]
      security:
        - bearerToken: []
      description: |
        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.

        <br /><br />

        <b>Important limitations</b><br />

        - The maximum number of attributes in the request body is 800.<br />

        - The maximum number of search criteria is 20.<br />

        - The maximum number of items in an array (e.g., values for filters like
        <code>IN</code> or <code>NOT IN</code>) is 800.
      parameters:
        - in: query
          name: pagination_type
          description: |
            Pagination method type, see [Pagination](https://api.akeneo.com/documentation/pagination.html) section.
          required: false
          schema: *ref_7
          example: page
        - in: query
          name: page
          description: |
            The `page` query parameter allows you to 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](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_8
          example: 1
        - in: query
          name: search_after
          description: |
            Cursor when using the `search_after` pagination method type.
            Should never be set manually, see [Pagination](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_9
          example: qaXbcde
        - in: query
          name: limit
          description: |
            The `limit` query parameter allows you to 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](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_10
          example: 100
        - in: query
          name: with_count
          description: |
            The `with_count` query parameter allows you to 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.
          required: false
          schema: *ref_11
          example: true
      requestBody:
        description: Body of the request to search for products.
        content:
          application/json:
            schema:
              type: object
              properties:
                search:
                  type: string
                  description: |
                    Stringified JSON to filter products, for more details see the [Filters](https://api.akeneo.com/documentation/filter.html) section.
                  example: '{"completeness":[{"operator": "=", "value": 100, "scope":"ecommerce"}]}'
                scope:
                  type: string
                  description: |
                    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](https://api.akeneo.com/documentation/filter.html#via-channel) section.
                  example: ecommerce
                locales:
                  type: string
                  description: |
                    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](https://api.akeneo.com/documentation/filter.html#via-locale) section.
                  example: en_US,fr_FR
                attributes:
                  type: string
                  description: |
                    Filter product values to only return those concerning the given attributes,
                    for more details see the [Filter product values via attributes](https://api.akeneo.com/documentation/filter.html#via-attributes) section.
                  example: name,description
                convert_measurements:
                  type: boolean
                  description: |
                    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.
                  example: true
                with_attribute_options:
                  type: boolean
                  description: |
                    Return labels of attribute options in the response.
                    See [the `linked_data` format](https://api.akeneo.com/concepts/products.html#the-linked_data-format) section for more details.
                    (Only available since the 5.0 version)
                  example: true
                with_asset_share_links:
                  type: boolean
                  description: |
                    Whether to return asset collection share link URLs in the response. 
                    See [the `linked_data` format](https://api.akeneo.com/concepts/products.html#the-linked_data-format) for more details.
                    (Only available in the SaaS version)
                  example: true
                with_quality_scores__products:
                  type: boolean
                  description: |
                    Return product quality scores in the response.
                    (Only available since the 5.0 version)
                  example: true
                with_completenesses:
                  type: boolean
                  description: |
                    Return product completenesses in the response.
                    (Only available since the 6.0 version)
                  example: true
            examples:
              search-example-1:
                summary: Search for products with specific criteria on scope, locale and completeness
                value:
                  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
              search-example-2:
                summary: Search for products with value for specific attributes
                value:
                  attributes: sku, colors, a_localized_and_scopable_text_area
                  scope: tablet
        required: false
      responses:
        '200':
          description: Returns products paginated
          content: *ref_12
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '406':
          description: |
            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.
          content: *ref_13
        '422':
          description: Unprocessable entity
          x-details: The validation of the entity given in the body of the request failed
          content: *ref_5
  /api/rest/v1/products-uuid/{uuid}:
    get:
      summary: Get a product
      operationId: get_products_uuid__uuid_
      tags:
        - Product [uuid]
      security:
        - bearerToken: []
      description: |
        This endpoint allows you to get the information about a given product. In
        the Enterprise Edition, permissions based on your user groups are applied to
        the product you request.
      parameters:
        - in: path
          name: uuid
          description: |
            The `uuid` 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.
          required: true
          schema: &ref_21
            type: string
            format: uuid
          example: 123e4567-e89b-12d3-a456-426614174000
        - in: query
          name: with_attribute_options
          description: |
            Return labels of attribute options in the response.
            See [the `linked_data` format](https://api.akeneo.com/concepts/products.html#the-linked_data-format) section for more details.
            (Only available since the 5.0 version)
          required: false
          schema: *ref_14
          example: true
        - in: query
          name: with_asset_share_links
          description: |
            Whether to return asset collection share link URLs in the response. 
            See [the `linked_data` format](https://api.akeneo.com/concepts/products.html#the-linked_data-format) for more details.
            (Only available in the SaaS version)
          required: false
          schema: *ref_15
          example: true
        - in: query
          name: with_quality_scores
          description: |
            Return product quality scores in the response.
            (Only available since the 5.0 version)
          required: false
          schema: *ref_16
          example: true
        - in: query
          name: with_completenesses
          description: |
            Return product completenesses in the response.
            (Only available since the 6.0 version)
          required: false
          schema: *ref_17
          example: true
        - in: query
          name: with_root_parent
          description: |
            Return the root parent product model code of a variant.
            (Only available for SaaS version)
          required: false
          schema: *ref_18
          example: true
      responses:
        '200':
          description: Returns product
          content: &ref_26
            application/json:
              schema:
                type: object
                allOf: *ref_19
                properties: *ref_20
              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:
                      - code: 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
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '404':
          description: |
            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.
          content: &ref_25
            application/json:
              schema:
                type: object
                properties: *ref_0
              example:
                code: 404
                message: Resource `my_resource_code` does not exist.
        '406':
          description: |
            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.
          content: *ref_13
    patch:
      summary: Update/create a product
      security:
        - bearerToken: []
      operationId: patch_products_uuid__uuid_
      tags:
        - Product [uuid]
      description: |
        This endpoint allows you to update a given product.
        Learn more about [Update behavior](https://api.akeneo.com/documentation/update.html#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.
      parameters:
        - in: path
          name: uuid
          description: |
            The `uuid` 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.
          required: true
          schema: *ref_21
          example: 123e4567-e89b-12d3-a456-426614174000
      requestBody:
        description: Body of the request to update a product.
        content:
          application/json:
            schema:
              type: object
              description: Schema for creating or updating a product (POST/PATCH requests)
              additionalProperties: true
              properties: *ref_22
            examples:
              minimalUpdate:
                summary: Minimal update (only name)
                value:
                  values:
                    name:
                      - locale: en_US
                        scope: null
                        data: Updated T-shirt
              allFields:
                summary: Update with all possible fields
                value:
                  uuid: 25566245-55c3-42ce-86d9-8610ac459fa8
                  enabled: false
                  family: tshirt
                  categories:
                    - summer_collection
                    - winter_collection
                  groups:
                    - promo
                    - new
                  parent: tops
                  values:
                    name:
                      - locale: en_US
                        scope: null
                        data: Updated T-shirt
                    description:
                      - locale: en_US
                        scope: ecommerce
                        data: A very nice T-shirt, now updated
                    price:
                      - data:
                          - amount: '19.99'
                            currency: EUR
                          - amount: '22.00'
                            currency: USD
                    color:
                      - data: blue
                        linked_data:
                          attribute: color
                          code: blue
                          labels:
                            en_US: Blue
                            fr_FR: Bleu
                    size:
                      - data: xl
                        linked_data:
                          attribute: size
                          code: xl
                          labels:
                            en_US: XL
                            fr_FR: XL
                    collection:
                      - data:
                          - spring_2024
                          - summer_2024
                        linked_data:
                          spring_2024:
                            attribute: collection
                            code: spring_2024
                            labels:
                              en_US: Spring 2024
                              fr_FR: Printemps 2024
                          summer_2024:
                            attribute: collection
                            code: summer_2024
                            labels:
                              en_US: Summer 2024
                              fr_FR: Été 2024
                    launch_date:
                      - data: '2024-04-01'
                    is_online:
                      - data: true
                    weight:
                      - data:
                          amount: '0.5'
                          unit: KILOGRAM
                    designer:
                      - data: john_doe
                    assets:
                      - data:
                          - asset_001
                          - asset_002
                    related_products:
                      - data:
                          - 123e4567-e89b-12d3-a456-426614174000
                          - 123e4567-e89b-12d3-a456-426614174001
                    product_link:
                      - data:
                          type: product
                          id: 123e4567-e89b-12d3-a456-426614174000
                    table:
                      - data:
                          - column_text: Row 1
                            column_number: 10
                            column_boolean: true
                            column_select: option_1
                            column_date: '2024-04-01'
                            column_metric:
                              amount: 5
                              unit: GRAM
                            column_product_link:
                              type: product
                              id: 123e4567-e89b-12d3-a456-426614174000
              allValueTypes:
                summary: Update with all value types
                value:
                  uuid: 25566245-55c3-42ce-86d9-8610ac459fa8
                  values:
                    text:
                      - data: A simple text value
                    textarea:
                      - data: A long description value
                    number:
                      - data: 42
                    boolean:
                      - data: false
                    date:
                      - data: '2024-05-01'
                    file:
                      - data: file_123.pdf
                    image:
                      - data: image_456.jpg
                    metric:
                      - data:
                          amount: '12.5'
                          unit: LITER
                    price:
                      - data:
                          - amount: '9.99'
                            currency: EUR
                          - amount: '12.00'
                            currency: USD
                    simpleselect:
                      - data: option_1
                    multiselect:
                      - data:
                          - option_1
                          - option_2
                    reference_entity:
                      - data: ref_entity_1
                    reference_entity_collection:
                      - data:
                          - ref_entity_1
                          - ref_entity_2
                    asset_collection:
                      - data:
                          - asset_1
                          - asset_2
                    product_link:
                      - data:
                          type: product
                          id: 123e4567-e89b-12d3-a456-426614174000
      responses:
        '201':
          description: |
            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: *ref_23
        '204':
          description: |
            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: &ref_24
            Location:
              description: URI of the updated resource
              schema:
                type: string
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '415':
          description: |
            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.
          content: *ref_6
        '422':
          description: Unprocessable entity
          x-details: The validation of the entity given in the body of the request failed
          content: *ref_5
    delete:
      summary: Delete a product
      security:
        - bearerToken: []
      operationId: delete_products_uuid__uuid_
      tags:
        - Product [uuid]
      description: |
        This endpoint allows you to delete a given product. In the Enterprise
        Edition, permissions based on your user groups are applied to the product
        you try to delete.
      parameters:
        - in: path
          name: uuid
          description: |
            The `uuid` 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.
          required: true
          schema: *ref_21
          example: 123e4567-e89b-12d3-a456-426614174000
      responses:
        '204':
          description: |
            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: *ref_24
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '404':
          description: |
            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.
          content: *ref_25
  /api/rest/v1/products-uuid/{uuid}/proposal:
    post:
      summary: Submit a draft for approval
      operationId: post_proposal_uuid
      tags:
        - Product [uuid]
      security:
        - bearerToken: []
      description: This endpoint allows you to submit a draft for approval.
      parameters:
        - in: path
          name: uuid
          description: |
            The `uuid` 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.
          required: true
          schema: *ref_21
          example: 123e4567-e89b-12d3-a456-426614174000
      responses:
        '201':
          description: |
            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: *ref_23
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '415':
          description: |
            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.
          content: *ref_6
        '422':
          description: Unprocessable entity
          x-details: The validation of the entity given in the body of the request failed
          content: *ref_5
  /api/rest/v1/products-uuid/{uuid}/draft:
    get:
      summary: Get a draft
      operationId: get_draft_uuid__uuid_
      tags:
        - Product [uuid]
      security:
        - bearerToken: []
      description: This endpoint allows you to get the information about a given draft.
      parameters:
        - in: path
          name: uuid
          description: |
            The `uuid` 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.
          required: true
          schema: *ref_21
          example: 123e4567-e89b-12d3-a456-426614174000
      responses:
        '200':
          description: Returns product
          content: *ref_26
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '404':
          description: |
            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.
          content: *ref_25
        '406':
          description: |
            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.
          content: *ref_13
  /api/rest/v1/products:
    get:
      summary: Get list of products
      operationId: get_products
      tags:
        - Product [identifier]
      security:
        - bearerToken: []
      description: |
        This endpoint allows you to get a list of products. Products are paginated
        and they can be filtered. In the Enterprise Edition, since the 2.0,
        permissions based on your user groups are applied to the set of products you
        request.
      parameters:
        - name: search
          in: query
          description: |
            Filter products,
            for more details see the [Filters](https://api.akeneo.com/documentation/filter.html) section.
          required: false
          schema:
            type: string
          examples:
            getProductsByCategory:
              summary: Filter the products by their category
              value: '{"categories":[{"operator":"IN","value":["winter_collection"]}]}'
            getProductsByCategoryButNotInAnother:
              summary: Filter the products categorized on the Winter Collection category and that are not categorized on the Accessories category
              value: '{"categories":[{"operator":"IN","value":["winter_collection"]},{"operator":"NOT IN","value":["accessories"]}]}'
            getProductsByStatus:
              summary: Filter the products by their status
              value: '{"enabled":[{"operator":"=","value":false}]}'
            getProductsByCompleteness:
              summary: Filter the products by their completeness
              value: '{"completeness":[{"operator":"=","value":50,"scope":"ecommerce"}]}'
            getProducts100PercentComplete:
              summary: Filter the products that are 100% complete on both the en_US and fr_FR locales for the ecommerce channel
              value: '{"completeness":[{"operator":"GREATER OR EQUALS THAN ON ALL LOCALES","value":100,"locales":["en_US","fr_FR"],"scope":"ecommerce"}]}'
            getProductsByGroup:
              summary: Filter the products by their group
              value: '{"groups":[{"operator":"IN","value":["promotion"]}]}'
            getProductsByFamily:
              summary: Filter the products by their family
              value: '{"family":[{"operator":"NOT IN","value":["camcorders","digital_cameras"]}]}'
            getProductsByCreationDate:
              summary: Filter the products by their creation date
              value: '{"created":[{"operator":"=","value":"2016-07-04 10:00:00"}]}'
            getProductsByUpdatedDate:
              summary: Filter the products updated since X days
              value: '{"updated":[{"operator":"SINCE LAST N DAYS","value":4}]}'
            getVariantProductsByProductModelCode:
              summary: Filter the variant products by their parent
              value: '{"parent":[{"operator":"IN","value":["tops"]}]}'
            getVariantProductsBySubProductModelCodes:
              summary: Filter the variant products by their sub product model
              value: '{"parent":[{"operator":"IN","value":["tshirt_armor_blue","tshirt_armor_red"]}]}'
            getAllVariantProducts:
              summary: Get all variant products
              value: '{"parent":[{"operator":"NOT EMPTY"}]}'
            getAllSimpleProducts:
              summary: Get all simple products
              value: '{"parent":[{"operator":"EMPTY"}]}'
            getProductsByQualityScore:
              summary: Filter the products with a "D" for the ecommerce channel and en_US locale
              value: '{"quality_score":[{"operator":"IN","value":["D"],"scope":"ecommerce","locale":"en_US"}]}'
            getProductsWithMultipleQualityScores:
              summary: Filter the products with an "A" or "B" for the mobile channel and en_GB locale
              value: '{"quality_score":[{"operator":"IN","value":["A","B"],"scope":"mobile","locale":"en_GB"}]}'
            getEnabledProducts:
              summary: Get only enabled products
              value: '{"enabled":[{"operator":"=","value":true}]}'
            getEnabledProductsCompleteAtLeast70Percent:
              summary: Get only enabled products that are at least 70% complete on the ecommerce channel
              value: '{"enabled":[{"operator":"=","value":true}],"completeness":[{"operator":">","value":70,"scope":"ecommerce"}]}'
            getProductsByAttributeValue:
              summary: Filter the products by an attribute value
              value: '{"main_color":[{"operator":"IN","value":["purple"]}]}'
            getProductsWithSpecificDescription:
              summary: Filter the products having a description begining with Amazing on the en_US locale
              value: '{"description":[{"operator":"STARTS WITH","value":"Amazing","locale":"en_US"}]}'
            getProductsWithSpecificReleaseDate:
              summary: Filter the products that have a release date due after the 4th of July 2016 for the ecommerce channel
              value: '{"release_date":[{"operator":">","value":"2016-07-04","scope":"ecommerce"}]}'
            getProductsContainingText:
              summary: Filter the products containing a text in the name attribute
              value: '{"name":[{"operator":"CONTAINS","value":"shirt","locale":"en_US","scope":"mobile"}]}'
            getProductsByMultipleAttributeValues:
              summary: Filter the products by multiple attribute values
              value: '{"description":[{"operator":"STARTS WITH","value":"Amazing","locale":"en_US","scope":"ecommerce"}],"main_color":[{"operator":"IN","value":["purple"]}]}'
            getProductsByMultipleAttributeConditions:
              summary: Filter the products by multiple attribute conditions
              value: '{"description":[{"operator":"NOT EMPTY","locale":"en_US","scope":"ecommerce"},{"operator":"EMPTY","locale":"fr_FR","scope":"ecommerce"}]}'
        - in: query
          name: scope
          description: |
            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](https://api.akeneo.com/documentation/filter.html#via-channel) section.
          required: false
          schema: *ref_27
          example: ecommerce
        - in: query
          name: locales
          description: |
            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](https://api.akeneo.com/documentation/filter.html#via-locale) section.
          required: false
          schema: *ref_28
          example: en_US,fr_FR
        - in: query
          name: attributes
          description: |
            Filter product values to only return those concerning the given attributes,
            for more details see the [Filter product values via attributes](https://api.akeneo.com/documentation/filter.html#via-attributes) section.
          required: false
          schema: *ref_29
          example: name,description
        - in: query
          name: pagination_type
          description: |
            Pagination method type, see [Pagination](https://api.akeneo.com/documentation/pagination.html) section.
          required: false
          schema: *ref_7
          example: page
        - in: query
          name: page
          description: |
            The `page` query parameter allows you to 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](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_8
          example: 1
        - in: query
          name: search_after
          description: |
            Cursor when using the `search_after` pagination method type.
            Should never be set manually, see [Pagination](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_9
          example: qaXbcde
        - in: query
          name: limit
          description: |
            The `limit` query parameter allows you to 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](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_10
          example: 100
        - in: query
          name: search_scope
          description: |
            The `search_scope` query parameter allows you to 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](https://api.akeneo.com/documentation/filter.html#search_scope-query-parameter) section.
          required: false
          schema: *ref_30
          example: ecommerce
        - in: query
          name: search_locale
          description: |
            The `search_locale` query parameter allows you to 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](https://api.akeneo.com/documentation/filter.html#search_locale-query-parameter) section.
          required: false
          schema: *ref_31
          example: en_US
        - in: query
          name: convert_measurements
          description: |
            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.
          schema: *ref_32
          required: false
          example: true
        - in: query
          name: with_count
          description: |
            The `with_count` query parameter allows you to 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.
          required: false
          schema: *ref_11
          example: true
        - in: query
          name: with_attribute_options
          description: |
            Return labels of attribute options in the response.
            See [the `linked_data` format](https://api.akeneo.com/concepts/products.html#the-linked_data-format) section for more details.
            (Only available since the 5.0 version)
          required: false
          schema: *ref_14
          example: true
        - in: query
          name: with_asset_share_links
          description: |
            Whether to return asset collection share link URLs in the response. 
            See [the `linked_data` format](https://api.akeneo.com/concepts/products.html#the-linked_data-format) for more details.
            (Only available in the SaaS version)
          required: false
          schema: *ref_15
          example: true
        - in: query
          name: with_quality_scores
          description: |
            Return product quality scores in the response.
            (Only available since the 5.0 version)
          required: false
          schema: *ref_16
          example: true
        - in: query
          name: with_completenesses
          description: |
            Return product completenesses in the response.
            (Only available since the 6.0 version)
          required: false
          schema: *ref_17
          example: true
      responses:
        '200':
          description: Returns products paginated
          content: *ref_12
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '406':
          description: |
            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.
          content: *ref_13
        '422':
          description: Unprocessable entity
          x-details: The validation of the entity given in the body of the request failed
          content: *ref_5
    post:
      summary: Create a new product
      security:
        - bearerToken: []
      operationId: post_products
      tags:
        - Product [identifier]
      description: |
        This endpoint allows you to create a new product. In the Enterprise Edition,
        since the v2.0, permissions based on your user groups are applied to the
        product you try to create.
      requestBody:
        description: Body of the request should contain a JSON object representing the product to create.
        content:
          application/json:
            schema:
              required:
                - identifier
              type: object
              allOf: *ref_19
              properties: *ref_20
            examples:
              minimalUpdate:
                summary: Minimal create (only name)
                value:
                  identifier: new-tshirt
                  values:
                    name:
                      - locale: en_US
                        scope: null
                        data: New T-shirt
              allFields:
                summary: Create with all possible fields
                value:
                  identifier: new-tshirt
                  enabled: true
                  family: tshirt
                  categories:
                    - summer_collection
                    - winter_collection
                  groups:
                    - promo
                    - new
                  parent: tops
                  values:
                    name:
                      - locale: en_US
                        scope: null
                        data: New T-shirt
                    description:
                      - locale: en_US
                        scope: ecommerce
                        data: A very nice T-shirt, just created
                    price:
                      - data:
                          - amount: '19.99'
                            currency: EUR
                          - amount: '22.00'
                            currency: USD
                    color:
                      - data: blue
                        linked_data:
                          attribute: color
                          code: blue
                          labels:
                            en_US: Blue
                            fr_FR: Bleu
                    size:
                      - data: xl
                        linked_data:
                          attribute: size
                          code: xl
                          labels:
                            en_US: XL
                            fr_FR: XL
                    collection:
                      - data:
                          - spring_2024
                          - summer_2024
                        linked_data:
                          spring_2024:
                            attribute: collection
                            code: spring_2024
                            labels:
                              en_US: Spring 2024
                              fr_FR: Printemps 2024
                          summer_2024:
                            attribute: collection
                            code: summer_2024
                            labels:
                              en_US: Summer 2024
                              fr_FR: Été 2024
                    launch_date:
                      - data: '2024-04-01'
                    is_online:
                      - data: true
                    weight:
                      - data:
                          amount: '0.5'
                          unit: KILOGRAM
                    designer:
                      - data: john_doe
                    assets:
                      - data:
                          - asset_001
                          - asset_002
                    related_products:
                      - data:
                          - cap
                          - shoes
                    product_link:
                      - data:
                          type: product_model
                          id: cap
                    table:
                      - data:
                          - column_text: Row 1
                            column_number: 10
                            column_boolean: true
                            column_select: option_1
                            column_date: '2024-04-01'
                            column_metric:
                              amount: 5
                              unit: GRAM
                            column_product_link:
                              type: product_model
                              id: cap
                  associations:
                    PACK:
                      products:
                        - cap
                        - shoes
                      product_models:
                        - model-biker-jacket-leather
                      groups:
                        - promo_group
                        - featured
                    XSELL:
                      products:
                        - mug
                      product_models: []
                      groups: []
                  quantified_associations:
                    PRODUCT_SET:
                      products:
                        - identifier: cap
                          quantity: 2
                        - identifier: shoes
                          quantity: 1
                      product_models:
                        - code: model-biker-jacket-leather
                          quantity: 2
              allValueTypes:
                summary: Create with all value types
                value:
                  identifier: new-tshirt
                  values:
                    text:
                      - data: A simple text value
                    textarea:
                      - data: A long description value
                    number:
                      - data: 42
                    boolean:
                      - data: false
                    date:
                      - data: '2024-05-01'
                    file:
                      - data: file_123.pdf
                    image:
                      - data: image_456.jpg
                    metric:
                      - data:
                          amount: '12.5'
                          unit: LITER
                    price:
                      - data:
                          - amount: '9.99'
                            currency: EUR
                          - amount: '12.00'
                            currency: USD
                    simpleselect:
                      - data: option_1
                    multiselect:
                      - data:
                          - option_1
                          - option_2
                    reference_entity:
                      - data: ref_entity_1
                    reference_entity_collection:
                      - data:
                          - ref_entity_1
                          - ref_entity_2
                    asset_collection:
                      - data:
                          - asset_1
                          - asset_2
                    product_link:
                      - data:
                          type: product_model
                          id: cap
      responses:
        '201':
          description: |
            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: *ref_23
        '400':
          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.
          content: *ref_33
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '415':
          description: |
            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.
          content: *ref_6
        '422':
          description: Unprocessable entity
          x-details: The validation of the entity given in the body of the request failed
          content: *ref_5
    patch:
      summary: Update/create several products
      security:
        - bearerToken: []
      operationId: patch_products
      tags:
        - Product [identifier]
      description: |
        This endpoint allows you to update and/or create several products at once.
        Learn more about [Update behavior](https://api.akeneo.com/documentation/update.html#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 products you try to update.
        It may result in the creation of drafts if you only have edit rights through the product's categories.
      x-body-by-line: |
        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`.
      requestBody:
        description: Body of the request should contain a JSON object representing the products to update or create. One product per line.
        content:
          application/vnd.akeneo.collection+json:
            schema:
              type: string
            examples:
              request:
                summary: Example of product to create or update with a Patch request
                value: |
                  {"identifier":"cap","values":{"name":[{"locale":"en_US","scope":null,"data":"Updated Cap"}]}}
                  {"identifier":"cap","enabled":false,"family":"caps","categories":["summer_collection","winter_collection"],"groups":["promo","new"],"parent":"hats","values":{"name":[{"locale":"en_US","scope":null,"data":"Updated Cap"}],"description":[{"locale":"en_US","scope":"ecommerce","data":"A very nice cap, now updated"}],"price":[{"data":[{"amount":"20.00","currency":"EUR"},{"amount":"22.00","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":["spring_2024","summer_2024"],"linked_data":{"spring_2024":{"attribute":"collection","code":"spring_2024","labels":{"en_US":"Spring 2024","fr_FR":"Printemps 2024"}},"summer_2024":{"attribute":"collection","code":"summer_2024","labels":{"en_US":"Summer 2024","fr_FR":"Été 2024"}}}}],"launch_date":[{"data":"2024-04-01"}],"is_online":[{"data":true}],"weight":[{"data":{"amount":"0.2","unit":"KILOGRAM"}}],"designer":[{"data":"jane_doe"}],"assets":[{"data":["asset_003","asset_004"]}],"related_products":[{"data":["tshirt","shoes"]}],"product_link":[{"data":{"type":"identifier","id":"tshirt"}}],"table":[{"data":[{"column_text":"Row 1","column_number":5,"column_boolean":true,"column_select":"option_1","column_date":"2024-04-01","column_metric":{"amount":"2","unit":"GRAM"},"column_product_link":{"type":"identifier","id":"tshirt"}}]}]},"associations":{"PACK":{"products":["tshirt","shoes"],"product_models":["model-biker-jacket-leather"],"groups":["promo_group","featured"]},"XSELL":{"products":["mug"],"product_models":[],"groups":[]}},"quantified_associations":{"PRODUCT_SET":{"products":[{"identifier":"tshirt","quantity":2},{"identifier":"shoes","quantity":1}],"product_models":[{"code":"model-biker-jacket-leather","quantity":2}]}}}
      responses:
        '200':
          description: Returns a plain text response whose lines are JSON containing the status of each update or creation
          x-no-entity: true
          content:
            application/vnd.akeneo.collection+json:
              schema:
                type: string
              examples:
                response:
                  summary: Example of a response line for an updated product
                  value: |
                    {"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}
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '413':
          description: |
            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.
          content: *ref_34
        '415':
          description: |
            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.
          content: *ref_6
        '422':
          description: Unprocessable entity
          x-details: The validation of the entity given in the body of the request failed
          content: *ref_5
  /api/rest/v1/products/{code}:
    get:
      summary: Get a product
      operationId: get_products__code_
      tags:
        - Product [identifier]
      security:
        - bearerToken: []
      description: |
        This endpoint allows you to get the information about a given product. In
        the Enterprise Edition, since the v2.0, permissions based on your user
        groups are applied to the product you request.
      parameters:
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: &ref_35
            type: string
          example: my_entity_code
        - in: query
          name: with_attribute_options
          description: |
            Return labels of attribute options in the response.
            See [the `linked_data` format](https://api.akeneo.com/concepts/products.html#the-linked_data-format) section for more details.
            (Only available since the 5.0 version)
          required: false
          schema: *ref_14
          example: true
        - in: query
          name: with_asset_share_links
          description: |
            Whether to return asset collection share link URLs in the response. 
            See [the `linked_data` format](https://api.akeneo.com/concepts/products.html#the-linked_data-format) for more details.
            (Only available in the SaaS version)
          required: false
          schema: *ref_15
          example: true
        - in: query
          name: with_quality_scores
          description: |
            Return product quality scores in the response.
            (Only available since the 5.0 version)
          required: false
          schema: *ref_16
          example: true
        - in: query
          name: with_completenesses
          description: |
            Return product completenesses in the response.
            (Only available since the 6.0 version)
          required: false
          schema: *ref_17
          example: true
      responses:
        '200':
          description: Returns product
          content: *ref_26
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '404':
          description: |
            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.
          content: *ref_25
        '406':
          description: |
            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.
          content: *ref_13
    patch:
      summary: Update/create a product
      security:
        - bearerToken: []
      operationId: patch_products__code_
      tags:
        - Product [identifier]
      description: |
        This endpoint allows you to update a given product.
        Learn more about [Update behavior](https://api.akeneo.com/documentation/update.html#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.
      parameters:
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
      requestBody:
        description: Body of the request to update a product by its identifier.
        content:
          application/json:
            schema:
              type: object
              allOf: *ref_19
              properties: *ref_20
            examples:
              minimalUpdate:
                summary: Minimal update (only name)
                value:
                  identifier: cap
                  values:
                    name:
                      - locale: en_US
                        scope: null
                        data: Updated Cap
              allFields:
                summary: Update with all possible fields
                value:
                  identifier: cap
                  enabled: false
                  family: caps
                  categories:
                    - summer_collection
                    - winter_collection
                  groups:
                    - promo
                    - new
                  parent: hats
                  values:
                    name:
                      - locale: en_US
                        scope: null
                        data: Updated Cap
                    description:
                      - locale: en_US
                        scope: ecommerce
                        data: A very nice cap, now updated
                    price:
                      - data:
                          - amount: '20.00'
                            currency: EUR
                          - amount: '22.00'
                            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:
                          - spring_2024
                          - summer_2024
                        linked_data:
                          spring_2024:
                            attribute: collection
                            code: spring_2024
                            labels:
                              en_US: Spring 2024
                              fr_FR: Printemps 2024
                          summer_2024:
                            attribute: collection
                            code: summer_2024
                            labels:
                              en_US: Summer 2024
                              fr_FR: Été 2024
                    launch_date:
                      - data: '2024-04-01'
                    is_online:
                      - data: true
                    weight:
                      - data:
                          amount: '0.2'
                          unit: KILOGRAM
                    designer:
                      - data: jane_doe
                    assets:
                      - data:
                          - asset_003
                          - asset_004
                    related_products:
                      - data:
                          - tshirt
                          - shoes
                    product_link:
                      - data:
                          type: product
                          id: tshirt
                    table:
                      - data:
                          - column_text: Row 1
                            column_number: 5
                            column_boolean: true
                            column_select: option_1
                            column_date: '2024-04-01'
                            column_metric:
                              amount: 2
                              unit: GRAM
                            column_product_link:
                              type: product
                              id: tshirt
                  associations:
                    PACK:
                      products:
                        - tshirt
                        - shoes
                      product_models:
                        - model-biker-jacket-leather
                      groups:
                        - promo_group
                        - featured
                    XSELL:
                      products:
                        - mug
                      product_models: []
                      groups: []
                  quantified_associations:
                    PRODUCT_SET:
                      products:
                        - identifier: tshirt
                          quantity: 2
                        - identifier: shoes
                          quantity: 1
                      product_models:
                        - code: model-biker-jacket-leather
                          quantity: 2
              allValueTypes:
                summary: Update with all value types
                value:
                  identifier: cap
                  values:
                    text:
                      - data: A simple text value
                    textarea:
                      - data: A long description value
                    number:
                      - data: 42
                    boolean:
                      - data: false
                    date:
                      - data: '2024-05-01'
                    file:
                      - data: file_123.pdf
                    image:
                      - data: image_456.jpg
                    metric:
                      - data:
                          amount: '12.5'
                          unit: LITER
                    price:
                      - data:
                          - amount: '9.99'
                            currency: EUR
                          - amount: '12.00'
                            currency: USD
                    simpleselect:
                      - data: option_1
                    multiselect:
                      - data:
                          - option_1
                          - option_2
                    reference_entity:
                      - data: ref_entity_1
                    reference_entity_collection:
                      - data:
                          - ref_entity_1
                          - ref_entity_2
                    asset_collection:
                      - data:
                          - asset_1
                          - asset_2
                    product_link:
                      - data:
                          type: product_model
                          id: tshirt
      responses:
        '201':
          description: |
            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: *ref_23
        '204':
          description: |
            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: *ref_24
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '415':
          description: |
            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.
          content: *ref_6
        '422':
          description: Unprocessable entity
          x-details: The validation of the entity given in the body of the request failed
          content: *ref_5
    delete:
      summary: Delete a product
      security:
        - bearerToken: []
      operationId: delete_products__code_
      tags:
        - Product [identifier]
      description: |
        This endpoint allows you to delete a given product. In the Enterprise
        Edition, since the 2.0, permissions based on your user groups are applied to
        the product you try to delete.
      parameters:
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
      responses:
        '204':
          description: |
            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: *ref_24
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '404':
          description: |
            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.
          content: *ref_25
  /api/rest/v1/products/{code}/proposal:
    post:
      summary: Submit a draft for approval
      operationId: post_proposal
      tags:
        - Product [identifier]
      security:
        - bearerToken: []
      description: This endpoint allows you to submit a draft for approval.
      parameters:
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
      requestBody:
        description: Empty body to submit the draft for approval.
        content:
          application/json:
            schema:
              type: object
              additionalProperties: false
            examples:
              empty:
                summary: Empty JSON object
                value: {}
      responses:
        '201':
          description: |
            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: *ref_23
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '415':
          description: |
            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.
          content: *ref_6
        '422':
          description: Unprocessable entity
          x-details: The validation of the entity given in the body of the request failed
          content: *ref_5
  /api/rest/v1/products/{code}/draft:
    get:
      summary: Get a draft
      operationId: get_draft__code_
      tags:
        - Product [identifier]
      security:
        - bearerToken: []
      description: This endpoint allows you to get the information about a given draft.
      parameters:
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
      responses:
        '200':
          description: Returns product
          content: *ref_26
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '404':
          description: |
            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.
          content: *ref_25
        '406':
          description: |
            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.
          content: *ref_13
  /api/rest/v1/product-models:
    get:
      summary: Get list of product models
      operationId: get_product_models
      tags:
        - Product model
      security:
        - bearerToken: []
      description: |
        This endpoint allows you to get a list of product models. Product models are
        paginated. In the Enterprise Edition, since the 2.0, permissions based on
        your user groups are applied to the set of products you request.
      parameters:
        - name: search
          in: query
          description: |
            Filter product models,
            for more details see the [Filters](https://api.akeneo.com/documentation/filter.html).
          required: false
          schema:
            type: string
          examples:
            getProductModelsByCategory:
              summary: Filter the product models by their category
              value: '{"categories":[{"operator":"IN","value":["winter_collection"]}]}'
            getProductModelsByCompleteness:
              summary: Filter the product models by their completeness
              value: '{"completeness":[{"operator":"ALL COMPLETE","locale":"fr_FR","scope":"ecommerce"}]}'
            getProductModelsWithOneVariantComplete:
              summary: Filter the product models that have at least one variant product 100% complete
              value: '{"completeness":[{"operator":"AT LEAST COMPLETE","locales":["en_US","fr_FR"],"scope":"ecommerce"}]}'
            getProductModelsByFamily:
              summary: Filter the product models that are in the camcorders family,
              value: '{"family":[{"operator":"IN","value":["camcorders"]}]}'
            getProductModelsNotInFamily:
              summary: Filter the product models that are not in the camcorders and digital_cameras family
              value: '{"family":[{"operator":"NOT IN","value":["camcorders","digital_cameras"]}]}'
            getProductModelsByCreationDate:
              summary: Filter the product models by their creation date
              value: '{"created":[{"operator":"=","value":"2016-07-04 10:00:00"}]}'
            getProductModelsUpdatedSinceXDays:
              summary: Filter the product models updated since X days
              value: '{"updated":[{"operator":"SINCE LAST N DAYS","value":4}]}'
            getVariantProductsByRootProductModelCode:
              summary: Filter the sub-product models of the root product model with the code tshirt_armor
              value: '{"parent":[{"operator":"IN","value":["tshirt_armor"]}]}'
            getAllRootProductModels:
              summary: Filter the root product models (product models without parent)
              value: '{"parent":[{"operator":"IS NULL"}]}'
            getAllSubProductModels:
              summary: Filter the sub-product models (product models with parent)
              value: '{"parent":[{"operator":"IS NOT NULL"}]}'
        - in: query
          name: scope
          description: |
            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](https://api.akeneo.com/documentation/filter.html#via-channel) section.
          required: false
          schema: *ref_27
          example: ecommerce
        - in: query
          name: locales
          description: |
            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](https://api.akeneo.com/documentation/filter.html#via-locale) section.
          required: false
          schema: *ref_28
          example: en_US,fr_FR
        - in: query
          name: attributes
          description: |
            Filter product values to only return those concerning the given attributes,
            for more details see the [Filter product values via attributes](https://api.akeneo.com/documentation/filter.html#via-attributes) section.
          required: false
          schema: *ref_29
          example: name,description
        - in: query
          name: pagination_type
          description: |
            Pagination method type, see [Pagination](https://api.akeneo.com/documentation/pagination.html) section.
          required: false
          schema: *ref_7
          example: page
        - in: query
          name: page
          description: |
            The `page` query parameter allows you to 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](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_8
          example: 1
        - in: query
          name: search_after
          description: |
            Cursor when using the `search_after` pagination method type.
            Should never be set manually, see [Pagination](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_9
          example: qaXbcde
        - in: query
          name: limit
          description: |
            The `limit` query parameter allows you to 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](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_10
          example: 100
        - in: query
          name: search_scope
          description: |
            The `search_scope` query parameter allows you to 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](https://api.akeneo.com/documentation/filter.html#search_scope-query-parameter) section.
          required: false
          schema: *ref_30
          example: ecommerce
        - in: query
          name: search_locale
          description: |
            The `search_locale` query parameter allows you to 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](https://api.akeneo.com/documentation/filter.html#search_locale-query-parameter) section.
          required: false
          schema: *ref_31
          example: en_US
        - in: query
          name: convert_measurements
          description: |
            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.
          schema: *ref_32
          required: false
          example: true
        - in: query
          name: with_count
          description: |
            The `with_count` query parameter allows you to 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.
          required: false
          schema: *ref_11
          example: true
        - name: with_attribute_options
          in: query
          description: |
            Return labels of attribute options in the response.
            See [the `linked_data` format](https://api.akeneo.com/concepts/products.html#the-linked_data-format) section for more details.
            (Only available on SaaS platforms)
          required: false
          schema:
            type: boolean
            default: false
          example: true
        - in: query
          name: with_asset_share_links
          description: |
            Whether to return asset collection share link URLs in the response. 
            See [the `linked_data` format](https://api.akeneo.com/concepts/products.html#the-linked_data-format) for more details.
            (Only available in the SaaS version)
          required: false
          schema: *ref_15
          example: true
        - name: with_quality_scores
          in: query
          description: |
            Return product model quality scores in the response.
            (Only available since the 6.0 version)
          required: false
          schema:
            type: boolean
          example: true
      responses:
        '200':
          description: Return product models paginated
          content:
            application/json:
              schema:
                type: object
                allOf:
                  - type: object
                    properties: *ref_36
                properties:
                  current_page:
                    type: integer
                    description: Current page number
                    example: 1
                  _embedded:
                    type: object
                    properties:
                      items:
                        type: array
                        items:
                          type: object
                          allOf:
                            - type: object
                              properties:
                                _links:
                                  type: object
                                  properties:
                                    self:
                                      type: object
                                      properties:
                                        href:
                                          type: string
                                          description: URI of the resource
                            - type: object
                              allOf: &ref_38
                                - type: object
                                  properties: *ref_37
                              properties: &ref_39
                                code:
                                  type: string
                                  description: Product model code
                                  x-immutable: true
                                  example: amarisshoe
                                family_variant:
                                  type: string
                                  description: |
                                    Family variant code from which the product model inherits its attributes and variant attributes. It is equal to an existing family variant code that belong to the family given in the `family` field.
                                  x-immutable: true
                                  example: shoes_Variant
                    example:
                      items: []
              examples:
                response:
                  summary: Example of response for a Get request
                  value:
                    _links:
                      self:
                        href: http://demo.akeneo.com/api/rest/v1/product-models?pagination_type=search_after&limit=3&search_after=qg%3D%3D
                      first:
                        href: http://demo.akeneo.com/api/rest/v1/product-models?pagination_type=search_after&limit=3
                      next:
                        href: http://demo.akeneo.com/api/rest/v1/product-models?pagination_type=search_after&limit=3&search_after=rw%3D%3D
                    current_page: 1
                    _embedded:
                      items:
                        - _links:
                            self:
                              href: http://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
                            description:
                              - locale: en_US
                                scope: ecommerce
                                data: I like shoes!
                          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
                          created: '2017-10-04T18:04:10+02:00'
                          updated: '2017-10-04T18:04:10+02:00'
                        - _links:
                            self:
                              href: http://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
                            description:
                              - locale: en_US
                                scope: ecommerce
                                data: I like tshirt!
                          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
                          created: '2017-10-04T18:04:10+02:00'
                          updated: '2017-10-04T18:04:10+02:00'
                        - _links:
                            self:
                              href: http://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
                            description:
                              - locale: en_US
                                scope: ecommerce
                                data: I like trousers!
                          associations:
                            PACK:
                              products:
                                - sunglasses
                              product_models: []
                              groups: []
                          quantified_associations: {}
                          created: '2017-10-04T18:04:10+02:00'
                          updated: '2017-10-04T18:04:10+02:00'
        '401':
          description: |
            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.
          content: *ref_3
        '406':
          description: |
            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.
          content: *ref_13
        '422':
          description: Unprocessable entity
          x-details: The validation of the entity given in the body of the request failed
          content: *ref_5
    post:
      summary: Create a new product model
      security:
        - bearerToken: []
      operationId: post_product_models
      tags:
        - Product model
      description: |
        This endpoint allows you to create a new product model. In the Enterprise
        Edition, since the v2.3, permissions based on your user groups are applied
        to the product model you try to create.
      requestBody:
        description: Body of the request should contain the product model to create.
        content:
          application/json:
            schema:
              type: object
              properties: &ref_40
                code:
                  type: string
                  description: |
                    Product model code. Required for POST (create) operations. 
                    Optional for PATCH (update) operations as it can be inferred from the URL.
                  example: amarisshoe
                family:
                  type: string
                  description: |
                    Family code from which the product model inherits its attributes and attributes requirements. It is equal to an existing family code.
                  example: shoes
                family_variant:
                  type: string
                  description: |
                    Family variant code from which the product model inherits its attributes and variant attributes. It is equal to an existing family variant code that belong to the family given in the `family` field.
                    Required for root product models (without parent). Optional for sub-product models (with parent), as it can be inferred from the parent.
                  example: shoes_Variant
                parent:
                  type:
                    - string
                    - 'null'
                  description: |
                    Code of the parent product model. This parent can be modified since the 2.3.
                    It is equal to an existing product model code. This product model has the same family variant as the one given in the `family_variant` field.
                  default: null
                  example: clothes
                categories:
                  type: array
                  description: |
                    Codes of the categories in which the product model is categorized. Each string of the array is equal to an existing category code.
                  items:
                    type: string
                  default: []
                  example:
                    - clothing
                    - shoes
                values:
                  type: object
                  description: |
                    Product model attributes values. Each key is an attribute code, and the value is an array of value objects for that attribute.
                    See [documentation](https://api.akeneo.com/concepts/products.html#focus-on-the-product-values) for details.
                  additionalProperties:
                    type: array
                    items:
                      type: object
                      description: |
                        A value for a given attribute, for a given locale/scope combination.
                        - locale: Locale code, or null if not localizable.
                        - scope: Channel code, or null if not scopable.
                        - data: The value for this attribute/locale/scope. Type and format depend on the attribute type (see Akeneo docs).
                        - linked_data: Additional data for select/multiselect/asset attributes. Read-only.
                        - attribute_type: The type of the value's attribute. Read-only.
                        - reference_data_name: Reference entity code or asset family code. Read-only.
                      properties: *ref_1
                      required: *ref_2
                  example:
                    name:
                      - locale: en_US
                        data: Biker jacket
                    description:
                      - locale: en_US
                        scope: ecommerce
                        data: Biker jacket for women
                associations:
                  type: object
                  description: |
                    Several associations related to groups, product and/or other product models, grouped by association types
                  properties:
                    associationTypeCode:
                      type: object
                      properties:
                        groups:
                          type: array
                          description: Array of groups codes with which the product is in relation
                          items:
                            type: string
                        products:
                          type: array
                          description: Array of product identifiers with which the product is in relation
                          items:
                            type: string
                        product_models:
                          type: array
                          description: Array of product model codes with which the product is in relation
                          items:
                            type: string
                  example:
                    PACK:
                      groups: []
                      products:
                        - sunglass
                      product_models: []
                    UPSELL:
                      groups: []
                      products: []
                      product_models:
                        - model-biker-jacket-leather
                quantified_associations:
                  type: object
                  description: |
                    Several quantified associations related to products and/or product models, grouped by quantified association types (only available since the 5.0)
                  properties:
                    quantifiedAssociationTypeCode:
                      type: object
                      properties:
                        products:
                          type: array
                          description: Array of objects containing product identifiers and quantities with which the product model is in relation
                          items:
                            type: object
                            properties:
                              identifier:
                                type: string
                              quantity:
                                type: integer
                        product_models:
                          type: array
                          description: Array of objects containing product model codes and quantities with which the product model is in relation
                          items:
                            type: object
                            properties:
                              code:
                                type: string
                              quantity:
                                type: integer
                  example:
                    PRODUCT_SET:
                      products:
                        - identifier: top
                          quantity: 2
                        - identifier: cap
                          quantity: 1
                      product_models:
                        - code: model-biker-jacket-leather
                          quantity: 2
                created:
                  type: string
                  description: Date of creation
                  format: dateTime
                  readOnly: true
                  example: '2025-01-01T12:00:00Z'
                updated:
                  type: string
                  description: Date of the last update
                  format: dateTime
                  readOnly: true
                  example: '2025-01-01T12:00:00Z'
                metadata:
                  type: object
                  description: |
                    More information around the product model (only available since the v2.3 in the Enterprise Edition)
                  readOnly: true
                  properties:
                    workflow_status:
                      description: Status of the product model regarding the user permissions
                      type: string
                      enum:
                        - read_only
                        - draft_in_progress
                        - proposal_waiting_for_approval
                        - working_copy
                  example:
                    workflow_status: draft_in_progress
                quality_scores:
                  type: object
                  description: |
                    Product model quality scores for each channel/locale combination (only available since the 7.0 version and when the "with_quality_scores" query parameter is set to "true")
                  readOnly: true
                  example:
                    workflow_status: draft_in_progress
            examples:
              minimalCreate:
                summary: Minimal create (only code and family_variant)
                value:
                  code: model-new-tshirt
                  family_variant: clothing_material_size
                  values:
                    name:
                      - locale: en_US
                        data: New T-shirt model
              allFields:
                summary: All fields
                value:
                  code: model-biker-jacket-leather
                  family: clothing
                  family_variant: clothing_material_size
                  parent: model-biker-jacket
                  categories:
                    - summer_collection
                  values:
                    color:
                      - data: antique_white
                    material:
                      - data: leather
                    variation_name:
                      - locale: en_US
                        data: Biker jacket leather
                    name:
                      - locale: en_US
                        data: Biker jacket
                    collection:
                      - data:
                          - summer_2017
                    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:
                        - code: model-biker-jacket-leather
                          quantity: 2
              allValueTypes:
                summary: All value types
                value:
                  code: model-all-types
                  family_variant: clothing_material_size
                  values:
                    name:
                      - locale: en_US
                        data: All Types Model
                    description:
                      - locale: en_US
                        scope: ecommerce
                        data: Model with all value types
                    price:
                      - data:
                          - amount: '50.00'
                            currency: EUR
                    number:
                      - data: 42
                    date:
                      - data: '2023-01-01'
                    boolean:
                      - data: true
                    select:
                      - data: optionA
                    multiselect:
                      - data:
                          - optionA
                          - optionB
                    metric:
                      - data:
                          amount: '12.5'
                          unit: KILOGRAM
                    image:
                      - data: image.jpg
                    file:
                      - data: file.pdf
                    reference_entity:
                      - data: ref_entity_code
                    reference_entity_collection:
                      - data:
                          - ref_entity_code1
                          - ref_entity_code2
                    table:
                      - data:
                          - column1: value1
                            column2: value2
                  associations: {}
                  quantified_associations: {}
      responses:
        '201':
          description: |
            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: *ref_23
        '400':
          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.
          content: *ref_33
        '401':
          description: |
            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.
          content: *ref_3
        '415':
          description: |
            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.
          content: *ref_6
        '422':
          description: Unprocessable entity
          x-details: The validation of the entity given in the body of the request failed
          content: *ref_5
    patch:
      summary: Update/create several product models
      security:
        - bearerToken: []
      operationId: patch_product_models
      tags:
        - Product model
      description: |
        This endpoint allows you to update and/or create several product models at once.
        Learn more about [Update behavior](https://api.akeneo.com/documentation/update.html#update-behavior).
        Note that if no product models exists for the given code, it creates it.
        In the Enterprise Edition, since the v2.3, 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.
        In the requestBody, modifications to existing product models can be specified using additional keys such as `add_categories` and `remove_categories`.
      requestBody:
        description: Body of the request should contain the product models to update or create.
        content:
          application/vnd.akeneo.collection+json:
            schema:
              type: string
            examples:
              request:
                summary: Example of product model to create or update with a Patch request
                value: |
                  {"code":"model-new-tshirt","family_variant":"clothing_material_size","values":{"name":[{"locale":"en_US","data":"Updated T-shirt model"}]}}
                  {"code":"model-biker-jacket-leather","family":"clothing","family_variant":"clothing_material_size","parent":"model-biker-jacket","categories":["summer_collection"],"values":{"color":[{"data":"antique_white"}],"material":[{"data":"leather"}],"variation_name":[{"locale":"en_US","data":"Biker jacket leather"}],"name":[{"locale":"en_US","data":"Biker jacket"}],"collection":[{"data":["summer_2017"]}],"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":[{"code":"model-biker-jacket-leather","quantity":2}]}}}
      responses:
        '200':
          description: Returns a plain text response whose lines are JSON containing the status of each update or creation
          x-no-entity: true
          content:
            application/vnd.akeneo.collection+json:
              schema:
                type: string
              examples:
                response:
                  summary: Example of response for a Patch request
                  value: |
                    {"line":1,"code":"model-new-tshirt","status_code":204}
                    {"line":2,"code":"model-biker-jacket-leather","status_code":422,"message":"Validation failed.","errors":[{"property":"attribute","message":"Cannot set value \"antique_white\" for the attribute axis \"color\", as another sibling entity already has this value"}]}
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '413':
          description: |
            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.
          content: *ref_34
        '415':
          description: |
            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.
          content: *ref_6
  /api/rest/v1/product-models/{code}:
    get:
      summary: Get a product model
      operationId: get_product_models__code_
      tags:
        - Product model
      security:
        - bearerToken: []
      description: |
        This endpoint allows you to get the information about a given product model.
        In the Enterprise Edition, since the v2.0, permissions based on your user
        groups are applied to the product model you request.
      parameters:
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
        - in: query
          name: with_asset_share_links
          description: |
            Whether to return asset collection share link URLs in the response. 
            See [the `linked_data` format](https://api.akeneo.com/concepts/products.html#the-linked_data-format) for more details.
            (Only available in the SaaS version)
          required: false
          schema: *ref_15
          example: true
        - in: query
          name: with_quality_scores
          description: |
            Return product quality scores in the response.
            (Only available since the 5.0 version)
          required: false
          schema: *ref_16
          example: true
      responses:
        '200':
          description: Returns the content of the product model in JSON standard format.
          content: &ref_41
            application/json:
              schema:
                required:
                  - code
                  - family_variant
                type: object
                allOf: *ref_38
                properties: *ref_39
              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
                  material:
                    - data: leather
                  variation_name:
                    - locale: en_US
                      data: Biker jacket leather
                  name:
                    - locale: en_US
                      data: Biker jacket
                  collection:
                    - data:
                        - summer_2017
                  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:
                      - code: 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
                created: '2017-10-02T15:03:55+02:00'
                updated: '2017-10-02T15:03:55+02:00'
        '401':
          description: |
            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.
          content: *ref_3
        '404':
          description: |
            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.
          content: *ref_25
        '406':
          description: |
            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.
          content: *ref_13
    patch:
      summary: Update/create a product model
      security:
        - bearerToken: []
      operationId: patch_product_models__code_
      tags:
        - Product model
      description: |
        This endpoint allows you to update a given product model.
        Learn more about [Update behavior](https://api.akeneo.com/documentation/update.html#update-behavior).
        Note that if no product model exists for the given code, it creates it.
        In the Enterprise Edition PIM since the 2.3, 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.
      parameters:
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
      requestBody:
        description: |
          The product model to update.
        content:
          application/json:
            schema:
              type: object
              properties: *ref_40
            examples:
              minimalUpdate:
                summary: Minimal update (only code and family_variant)
                value:
                  code: model-new-tshirt
                  family_variant: clothing_material_size
                  values:
                    name:
                      - locale: en_US
                        data: Updated T-shirt model
              allFields:
                summary: All fields
                value:
                  code: model-biker-jacket-leather
                  family: clothing
                  family_variant: clothing_material_size
                  parent: model-biker-jacket
                  categories:
                    - summer_collection
                  values:
                    color:
                      - data: antique_white
                    material:
                      - data: leather
                    variation_name:
                      - locale: en_US
                        data: Biker jacket leather
                    name:
                      - locale: en_US
                        data: Biker jacket
                    collection:
                      - data:
                          - summer_2017
                    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:
                        - code: model-biker-jacket-leather
                          quantity: 2
              allValueTypes:
                summary: All value types
                value:
                  code: model-all-types
                  family_variant: clothing_material_size
                  values:
                    name:
                      - locale: en_US
                        data: All Types Model
                    description:
                      - locale: en_US
                        scope: ecommerce
                        data: Model with all value types
                    price:
                      - data:
                          - amount: '50.00'
                            currency: EUR
                    number:
                      - data: 42
                    date:
                      - data: '2023-01-01'
                    boolean:
                      - data: true
                    select:
                      - data: optionA
                    multiselect:
                      - data:
                          - optionA
                          - optionB
                    metric:
                      - data:
                          amount: '12.5'
                          unit: KILOGRAM
                    image:
                      - data: image.jpg
                    file:
                      - data: file.pdf
                    reference_entity:
                      - data: ref_entity_code
                    reference_entity_collection:
                      - data:
                          - ref_entity_code1
                          - ref_entity_code2
                    table:
                      - data:
                          - column1: value1
                            column2: value2
                  associations: {}
                  quantified_associations: {}
      responses:
        '201':
          description: |
            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: *ref_23
        '204':
          description: |
            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: *ref_24
        '401':
          description: |
            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.
          content: *ref_3
        '415':
          description: |
            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.
          content: *ref_6
        '422':
          description: Unprocessable entity
          x-details: The validation of the entity given in the body of the request failed
          content: *ref_5
    delete:
      summary: Delete a product model
      security:
        - bearerToken: []
      operationId: delete_product_models__code_
      tags:
        - Product model
      description: |
        This endpoint allows you to delete a given product model. All its children,
        product models and variant products, will be also deleted. In the Enterprise
        Edition, the permissions based on your connection user group are applied to
        the product model you try to delete.
      parameters:
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
      responses:
        '204':
          description: |
            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: *ref_24
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '404':
          description: |
            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.
          content: *ref_25
  /api/rest/v1/product-models/{code}/proposal:
    post:
      summary: Submit a draft for approval
      operationId: post_product_model_proposal
      tags:
        - Product model
      security:
        - bearerToken: []
      description: This endpoint allows you to submit a product model draft for approval.
      parameters:
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
      requestBody:
        description: The content of the request body is not used.
        required: true
        content:
          application/json:
            schema:
              type: object
            example: {}
      responses:
        '201':
          description: |
            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: *ref_23
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '415':
          description: |
            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.
          content: *ref_6
        '422':
          description: Unprocessable entity
          x-details: The validation of the entity given in the body of the request failed
          content: *ref_5
  /api/rest/v1/product-models/{code}/draft:
    get:
      summary: Get a draft
      operationId: get_product_model_draft__code_
      tags:
        - Product model
      security:
        - bearerToken: []
      description: |
        This endpoint allows you to get the information about a given product model
        draft.
      parameters:
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
      responses:
        '200':
          description: Returns the content of the product model in JSON standard format.
          content: *ref_41
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '404':
          description: |
            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.
          content: *ref_25
        '406':
          description: |
            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.
          content: *ref_13
  /api/rest/v1/media-files:
    get:
      summary: Get a list of product media files
      operationId: get_media_files
      description: |
        This endpoint allows you to get a list of media files that are used as
        attribute values in products or product models.
      tags:
        - Product media file
      security:
        - bearerToken: []
      parameters:
        - in: query
          name: page
          description: |
            The `page` query parameter allows you to 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](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_8
          example: 1
        - in: query
          name: limit
          description: |
            The `limit` query parameter allows you to 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](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_10
          example: 100
        - in: query
          name: with_count
          description: |
            The `with_count` query parameter allows you to 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.
          required: false
          schema: *ref_11
          example: true
      responses:
        '200':
          description: Return media files paginated
          content:
            application/json:
              schema:
                title: MediaFiles
                type: object
                allOf:
                  - type: object
                    properties: *ref_36
                  - type: object
                    properties:
                      current_page:
                        type: integer
                        description: Current page number
                      _embedded:
                        type: object
                        properties:
                          items:
                            type: array
                            items:
                              type: object
                              allOf:
                                - type: object
                                  properties: &ref_42
                                    _links:
                                      type: object
                                      readOnly: true
                                      properties:
                                        download:
                                          type: object
                                          properties:
                                            href:
                                              type: string
                                              description: URI to download the binaries of the media file
                                          example:
                                            href: https://demo.akeneo.com/api/rest/v1/media-files/7/5/8/e/758e39d48ea7b42a55091434fd3d8b6cf3189b7f_10806799_1356.jpg/download
                                      example:
                                        download:
                                          href: https://demo.akeneo.com/api/rest/v1/media-files/7/5/8/e/758e39d48ea7b42a55091434fd3d8b6cf3189b7f_10806799_1356.jpg/download
                                    code:
                                      type: string
                                      description: Media file code
                                      x-immutable: true
                                      example: 7/5/8/e/758e39d48ea7b42a55091434fd3d8b6cf3189b7f_10806799_1356.jpg
                                    original_filename:
                                      type: string
                                      description: Original filename of the media file
                                      example: 10806799-1356.jpg
                                    mime_type:
                                      type: string
                                      description: Mime type of the media file
                                      readOnly: true
                                      example: image/jpeg
                                    size:
                                      type: integer
                                      description: Size of the media file
                                      readOnly: true
                                      example: 16070
                                    extension:
                                      type: string
                                      description: Extension of the media file
                                      readOnly: true
                                      example: jpg
                                - type: object
                                  properties:
                                    _links:
                                      type: object
                                      properties:
                                        self:
                                          type: object
                                          properties:
                                            href:
                                              type: string
                                              description: URI of the media file
                                              example: https://demo.akeneo.com/api/rest/v1/media-files/7/5/8/e/758e39d48ea7b42a55091434fd3d8b6cf3189b7f_10806799_1356.jpg
              examples:
                response:
                  summary: A paginated list of media files
                  value:
                    _links:
                      self:
                        href: https://demo.akeneo.com/api/rest/v1/media-files?page=2&limit=4
                      first:
                        href: https://demo.akeneo.com/api/rest/v1/media-files?page=1&limit=4
                      previous:
                        href: https://demo.akeneo.com/api/rest/v1/media-files?page=1&limit=4
                      next:
                        href: https://demo.akeneo.com/api/rest/v1/media-files?page=2&limit=4
                    current_page: 2
                    _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
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '406':
          description: |
            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.
          content: *ref_13
    post:
      summary: Create a new product media file
      security:
        - bearerToken: []
      operationId: post_media_files
      description: |
        This endpoint allows you to create a new media file and associate it to an
        attribute value of a given product or product model.
      tags:
        - Product media file
      requestBody:
        description: Body of the request to create a new media file
        content:
          multipart/form-data:
            schema:
              oneOf:
                - type: object
                  properties:
                    product:
                      type:
                        - string
                        - 'null'
                      description: |
                        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.
                      example: '{"identifier":"product_identifier", "attribute":"attribute_code", "scope":null,"locale":null}'
                    file:
                      type: string
                      description: The binaries of the file
                      format: binary
                  required:
                    - file
                    - product
                - type: object
                  properties:
                    product_model:
                      type:
                        - string
                        - 'null'
                      description: |
                        The product model to which the media file will be associated. It
                        is a JSON string that follows this format
                        '{"code":"product_model_code", "attribute":"attribute_code",
                        "scope":"channel_code","locale":"locale_code"}'. You have to
                        either use this field or the `product` field, but not both at
                        the same time.
                      example: '{"code":"product_model_code", "attribute":"attribute_code", "scope":null,"locale":null}'
                    file:
                      type: string
                      description: The binaries of the file
                      format: binary
                  required:
                    - file
                    - product_model
            examples:
              product:
                summary: Create a media file for a product
                value:
                  product: '{"identifier":"product_identifier", "attribute":"attribute_code", "scope":null,"locale":null}'
                  file: ''
              product_model:
                summary: Create a media file for a product model
                value:
                  product_model: '{"code":"product_model_code", "attribute":"attribute_code", "scope":null,"locale":null}'
                  file: ''
        x-form-data: true
      responses:
        '201':
          description: |
            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: *ref_23
        '400':
          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.
          content: *ref_33
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '415':
          description: |
            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.
          content: *ref_6
        '422':
          description: Unprocessable entity
          x-details: The validation of the entity given in the body of the request failed
          content: *ref_5
  /api/rest/v1/media-files/{code}:
    get:
      summary: Get a product media file
      operationId: get_media_files__code_
      description: |
        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.
      tags:
        - Product media file
      security:
        - bearerToken: []
      parameters:
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
      responses:
        '200':
          description: Returns the content of the media file in JSON standard format
          content:
            application/json:
              schema:
                type: object
                properties: *ref_42
              examples:
                response:
                  summary: Media file example
                  value:
                    _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
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '404':
          description: |
            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.
          content: *ref_25
        '406':
          description: |
            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.
          content: *ref_13
  /api/rest/v1/media-files/{code}/download:
    get:
      summary: Download a product media file
      operationId: get_media_files__code__download
      description: |
        This endpoint allows you to download a given media file that is used as an
        attribute value of a product or a product model.
      x-content-type: Mime-type of the media file
      tags:
        - Product media file
      security:
        - bearerToken: []
      parameters:
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
      responses:
        '200':
          description: OK
          content:
            image/png:
              schema:
                type: string
                format: binary
              example: data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...
            image/jpeg:
              schema:
                type: string
                format: binary
              example: data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYa
          x-details: Returns the binary of the media file
          x-content-type: Mime-type of the media file
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '404':
          description: |
            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.
          content: *ref_25
  /api/rest/v1/jobs/export/{code}:
    post:
      summary: Launch export job by code
      security:
        - bearerToken: []
      operationId: post_job_export
      tags:
        - Jobs
      description: This endpoint allows you to launch an export job by code.
      parameters:
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
      requestBody:
        required: false
        description: Export jobs accept an optional request body
        content:
          application/json:
            schema:
              type: object
              properties:
                is_dry_run:
                  type: boolean
                  description: Whether to run the export in dry-run mode
                  example: false
              additionalProperties: false
      responses:
        '200':
          description: Returns the execution ID for the launched job
          content:
            application/json:
              schema:
                type: object
                properties:
                  job_execution_id:
                    type: integer
                    description: The ID of the job execution that was launched.
                    example: 12345
              examples:
                response:
                  summary: Example of a successful response
                  value:
                    job_execution_id: 12345
        '400':
          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.
          content: *ref_33
        '403':
          description: |
            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.
          content: *ref_4
        '404':
          description: |
            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.
          content: *ref_25
        '422':
          description: Unprocessable entity
          x-details: The validation of the entity given in the body of the request failed
          content: *ref_5
  /api/rest/v1/jobs/import/{code}:
    post:
      summary: Launch import job by code
      operationId: post_job_import
      tags:
        - Jobs
      security:
        - bearerToken: []
      description: This endpoint allows you to launch an import job by code.
      x-body-by-line: |
        The body is optional and can be be empty. If empty, the import profile
        options will be used.
      parameters:
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
      requestBody:
        required: false
        description: Body to change the import mode for this job.
        content:
          application/json:
            schema:
              type: object
              properties:
                import_mode:
                  type: string
                  enum:
                    - create_only
                    - update_only
                    - create_or_update
                  description: |
                    Change the import mode for this job by overriding the profile
                    value. Available values are: <em>create_only</em>,
                    <em>update_only</em> and <em>create_or_update</em>
                  example: create_or_update
                is_dry_run:
                  type: boolean
                  description: Whether to run the import in dry-run mode
                  example: false
              additionalProperties: false
      responses:
        '200':
          description: Returns the execution ID for the launched job
          content:
            application/json:
              schema:
                type: object
                properties:
                  job_execution_id:
                    type: integer
                    description: The ID of the job execution that was launched.
                    example: 12345
              examples:
                response:
                  summary: Example of a successful response
                  value:
                    job_execution_id: 12345
        '400':
          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.
          content: *ref_33
        '403':
          description: |
            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.
          content: *ref_4
        '404':
          description: |
            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.
          content: *ref_25
        '422':
          description: Unprocessable entity
          x-details: The validation of the entity given in the body of the request failed
          content: *ref_5
  /api/rest/v1/families:
    get:
      summary: Get list of families
      description: This endpoint allows you to get a list of families. Families are paginated and sorted by code.
      operationId: get_families
      tags:
        - Family
      parameters:
        - name: search
          in: query
          description: |
            The `search` query parameter allows you to filter families based on specific criteria.
            For more details see the [Filters section](https://api.akeneo.com/documentation/filter.html#filter-families).
          required: false
          schema:
            type: string
          examples:
            getFamiliesByCode:
              summary: Filter the families by their code
              value: '{"code":[{"operator":"IN","value":["family_code1","family_code2"]}]}'
            getFamiliesByUpdatedDate:
              summary: Filter the families by their update date
              value: '{"updated":[{"operator":">","value":"2020-07-04T10:00:00Z"}]}'
            getOnlyFamiliesWithProducts:
              summary: Filter the families that have at least one attached product
              value: '{"has_products":[{"operator":"=","value":true}]}'
        - in: query
          name: page
          description: |
            The `page` query parameter allows you to 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](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_8
          example: 1
        - in: query
          name: limit
          description: |
            The `limit` query parameter allows you to 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](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_10
          example: 100
        - in: query
          name: with_count
          description: |
            The `with_count` query parameter allows you to 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.
          required: false
          schema: *ref_11
          example: true
      responses:
        '200':
          description: |
            This response contains a list of families, which are groups of attributes that can be shared by products.
            Each family has a code, a set of attributes, and labels for different locales.
            The response is paginated and includes links to navigate through the pages.
            The `attribute_requirements` field specifies which attributes are required for each channel.
            The `attribute_as_label` field indicates which attribute is used as the label for the family in the user interface.
            The `attribute_as_image` field indicates which attribute is used as the main picture for the family in the user interface.
          content:
            application/json:
              schema:
                title: Families
                type: object
                allOf:
                  - type: object
                    properties: *ref_36
                  - type: object
                    properties:
                      current_page:
                        type: integer
                        description: Current page number
                      _embedded:
                        type: object
                        properties:
                          items:
                            type: array
                            items:
                              type: object
                              properties:
                                _links:
                                  type: object
                                  properties:
                                    self:
                                      type: object
                                      properties:
                                        href:
                                          type: string
                                          description: URI of the resource
                                code:
                                  type: string
                                  description: Family code
                                  readOnly: true
                                attribute_as_label:
                                  type: string
                                  description: Attribute code used as label
                                attribute_as_image:
                                  type:
                                    - string
                                    - 'null'
                                  description: Attribute code used as the main picture in the user interface
                                attributes:
                                  type: array
                                  description: Attributes codes that compose the family
                                  items:
                                    type: string
                                attribute_requirements:
                                  type: object
                                  description: Attributes codes of the family that are required for the completeness calculation for each channel
                                  additionalProperties:
                                    type: array
                                    items:
                                      type: string
                                labels:
                                  type: object
                                  description: Family labels for each locale
                                  additionalProperties:
                                    type: string
                                parent:
                                  type:
                                    - string
                                    - 'null'
                                  description: Code of the parent family. If null, the family is a root family.
              example:
                _links:
                  self:
                    href: https://demo.akeneo.com/api/rest/v1/families?page=2&limit=2
                  first:
                    href: https://demo.akeneo.com/api/rest/v1/families?page=1&limit=2
                  previous:
                    href: https://demo.akeneo.com/api/rest/v1/families?page=1&limit=2
                  next:
                    href: https://demo.akeneo.com/api/rest/v1/families?page=3&limit=2
                current_page: 2
                _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
                    - _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
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '406':
          description: |
            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.
          content: *ref_13
      security:
        - bearerToken: []
    post:
      summary: Create a new family
      description: This endpoint allows you to create a new family.
      operationId: post_families
      tags:
        - Family
      parameters:
        - in: header
          name: Content-Type
          description: |
            The `Content-Type` 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.
          required: true
          schema: &ref_43
            type: string
            default: application/json
          example: application/json
      requestBody:
        description: The family to be created.
        required: true
        content:
          application/json:
            schema:
              type: object
              description: |
                Payload to create or update a family.
              properties: &ref_44
                code:
                  type: string
                  description: Family code
                  readOnly: true
                  example: camcorders
                attribute_as_label:
                  type: string
                  description: |
                    Attribute code used as label.
                    * It must be an existing attribute code.
                    * This attribute code must be in the `attributes` array.
                    * The attribute type must be `pim_catalog_identifier` or `pim_catalog_text`.
                  example: short_description
                attribute_as_image:
                  type:
                    - string
                    - 'null'
                  description: |
                    Attribute code used as the main picture in the user interface.
                    * It must be an existing attribute code.
                    * This attribute code must be in the `attributes` array.
                    * The attribute type must be `pim_catalog_image` or `pim_assets_collection`.
                  example: picture
                attributes:
                  type: array
                  description: Attribute codes that compose the family. Each string in the array must be an existing attribute code.
                  items:
                    type: string
                  example:
                    - sku
                    - name
                    - description
                    - price
                    - color
                    - picture
                attribute_requirements:
                  type: object
                  description: |
                    Attribute codes of the family that are required for the completeness calculation for each channel.
                    * Each string in the arrays must be an existing attribute code.
                    * These attribute codes must be in the `attributes` array.
                    * The `channelCode` must be the code of an existing and activated channel.
                  additionalProperties:
                    type: array
                    items:
                      type: string
                      description: Attribute code required for the channel.
                  example:
                    ecommerce:
                      - sku
                      - name
                      - description
                      - price
                      - color
                    tablet:
                      - sku
                      - name
                      - description
                      - price
                labels:
                  type: object
                  description: Family labels for each locale. The `localeCode` must be the code of an existing and activated locale.
                  additionalProperties:
                    type:
                      - string
                      - 'null'
                    description: Family label for the locale `localeCode`.
                  example:
                    en_US: Caps
                    fr_FR: Casquettes
                parent:
                  type:
                    - string
                    - 'null'
                  description: |
                    The code of the parent family. If not provided, the family is a root family.
                    * It must be an existing family code.
                    * The parent family must not be the same as the current family.
                  example: clothing
              example: &ref_45
                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
            examples:
              newFamily:
                summary: Example of a new family
                value:
                  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
      responses:
        '201':
          description: |
            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: *ref_23
        '400':
          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.
          content: *ref_33
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '415':
          description: |
            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.
          content: *ref_6
        '422':
          description: |
            This response indicates that the validation of the entity given in the body of the request failed.
            It can occur when the data provided does not meet the required format or constraints defined by the API.
          content: &ref_46
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: HTTP status code
                    example: 401
                  message:
                    type: string
                    description: Message explaining the error
                    example: Property \"labels\" expects an array as data, \"NULL\" given. Check the API reference documentation.
                  _links:
                    type: object
                    properties:
                      documentation:
                        type: object
                        properties:
                          href:
                            type: string
                            example: http://api.akeneo.com/api-reference.html
              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
      security:
        - bearerToken: []
    patch:
      summary: Update/create several families
      description: This endpoint allows you to update and/or create several families at once.
      operationId: patch_families
      tags:
        - Family
      parameters:
        - name: Content-Type
          in: header
          required: true
          description: The content type of the request.
          schema:
            type: string
            enum:
              - application/vnd.akeneo.collection+json
      requestBody:
        description: The families to be updated or created.
        required: true
        content:
          application/vnd.akeneo.collection+json:
            schema:
              type: string
            examples:
              request:
                summary: Example of a request to update or create families
                value: |
                  { "code": "tshirt","attribute_as_label": "description","attributes": [ "description","size" ] }
                  { "code": "cap","attribute_as_label": "description" }
                  { "code": "mug","attribute_as_label": "description","attributes": [ "description","short_description" ] }
      responses:
        '200':
          description: |
            Returns a plain text response whose lines are JSON containing the status
            of each update or creation
          content:
            application/vnd.akeneo.collection+json:
              schema:
                type: string
              examples:
                response:
                  summary: Example of a response line for an updated attribute
                  value: |
                    {"line":1,"code":"camcorders","status_code":201}
                    {"line":2,"code":"robes","status_code":422,"message":"Group \"marketig\" does not exist."}
                    {"line":3,"code":"clothes","status_code":204}
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '413':
          description: |
            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.
          content: *ref_34
        '415':
          description: |
            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.
          content: *ref_6
      security:
        - bearerToken: []
  /api/rest/v1/families/{code}:
    get:
      summary: Get a family
      description: This endpoint allows you to get the information about a given family.
      operationId: get_family_by_code
      tags:
        - Family
      parameters:
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
      responses:
        '200':
          description: |
            This response contains a family, which is a group of attributes that can be shared by products.
            Each family has a code, a set of attributes, and labels for different locales.
            The `attribute_requirements` field specifies which attributes are required for each channel.
            The `attribute_as_label` field indicates which attribute is used as the label for the family in the user interface.
            The `attribute_as_image` field indicates which attribute is used as the main picture for the family in the user interface.
          content:
            application/json:
              schema:
                type: object
                required:
                  - code
                  - attribute_as_label
                properties:
                  code:
                    type: string
                    description: Family code
                    readOnly: true
                    example: caps
                  attribute_as_label:
                    type: string
                    description: |
                      Attribute code used as label.
                      * It must be an existing attribute code.
                      * This attribute code must be in the `attributes` array.
                      * The attribute type must be `pim_catalog_identifier` or `pim_catalog_text`.
                    example: short_description
                  attribute_as_image:
                    type:
                      - string
                      - 'null'
                    description: |
                      Attribute code used as the main picture in the user interface.
                      * It must be an existing attribute code.
                      * This attribute code must be in the `attributes` array.
                      * The attribute type must be `pim_catalog_image` or `pim_assets_collection`.
                    example: picture
                  attributes:
                    type: array
                    description: Attribute codes that compose the family. Each string in the array must be an existing attribute code.
                    items:
                      type: string
                    example:
                      - sku
                      - name
                      - description
                      - price
                      - color
                      - picture
                  attribute_requirements:
                    type: object
                    description: |
                      Attribute codes of the family that are required for the completeness calculation for each channel.
                      * Each string in the arrays must be an existing attribute code.
                      * These attribute codes must be in the `attributes` array.
                      * The `channelCode` must be the code of an existing and activated channel.
                    additionalProperties:
                      type: array
                      items:
                        type: string
                        description: Attribute code required for the channel.
                    example:
                      ecommerce:
                        - sku
                        - name
                        - description
                        - price
                        - color
                      tablet:
                        - sku
                        - name
                        - description
                        - price
                  labels:
                    type: object
                    description: Family labels for each locale. The `localeCode` must be the code of an existing and activated locale.
                    additionalProperties:
                      type:
                        - string
                        - 'null'
                      description: Family label for the locale `localeCode`.
                    example:
                      en_US: Caps
                      fr_FR: Casquettes
                  parent:
                    type:
                      - string
                      - 'null'
                    description: |
                      The parent family code. If the family has no parent, this field is `null`.
                      * It must be an existing family code.
                    example: accessories
              example:
                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
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '404':
          description: |
            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.
          content: *ref_25
        '406':
          description: |
            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.
          content: *ref_13
      security:
        - bearerToken: []
    patch:
      summary: Update/create a family
      description: This endpoint allows you to update a given family. Note that if no family exists for the given code, it creates it.
      operationId: patch_family_by_code
      tags:
        - Family
      parameters:
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
        - in: header
          name: Content-Type
          description: |
            The `Content-Type` 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.
          required: true
          schema: *ref_43
          example: application/json
      requestBody:
        description: The family object to update or create.
        required: true
        content:
          application/json:
            schema:
              type: object
              description: |
                Payload to create or update a family.
              properties: *ref_44
              example: *ref_45
            examples:
              updateFamily:
                summary: Example of updating a family
                value:
                  code: caps
                  attributes:
                    - sku
                    - name
                    - description
                    - price
                    - color
                    - picture
                    - material
                  attribute_as_label: name
                  parent: null
      responses:
        '201':
          description: |
            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: *ref_23
        '204':
          description: Successfully patched, response with empty body
        '400':
          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.
          content: *ref_33
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '415':
          description: |
            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.
          content: *ref_6
        '422':
          description: |
            This response indicates that the validation of the entity given in the body of the request failed.
            It can occur when the data provided does not meet the required format or constraints defined by the API.
          content: *ref_46
      security:
        - bearerToken: []
  /api/rest/v1/families/{family_code}/variants:
    get:
      summary: Get list of family variants
      security:
        - bearerToken: []
      operationId: get_families__family_code__variants
      description: |
        This endpoint allows you to get a list of family variants. Family variants
        are paginated and sorted by code.
      tags:
        - Family variant
      parameters:
        - in: path
          name: family_code
          description: Code of the family
          required: true
          schema: &ref_47
            type: string
          example: caps
        - in: query
          name: page
          description: |
            The `page` query parameter allows you to 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](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_8
          example: 1
        - in: query
          name: limit
          description: |
            The `limit` query parameter allows you to 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](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_10
          example: 100
        - in: query
          name: with_count
          description: |
            The `with_count` query parameter allows you to 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.
          required: false
          schema: *ref_11
          example: true
      responses:
        '200':
          description: |
            Return family variants paginated
          content:
            application/json:
              schema:
                title: Family Variants
                type: object
                allOf:
                  - type: object
                    properties:
                      _links:
                        type: object
                        properties:
                          self:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the current page of resources
                          first:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the first page of resources
                          previous:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the previous page of resources
                          next:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the next page of resources
                      current_page:
                        type: integer
                        description: Current page number
                  - properties:
                      _embedded:
                        type: object
                        properties:
                          items:
                            type: array
                            items:
                              type: object
                              allOf:
                                - type: object
                                  properties:
                                    _links:
                                      type: object
                                      properties:
                                        self:
                                          type: object
                                          properties:
                                            href:
                                              type: string
                                              description: URI of the resource
                                - type: object
                                  required:
                                    - code
                                    - variant_attribute_sets
                                    - labels
                                    - common_attributes
                                  properties:
                                    code:
                                      type: string
                                      description: Family variant code
                                      x-immutable: true
                                    common_attributes:
                                      type: array
                                      description: Codes of attributes that are common to all variants (not specific to any enrichment level)
                                      items:
                                        type: string
                                      default: []
                                    variant_attribute_sets:
                                      type: array
                                      description: |
                                        Attributes distribution according to the
                                        enrichment level
                                      items:
                                        type: object
                                        required:
                                          - level
                                          - axes
                                        description: Enrichment level
                                        properties:
                                          level:
                                            type: integer
                                            description: Enrichment level
                                            x-immutable: true
                                            x-validation-rules: |
                                              • Number representing the level of the attribute set. \n• It should be equal to 1 or 2. \n• If you specify the level 2, you have to specify the level 1 as well.
                                          axes:
                                            type: array
                                            description: Codes of attributes used as variant axes
                                            x-immutable: true
                                            items:
                                              type: string
                                            default: []
                                            x-validation-rules: |
                                              • Should be an array of maximum 5 existing attribute codes \n• These attributes should belong to the family of the family variant \n• Only the following attribute types are allowed: `simple select`, `multi select`, `reference data`, `metric`, `boolean` \n• Attributes cannot be scopable, nor localizable nor locale specific \n• Attributes used as axes in one level cannot be used as axes or as attributes in the other level
                                          attributes:
                                            type: array
                                            description: |
                                              Codes of attributes bind to this enrichment level
                                            items:
                                              type: string
                                            default: []
                                            x-validation-rules: |
                                              • Should be an array of existing attribute codes \n• These attributes should belong to the family of the family variant \n• Attributes used as attribute in one level cannot be used as axes or as attributes in the other level \n• Attributes that are `unique value` or `identifier` are automatically distributed to the lower level.
                                    labels:
                                      type: object
                                      description: Family variant labels for each locale
                                      x-validation-rules: |
                                        The `localeCode` is the code of an existing and activated locale
                                      default: {}
                                      properties:
                                        localeCode:
                                          type: string
                                          description: |
                                            Family variant label for the locale
                                            `localeCode`
                                  example:
                                    code: shoesVariant
                                    labels:
                                      en_US: Shoes variant
                                      fr_FR: Variante de chaussures
                                    common_attributes:
                                      - name
                                      - description
                                      - image
                                    variant_attribute_sets:
                                      - level: 1
                                        attributes:
                                          - color
                                          - material
                                        axes:
                                          - color
                                      - level: 2
                                        attributes:
                                          - sku
                                          - size
                                        axes:
                                          - size
              example:
                _links:
                  self:
                    href: https://demo.akeneo.com/api/rest/v1/families/familyA/variants?page=1&limit=10
                  first:
                    href: https://demo.akeneo.com/api/rest/v1/families/familyA/variants?page=1&limit=10
                  next:
                    href: https://demo.akeneo.com/api/rest/v1/families/familyA/variants?page=2&limit=10
                current_page: 1
                _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
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '406':
          description: |
            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.
          content: *ref_13
    post:
      summary: Create a new family variant
      security:
        - bearerToken: []
      operationId: post_families__family_code__variants
      tags:
        - Family variant
      description: This endpoint allows you to create a family variant.
      parameters:
        - in: path
          name: family_code
          description: Code of the family
          required: true
          schema: *ref_47
          example: caps
      requestBody:
        description: |
          The body should contain a family variant in JSON standard format.
        content:
          application/json:
            schema:
              type: object
              additionalProperties: true
              required:
                - code
                - variant_attribute_sets
              properties:
                code:
                  type: string
                  description: Family variant code
                  x-immutable: true
                  example: shoesVariant
                variant_attribute_sets:
                  type: array
                  description: Attributes distribution according to the enrichment level
                  items:
                    type: object
                    required:
                      - level
                      - axes
                    description: Enrichment level
                    properties:
                      level:
                        type: integer
                        description: Enrichment level
                        x-immutable: true
                        x-validation-rules: |
                          &bull; Number representing the level of the attribute set.
                          &#10;&bull; It should be equal to 1 or 2. &#10;&bull; If
                          you specify the level 2, you have to specify the level 1
                          as well.
                      axes:
                        type: array
                        description: Codes of attributes used as variant axes
                        x-immutable: true
                        items:
                          type: string
                        default: []
                        x-validation-rules: |
                          &bull; Should be an array of maximum 5 existing attribute
                          codes &#10;&bull; These attributes should belong to the
                          family of the family variant &#10;&bull; Only the
                          following attribute types are allowed: `simple select`,
                          `multi select`, `reference data`, `metric`, `boolean`
                          &#10;&bull; Attributes cannot be scopable, nor localizable
                          nor locale specific &#10;&bull; Attributes used as axes in
                          one level cannot be used as axes or as attributes in the
                          other level
                      attributes:
                        type: array
                        description: Codes of attributes bind to this enrichment level
                        items:
                          type: string
                        default: []
                        x-validation-rules: |
                          &bull; Should be an array of existing attribute codes
                          &#10;&bull; These attributes should belong to the family
                          of the family variant &#10;&bull; Attributes used as
                          attribute in one level cannot be used as axes or as
                          attributes in the other level &#10;&bull; Attributes that
                          are `unique value` or `identifier` are automatically
                          distributed to the lower level.
                  example:
                    - level: 1
                      axes:
                        - color
                      attributes:
                        - material
                    - level: 2
                      axes:
                        - size
                      attributes:
                        - sku
                labels:
                  type: object
                  description: Family variant labels for each locale
                  example:
                    en_US: Shoes variant
                    fr_FR: Variante de chaussures
                  x-validation-rules: The `localeCode` is the code of an existing and activated locale
                  default: {}
                  properties:
                    localeCode:
                      type: string
                      description: Family variant label for the locale `localeCode`
              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:
        '201':
          description: |
            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: *ref_23
        '400':
          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.
          content: *ref_33
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '415':
          description: |
            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.
          content: *ref_6
        '422':
          description: Unprocessable entity
          x-details: The validation of the entity given in the body of the request failed
          content: *ref_5
    patch:
      summary: Update/create several family variants
      security:
        - bearerToken: []
      operationId: patch_families__family_code__variants
      tags:
        - Family variant
      description: This endpoint allows you to update and/or create several family variants at once.
      parameters:
        - in: path
          name: family_code
          description: Code of the family
          required: true
          schema: *ref_47
          example: caps
      requestBody:
        description: The families to be updated or created.
        required: true
        content:
          application/vnd.akeneo.collection+json:
            schema:
              type: string
            examples:
              request:
                summary: Example of a request to update or create family variants
                value: |
                  {"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:
        '200':
          description: |
            Returns a plain text response whose lines are JSON containing the status
            of each update or creation
          content:
            application/vnd.akeneo.collection+json:
              schema:
                type: string
              examples:
                response:
                  summary: Example of a response line for an updated family variants
                  value: |
                    {"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\""}
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '413':
          description: |
            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.
          content: *ref_34
        '415':
          description: |
            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.
          content: *ref_6
  /api/rest/v1/families/{family_code}/variants/{code}:
    get:
      summary: Get a family variant
      security:
        - bearerToken: []
      operationId: get_families__family_code__variants__code__
      description: |
        This endpoint allows you to get the information about a given family
        variant.
      tags:
        - Family variant
      parameters:
        - in: path
          name: family_code
          description: Code of the family
          required: true
          schema: *ref_47
          example: caps
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                additionalProperties: false
                required:
                  - code
                  - variant_attribute_sets
                  - labels
                  - common_attributes
                properties:
                  code:
                    type: string
                    description: Family variant code
                    x-immutable: true
                    example: shoesVariant
                  common_attributes:
                    type: array
                    description: Codes of attributes that are common to all variants (not specific to any enrichment level)
                    items:
                      type: string
                    default: []
                    example:
                      - name
                      - description
                      - image
                  variant_attribute_sets:
                    type: array
                    description: Attributes distribution according to the enrichment level
                    items:
                      type: object
                      required:
                        - level
                        - axes
                      description: Enrichment level
                      properties:
                        level:
                          type: integer
                          description: Enrichment level
                          x-immutable: true
                          x-validation-rules: |
                            • Number representing the level of the attribute set. \n• It should be equal to 1 or 2. \n• If you specify the level 2, you have to specify the level 1 as well.
                        axes:
                          type: array
                          description: Codes of attributes used as variant axes
                          x-immutable: true
                          items:
                            type: string
                          default: []
                          x-validation-rules: |
                            • Should be an array of maximum 5 existing attribute codes \n• These attributes should belong to the family of the family variant \n• Only the following attribute types are allowed: `simple select`, `multi select`, `reference data`, `metric`, `boolean` \n• Attributes cannot be scopable, nor localizable nor locale specific \n• Attributes used as axes in one level cannot be used as axes or as attributes in the other level
                        attributes:
                          type: array
                          description: Codes of attributes bind to this enrichment level
                          items:
                            type: string
                          default: []
                          x-validation-rules: |
                            • Should be an array of existing attribute codes \n• These attributes should belong to the family of the family variant \n• Attributes used as attribute in one level cannot be used as axes or as attributes in the other level \n• Attributes that are `unique value` or `identifier` are automatically distributed to the lower level.
                    example:
                      - level: 1
                        attributes:
                          - color
                          - material
                        axes:
                          - color
                      - level: 2
                        attributes:
                          - sku
                          - size
                        axes:
                          - size
                  labels:
                    type: object
                    description: Family variant labels for each locale
                    x-validation-rules: |
                      The `localeCode` is the code of an existing and activated locale
                    default: {}
                    properties:
                      localeCode:
                        type: string
                        description: Family variant label for the locale `localeCode`
                    example:
                      en_US: Shoes variant
                      fr_FR: Variante de chaussures
                example:
                  code: shoesVariant
                  labels:
                    en_US: Shoes variant
                    fr_FR: Variante de chaussures*
                  common_attributes:
                    - name
                    - description
                    - image
                  variant_attribute_sets:
                    - level: 1
                      attributes:
                        - color
                        - material
                      axes:
                        - color
                    - level: 2
                      attributes:
                        - sku
                        - size
                      axes:
                        - size
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '404':
          description: |
            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.
          content: *ref_25
        '406':
          description: |
            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.
          content: *ref_13
    patch:
      summary: Update/create a family variant
      security:
        - bearerToken: []
      operationId: patch_families__family_code__variants__code__
      tags:
        - Family variant
      description: |
        This endpoint allows you to update a given family variant.
        Note that if no family variant exists for the given code, it creates it.
      parameters:
        - in: path
          name: family_code
          description: Code of the family
          required: true
          schema: *ref_47
          example: caps
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
      requestBody:
        description: Family variants to update or create
        content:
          application/json:
            schema:
              type: object
              additionalProperties: true
              required:
                - variant_attribute_sets
              properties:
                code:
                  type: string
                  description: Family variant code
                  x-immutable: true
                  example: shoesVariant
                variant_attribute_sets:
                  type: array
                  description: Attributes distribution according to the enrichment level
                  items:
                    type: object
                    required:
                      - level
                      - axes
                    description: Enrichment level
                    properties:
                      level:
                        type: integer
                        description: Enrichment level
                        x-immutable: true
                        x-validation-rules: |
                          &bull; Number representing the level of the attribute set.
                          &#10;&bull; It should be equal to 1 or 2. &#10;&bull; If
                          you specify the level 2, you have to specify the level 1
                          as well.
                      axes:
                        type: array
                        description: Codes of attributes used as variant axes
                        x-immutable: true
                        items:
                          type: string
                        default: []
                        x-validation-rules: |
                          &bull; Should be an array of maximum 5 existing attribute
                          codes &#10;&bull; These attributes should belong to the
                          family of the family variant &#10;&bull; Only the
                          following attribute types are allowed: `simple select`,
                          `multi select`, `reference data`, `metric`, `boolean`
                          &#10;&bull; Attributes cannot be scopable, nor localizable
                          nor locale specific &#10;&bull; Attributes used as axes in
                          one level cannot be used as axes or as attributes in the
                          other level
                      attributes:
                        type: array
                        description: Codes of attributes bind to this enrichment level
                        items:
                          type: string
                        default: []
                        x-validation-rules: |
                          &bull; Should be an array of existing attribute codes
                          &#10;&bull; These attributes should belong to the family
                          of the family variant &#10;&bull; Attributes used as
                          attribute in one level cannot be used as axes or as
                          attributes in the other level &#10;&bull; Attributes that
                          are `unique value` or `identifier` are automatically
                          distributed to the lower level.
                  example:
                    - level: 1
                      attributes:
                        - color
                        - material
                      axes:
                        - color
                    - level: 2
                      attributes:
                        - sku
                        - size
                      axes:
                        - size
                labels:
                  type: object
                  description: Family variant labels for each locale
                  x-validation-rules: The `localeCode` is the code of an existing and activated locale
                  default: {}
                  properties:
                    localeCode:
                      type: string
                      description: Family variant label for the locale `localeCode`
                  example:
                    en_US: Shoes variant
                    fr_FR: Variante de chaussures
              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
        required: true
      responses:
        '201':
          description: |
            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: *ref_23
        '204':
          description: Successfully patched, response with empty body
        '400':
          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.
          content: *ref_33
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '415':
          description: |
            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.
          content: *ref_6
        '422':
          description: Unprocessable entity
          x-details: The validation of the entity given in the body of the request failed
          content: *ref_5
  /api/rest/v1/attributes:
    get:
      summary: Get list of attributes
      security:
        - bearerToken: []
      operationId: get_attributes
      description: |
        This endpoint allows you to get a list of attributes. Attributes are
        paginated and sorted by code.
      tags:
        - Attribute
      parameters:
        - name: search
          in: query
          description: |
            Filter attributes,
            for more details see the [Filters](https://api.akeneo.com/documentation/filter.html#filter-attributes) section.
          required: false
          schema:
            type: string
          examples:
            getAttributesByAttributeCode:
              summary: Filter the attributes by their code
              value: '{"code":[{"operator":"IN","value":["code1","code2"]}]}'
            getAttributesByUpdatedDate:
              summary: Filter the attributes by their update date
              value: '{"updated":[{"operator":">","value":"2020-07-04T10:00:00Z"}]}'
            getAttributesByAttributeType:
              summary: Filter the attributes by their type
              value: '{"type":[{"operator":"IN","value":["pim_catalog_simpleselect","pim_catalog_multiselect"]}]}'
            getAttributesByMainIdentifier:
              summary: Filter the attributes that are main identifier or not
              value: '{"is_main_identifier":[{"operator":"=","value":true}]}'
        - in: query
          name: page
          description: |
            The `page` query parameter allows you to 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](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_8
          example: 1
        - in: query
          name: limit
          description: |
            The `limit` query parameter allows you to 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](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_10
          example: 100
        - in: query
          name: with_count
          description: |
            The `with_count` query parameter allows you to 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.
          required: false
          schema: *ref_11
          example: true
        - in: query
          name: with_table_select_options
          description: |
            Return the options of 'select' column types (of a table attribute) in the response.
            (Only available since the 7.0 version)
          required: false
          schema: &ref_50
            type: boolean
            default: false
          example: true
      responses:
        '200':
          description: Return attributes paginated
          content:
            application/json:
              schema:
                title: Attributes
                type: object
                allOf:
                  - type: object
                    properties:
                      _links:
                        type: object
                        properties:
                          self:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the current page of resources
                          first:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the first page of resources
                          previous:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the previous page of resources
                          next:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the next page of resources
                      current_page:
                        type: integer
                        description: Current page number
                  - properties:
                      _embedded:
                        type: object
                        properties:
                          items:
                            type: array
                            items:
                              type: object
                              allOf:
                                - type: object
                                  properties:
                                    _links:
                                      type: object
                                      properties:
                                        self:
                                          type: object
                                          properties:
                                            href:
                                              type: string
                                              description: URI of the resource
                                - type: object
                                  properties: &ref_48
                                    code:
                                      type: string
                                      description: Attribute code
                                      x-immutable: true
                                      example: release_date
                                    type:
                                      type: string
                                      description: |
                                        Attribute type.
                                        See [type](https://api.akeneo.com/concepts/catalog-structure.html#attribute) section for more details.
                                      x-validation-rules: The type is one of the following values
                                      enum:
                                        - pim_catalog_identifier
                                        - pim_catalog_metric
                                        - pim_catalog_number
                                        - pim_reference_data_multiselect
                                        - pim_reference_data_simpleselect
                                        - pim_catalog_simpleselect
                                        - pim_catalog_multiselect
                                        - pim_catalog_date
                                        - pim_catalog_textarea
                                        - pim_catalog_text
                                        - pim_catalog_file
                                        - pim_catalog_image
                                        - pim_catalog_price_collection
                                        - pim_catalog_boolean
                                        - akeneo_reference_entity
                                        - akeneo_reference_entity_collection
                                        - pim_catalog_asset_collection
                                        - pim_catalog_product_link
                                      x-immutable: true
                                      example: pim_catalog_date
                                    labels:
                                      type: object
                                      description: Attribute labels for each locale
                                      x-validation-rules: |
                                        The `localeCode` is the code of an existing
                                        and activated locale
                                      default: {}
                                      properties:
                                        localeCode:
                                          type: string
                                          description: |
                                            Attribute label for the locale
                                            `localeCode`
                                      example:
                                        en_US: Release date
                                        fr_FR: Date de sortie
                                    group:
                                      type: string
                                      description: Attribute group
                                      x-validation-rules: It is the code of an existing group
                                      example: marketing
                                    group_labels:
                                      type: object
                                      description: Group labels for each locale
                                      x-validation-rules: |
                                        The `localeCode` is the code of an existing
                                        and activated locale
                                      readOnly: true
                                      default: {}
                                      properties:
                                        localeCode:
                                          type: string
                                          description: Group label for the locale `localeCode`
                                      example:
                                        en_US: Marketing
                                        fr_FR: Marketing
                                    sort_order:
                                      type: integer
                                      description: Order of the attribute in its group
                                      x-validation-rules: It is a positive integer
                                      default: 0
                                      example: 1
                                    localizable:
                                      type: boolean
                                      description: |
                                        Whether the attribute is localizable, i.e.
                                        can have one value by locale
                                      default: false
                                      x-immutable: true
                                      example: false
                                    scopable:
                                      type: boolean
                                      description: |
                                        Whether the attribute is scopable, i.e. can
                                        have one value by channel
                                      default: false
                                      x-immutable: true
                                      example: false
                                    available_locales:
                                      type: array
                                      description: |
                                        To make the attribute locale specfic,
                                        specify here for which locales it is
                                        specific
                                      x-validation-rules: |
                                        Each string of the array is an existing and
                                        activated locale
                                      items:
                                        type: string
                                      example:
                                        - en_US
                                        - fr_FR
                                    unique:
                                      type: boolean
                                      description: |
                                        Whether two values for the attribute cannot
                                        be the same
                                      x-immutable: true
                                      x-validation-rules: |
                                        Required to be `true` for `pim_catalog_identifier` attribute type.
                                        Can only be `true` for `pim_catalog_text`, `pim_catalog_number`, 
                                        or `pim_catalog_identifier` attribute types.
                                      x-warning: |
                                        Only `pim_catalog_text`, `pim_catalog_number`, 
                                        and `pim_catalog_identifier` attribute types support unique values.
                                        The `pim_catalog_identifier` type must always be unique.
                                      example: false
                                    useable_as_grid_filter:
                                      type: boolean
                                      description: |
                                        Whether the attribute can be used as a
                                        filter for the product grid in the PIM user
                                        interface
                                      example: true
                                    max_characters:
                                      type:
                                        - integer
                                        - 'null'
                                      description: |
                                        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`
                                      x-warning: |
                                        Only for `pim_catalog_text`,
                                        `pim_catalog_textarea` or
                                        `pim_catalog_identifier` attribute types
                                      example: 255
                                    validation_rule:
                                      type:
                                        - string
                                        - 'null'
                                      description: |
                                        Validation rule type used to validate any
                                        attribute value when the attribute type is
                                        `pim_catalog_text` or
                                        `pim_catalog_identifier`
                                      x-validation-rules: |
                                        Equal to `regexp` when the attribute type is
                                        equal to `pim_catalog_identifier`
                                      x-warning: |
                                        Only for `pim_catalog_text` or
                                        `pim_catalog_identifier` attribute types
                                      example: null
                                    validation_regexp:
                                      type:
                                        - string
                                        - 'null'
                                      description: |
                                        Regexp expression used to validate any
                                        attribute value when the attribute type is
                                        `pim_catalog_text` or
                                        `pim_catalog_identifier`
                                      x-validation-rules: |
                                        Required when the property `validation_rule`
                                        is equal to `regexp`
                                      x-warning: |
                                        Only for `pim_catalog_text` or
                                        `pim_catalog_identifier` attribute types
                                      example: null
                                    wysiwyg_enabled:
                                      type:
                                        - boolean
                                        - 'null'
                                      description: |
                                        Whether the WYSIWYG interface is shown when
                                        the attribute type is `pim_catalog_textarea`
                                      x-warning: |
                                        Only for `pim_catalog_textarea` attribute
                                        type
                                      example: null
                                    number_min:
                                      type:
                                        - integer
                                        - 'null'
                                      description: |
                                        Minimum integer value allowed when the
                                        attribute type is `pim_catalog_metric`,
                                        `pim_catalog_price` or `pim_catalog_number`
                                      x-warning: |
                                        Only for `pim_catalog_metric`,
                                        `pim_catalog_price_collection` or
                                        `pim_catalog_number` attribute types
                                      example: null
                                    number_max:
                                      type:
                                        - integer
                                        - 'null'
                                      description: |
                                        Maximum integer value allowed when the
                                        attribute type is `pim_catalog_metric`,
                                        `pim_catalog_price` or `pim_catalog_number`
                                      x-warning: |
                                        Only for `pim_catalog_metric`,
                                        `pim_catalog_price_collection` or
                                        `pim_catalog_number` attribute types
                                      example: null
                                    decimals_allowed:
                                      type:
                                        - boolean
                                        - 'null'
                                      description: |
                                        Whether decimals are allowed when the
                                        attribute type is `pim_catalog_metric`,
                                        `pim_catalog_price` or `pim_catalog_number`
                                      x-warning: |
                                        Only for `pim_catalog_metric`,
                                        `pim_catalog_price_collection` or
                                        `pim_catalog_number` attribute types
                                      example: null
                                    negative_allowed:
                                      type:
                                        - boolean
                                        - 'null'
                                      description: |
                                        Whether negative values are allowed when the
                                        attribute type is `pim_catalog_metric` or
                                        `pim_catalog_number`
                                      x-warning: |
                                        Only for `pim_catalog_metric` or
                                        `pim_catalog_number` attribute types
                                      example: null
                                    metric_family:
                                      type:
                                        - string
                                        - 'null'
                                      description: |
                                        Metric family when the attribute type is
                                        `pim_catalog_metric`
                                      x-immutable: true
                                      x-validation-rules: |
                                        Required for `pim_catalog_metric` attribute
                                        type
                                      x-warning: Only for `pim_catalog_metric` attribute type
                                      example: null
                                    default_metric_unit:
                                      type:
                                        - string
                                        - 'null'
                                      description: |
                                        Default metric unit when the attribute type
                                        is `pim_catalog_metric`
                                      x-validation-rules: |
                                        Required for `pim_catalog_metric` attribute
                                        type
                                      x-warning: Only for `pim_catalog_metric` attribute type
                                      example: null
                                    date_min:
                                      type:
                                        - string
                                        - 'null'
                                      description: |
                                        Minimum date allowed when the attribute type
                                        is `pim_catalog_date`
                                      x-validation-rules: |
                                        The datetime format follows the ISO-8601
                                        norm
                                      x-warning: Only for `pim_catalog_date` attribute type
                                      format: date-time
                                      example: null
                                    date_max:
                                      type:
                                        - string
                                        - 'null'
                                      description: |
                                        Maximum date allowed when the attribute type
                                        is `pim_catalog_date`
                                      x-validation-rules: |
                                        The datetime format follows the ISO-8601
                                        norm
                                      x-warning: Only for `pim_catalog_date` attribute type
                                      format: date-time
                                      example: null
                                    allowed_extensions:
                                      type: array
                                      description: |
                                        Extensions allowed when the attribute type
                                        is `pim_catalog_file` or `pim_catalog_image`
                                      x-warning: |
                                        Only for `pim_catalog_file` or
                                        `pim_catalog_image` attribute types
                                      items:
                                        type: string
                                      example: []
                                    max_file_size:
                                      type:
                                        - string
                                        - 'null'
                                      description: |
                                        Max file size in MB when the attribute type
                                        is `pim_catalog_file` or `pim_catalog_image`
                                      x-warning: |
                                        Only for `pim_catalog_file` or
                                        `pim_catalog_image` attribute types
                                      example: null
                                    reference_data_name:
                                      type:
                                        - string
                                        - 'null'
                                      description: |
                                        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`
                                      x-validation-rules: |
                                        Required only for `akeneo_reference_entity`
                                        or `akeneo_reference_entity_collection` or
                                        `pim_catalog_asset_collection` attribute
                                        types
                                      x-warning: |
                                        Only for `akeneo_reference_entity` or
                                        `akeneo_reference_entity_collection` or
                                        `pim_catalog_asset_collection` attribute
                                        types
                                      example: null
                                    default_value:
                                      oneOf:
                                        - type: boolean
                                          description: |
                                            Default value for a Yes/No attribute,
                                            applied when creating a new product or
                                            product model (only available since the 5.0)
                                        - type: number
                                          description: |
                                            Default value for a number attribute,
                                            applied when creating a new product or
                                            product model (only available since the 5.0)
                                        - type: string
                                          description: |
                                            Default value for a simple select attribute,
                                            applied when creating a new product or
                                            product model (only available since the 5.0)
                                        - type: array
                                          description: |
                                            Default value for a multi-select attribute,
                                            applied when creating a new product or
                                            product model (only available since the 5.0)
                                          items:
                                            type: string
                                        - type: 'null'
                                      x-validation-rules: |
                                        Can only be set for `pim_catalog_boolean`, `pim_catalog_number`,
                                        `pim_catalog_simpleselect`, or `pim_catalog_multiselect` attribute types.
                                        Must be null for `pim_catalog_identifier`, `pim_catalog_text`, 
                                        `pim_catalog_textarea`, `pim_catalog_price_collection`, `pim_catalog_file`,
                                        `pim_catalog_image`, `pim_catalog_date`, `pim_catalog_metric`, and
                                        `pim_reference_data_simpleselect` attribute types.
                                      x-warning: |
                                        Only for `pim_catalog_boolean`, `pim_catalog_number`,
                                        `pim_catalog_simpleselect`, or `pim_catalog_multiselect` attribute types
                                      x-from-version: '5.0'
                                      example: null
                                    table_configuration:
                                      type: array
                                      description: |
                                        Configuration of the Table attribute
                                        (columns)
                                      x-validation-rules: |
                                        Required only for `pim_catalog_table`
                                        attribute type
                                      x-warning: Only for `pim_catalog_table` attribute type
                                      items:
                                        type: object
                                        required:
                                          - code
                                          - data_type
                                        properties:
                                          code:
                                            type: string
                                            description: Column code
                                          data_type:
                                            type: string
                                            enum:
                                              - select
                                              - text
                                              - number
                                              - boolean
                                              - incremental_number
                                              - reference_entity
                                              - product_link
                                              - measurement
                                              - date
                                            description: Column data type
                                          validations:
                                            type: object
                                            description: |
                                              User defined validation constraints on
                                              the cell content
                                            default: {}
                                            properties:
                                              min:
                                                type: number
                                                description: minimum value of a numeric cell
                                                x-validation-rules: only for `number` data type columns
                                              max:
                                                type: number
                                                description: maximum value of a numeric cell
                                                x-validation-rules: only for `number` data type columns
                                              decimals_allowed:
                                                type: boolean
                                                description: |
                                                  whether the value of a numeric cell can
                                                  hold a decimal part
                                                x-validation-rules: only for `number` data type columns
                                              max_length:
                                                type: number
                                                description: maximum length of a text cell
                                                x-validation-rules: only for `text` data type columns
                                          labels:
                                            type: object
                                            description: Column labels for each locale
                                            x-validation-rules: |
                                              The `localeCode` is the code of an
                                              existing and activated locale
                                            default: {}
                                            properties:
                                              localeCode:
                                                type: string
                                                description: Column label for the locale `localeCode`
                                          is_required_for_completeness:
                                            type: boolean
                                            description: |
                                              Defines if the column should be entirely
                                              filled for the attribute to be
                                              considered complete
                                            x-warning: |
                                              This value is always true for the first
                                              column in a table configuration
                                            default: false
                                      example: []
                                    is_main_identifier:
                                      type: boolean
                                      description: |
                                        Is this attribute main identifier when
                                        attribute type is `pim_catalog_identifier`
                                      example: false
                                    is_mandatory:
                                      type: boolean
                                      description: |
                                        This attribute must be enriched from the
                                        moment a product is created. It will be
                                        mandatory across all families.
                                      x-warning: |
                                        Only for `pim_catalog_boolean`,
                                        `pim_catalog_identifier`,
                                        `pim_catalog_number`,
                                        `pim_catalog_simpleselect`,
                                        `pim_catalog_textarea`, `pim_catalog_text`,
                                        `pim_reference_data_simpleselect` or
                                        `akeneo_reference_entity` attribute types
                                      example: false
                                    decimal_places_strategy:
                                      type:
                                        - string
                                        - 'null'
                                      description: |
                                        Defines the decimal places strategy.
                                        Available options are `round`, `forbid` and
                                        `trim`.
                                      x-warning: |
                                        Only for `pim_catalog_number` or
                                        `pim_catalog_metric` attribute types
                                      example: null
                                    decimal_places:
                                      type:
                                        - number
                                        - 'null'
                                      description: |
                                        Defines the number of decimal places when
                                        decimal places strategy is `round` or
                                        `forbid`.
                                      x-warning: |
                                        Only for `pim_catalog_number` or
                                        `pim_catalog_metric` attribute types
                                      example: null
                                  example: &ref_49
                                    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: []
                                    available_locales: []
                                    date_min: '2017-06-28T08:00:00'
                                    date_max: '2017-08-08T22:00:00'
                                    sort_order: 1
                                    localizable: false
                                    scopable: false
                                    labels:
                                      en_US: Sale date
                                      fr_FR: Date des soldes
                                    is_mandatory: false
              examples:
                response:
                  summary: Example of a response
                  value:
                    _links:
                      self:
                        href: https://demo.akeneo.com/api/rest/v1/attributes?page=3&limit=3
                      first:
                        href: https://demo.akeneo.com/api/rest/v1/attributes?page=1&limit=3
                      previous:
                        href: https://demo.akeneo.com/api/rest/v1/attributes?page=2&limit=3
                      next:
                        href: https://demo.akeneo.com/api/rest/v1/attributes?page=4&limit=3
                    current_page: 3
                    _embedded:
                      items:
                        - _links:
                            self:
                              href: https://demo.akeneo.com/api/rest/v1/attributes/sku
                          code: sku
                          type: pim_catalog_identifier
                          group: other
                          group_labels:
                            en_US: Other
                            fr_FR: Autre
                          unique: true
                          useable_as_grid_filter: true
                          allowed_extensions: []
                          available_locales: []
                          wysiwyg_enabled: false
                          decimals_allowed: false
                          negative_allowed: false
                          sort_order: 1
                          localizable: false
                          scopable: false
                          labels:
                            en_US: Identifier
                            fr_FR: Identifiant
                          is_mandatory: false
                        - _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: []
                          available_locales: []
                          wysiwyg_enabled: false
                          decimals_allowed: false
                          negative_allowed: false
                          date_min: '2017-06-28T08:00:00'
                          date_max: '2017-08-08T22:00:00'
                          sort_order: 1
                          localizable: false
                          scopable: false
                          labels:
                            en_US: Sale date
                            fr_FR: Date des soldes
                          is_mandatory: false
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '406':
          description: |
            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.
          content: *ref_13
    post:
      summary: Create a new attribute
      security:
        - bearerToken: []
      operationId: post_attributes
      description: This endpoint allows you to create a new attribute.
      tags:
        - Attribute
      requestBody:
        description: |
          The body of the request must be a JSON object containing the attribute to
          create. The `code` field is mandatory, it is used to identify the
          attribute. If the attribute already exists, an error will be returned.
          <br>
          <strong>Note:</strong> The `code` field must be unique across all attributes.
        content:
          application/json:
            schema:
              required:
                - code
                - type
                - group
              type: object
              properties: *ref_48
              example: *ref_49
      responses:
        '201':
          description: Successfully created attribute, returns empty body.
        '400':
          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.
          content: *ref_33
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '415':
          description: |
            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.
          content: *ref_6
        '422':
          description: Unprocessable entity
          x-details: The validation of the entity given in the body of the request failed
          content: *ref_5
    patch:
      summary: Update/create several attributes
      security:
        - bearerToken: []
      operationId: patch_attributes
      tags:
        - Attribute
      description: This endpoint allows you to update and/or create several attributes at once. Contains several lines, each line is an attribute in JSON standard format
      requestBody:
        description: |
          Each line is a JSON object containing the attribute to update or create.
          The `code` field is mandatory, it is used to identify the attribute.
          If the attribute does not exist, it will be created. If it exists, it will
          be updated with the provided values.
          <br>
          <strong>Note:</strong> The `code` field must be unique across all attributes.
        content:
          application/vnd.akeneo.collection+json:
            schema:
              type: string
            examples:
              multi-line-attribute:
                summary: Example of a line to update an attribute
                value: |
                  {"code":"description","useable_as_grid_filter":true}
                  {"code":"short_description","group":"marketig"}
                  {"code":"release_date","date_min":"2017-06-28T08:00:00"}
      responses:
        '200':
          description: |
            Returns a plain text response whose lines are JSON containing the status
            of each update or creation
          x-no-entity: true
          content:
            application/vnd.akeneo.collection+json:
              schema:
                type: string
              examples:
                example:
                  summary: Example of a response line for an updated attribute
                  value: |
                    {"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}
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '413':
          description: |
            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.
          content: *ref_34
        '415':
          description: |
            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.
          content: *ref_6
  /api/rest/v1/attributes/{code}:
    get:
      summary: Get an attribute
      security:
        - bearerToken: []
      operationId: get_attributes__code_
      description: This endpoint allows you to get the information about a given attribute.
      tags:
        - Attribute
      parameters:
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
        - in: query
          name: with_table_select_options
          description: |
            Return the options of 'select' column types (of a table attribute) in the response.
            (Only available since the 7.0 version)
          required: false
          schema: *ref_50
          example: true
      responses:
        '200':
          description: Returns the content of the attribute in JSON standard format
          content:
            application/json:
              schema:
                type: object
                properties: *ref_48
                example: *ref_49
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '404':
          description: |
            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.
          content: *ref_25
        '406':
          description: |
            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.
          content: *ref_13
    patch:
      summary: Update/create an attribute
      security:
        - bearerToken: []
      operationId: patch_attributes__code_
      tags:
        - Attribute
      description: This endpoint allows you to update a given attribute. Know more about [Update behavior](https://api.akeneo.com/documentation/update.html#update-behavior). Note that if no attribute exists for the given code, it creates it.
      parameters:
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
      requestBody:
        description: The attribute to update or create. If the attribute does not exist, it will be created.
        content:
          application/json:
            schema:
              type: object
              properties: *ref_48
              example: *ref_49
        required: true
      responses:
        '201':
          description: Successfully created or updated, empty response body.
        '204':
          description: Successfully patched, response with empty body
        '400':
          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.
          content: *ref_33
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '415':
          description: |
            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.
          content: *ref_6
        '422':
          description: Unprocessable entity
          x-details: The validation of the entity given in the body of the request failed
          content: *ref_5
  /api/rest/v1/attributes/{attribute_code}/options:
    get:
      summary: Get list of attribute options
      security:
        - bearerToken: []
      operationId: get_attributes__attribute_code__options
      description: This endpoint allows you to get a list of attribute options. Attribute options are paginated and sorted by code.
      tags:
        - Attribute option
      parameters:
        - in: path
          name: attribute_code
          description: Code of the attribute
          required: true
          schema: &ref_51
            type: string
          example: color
        - in: query
          name: page
          description: |
            The `page` query parameter allows you to 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](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_8
          example: 1
        - in: query
          name: limit
          description: |
            The `limit` query parameter allows you to 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](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_10
          example: 100
        - in: query
          name: with_count
          description: |
            The `with_count` query parameter allows you to 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.
          required: false
          schema: *ref_11
          example: true
      responses:
        '200':
          description: Return attribute options paginated
          content:
            application/json:
              schema:
                title: Attribute Options
                type: object
                allOf:
                  - type: object
                    properties:
                      _links:
                        type: object
                        properties:
                          self:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the current page of resources
                          first:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the first page of resources
                          previous:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the previous page of resources
                          next:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the next page of resources
                      current_page:
                        type: integer
                        description: Current page number
                  - properties:
                      _embedded:
                        type: object
                        properties:
                          items:
                            type: array
                            items:
                              type: object
                              allOf:
                                - type: object
                                  properties:
                                    _links:
                                      type: object
                                      properties:
                                        self:
                                          type: object
                                          properties:
                                            href:
                                              type: string
                                              description: URI of the resource
                                - type: object
                                  properties: &ref_52
                                    code:
                                      type: string
                                      description: Code of option
                                      example: black
                                    attribute:
                                      type: string
                                      description: Code of attribute related to the attribute option
                                      x-validation-rules: It is the same attribute code as the one given as path parameter
                                      example: a_simple_select
                                    sort_order:
                                      type: integer
                                      description: Order of attribute option
                                      x-validation-rules: It is a positive integer
                                      example: 2
                                    labels:
                                      type: object
                                      description: Attribute option labels for each locale
                                      x-validation-rules: The `localeCode` is the code of an existing and activated locale
                                      default: {}
                                      properties:
                                        localeCode:
                                          type: string
                                          description: Attribute option label for the locale `localeCode`
                                      example:
                                        en_US: Black
                                        fr_FR: Noir
                                        de_DE: Schwarz
                                  example: &ref_53
                                    code: black
                                    attribute: a_simple_select
                                    sort_order: 2
                                    labels:
                                      en_US: Black
                                      fr_FR: Noir
              examples:
                response:
                  summary: Example of attribute options response
                  value:
                    _links:
                      self:
                        href: https://demo.akeneo.com/api/rest/v1/attributes/color/options?page=3&limit=3
                      first:
                        href: https://demo.akeneo.com/api/rest/v1/attributes/color/options?page=1&limit=3
                      previous:
                        href: https://demo.akeneo.com/api/rest/v1/attributes/color/options?page=2&limit=3
                      next:
                        href: https://demo.akeneo.com/api/rest/v1/attributes/color/options?page=4&limit=3
                    current_page: 3
                    _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
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '406':
          description: |
            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.
          content: *ref_13
    post:
      summary: Create a new attribute option
      security:
        - bearerToken: []
      operationId: post_attributes__attribute_code__options
      description: This endpoint allows you to create a new attribute option.
      tags:
        - Attribute option
      parameters:
        - in: path
          name: attribute_code
          description: Code of the attribute
          required: true
          schema: *ref_51
          example: color
      requestBody:
        description: Body containing the attribute option to create.
        content:
          application/json:
            schema:
              type: object
              properties: *ref_52
              example: *ref_53
      responses:
        '201':
          description: |
            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: *ref_23
        '400':
          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.
          content: *ref_33
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '415':
          description: |
            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.
          content: *ref_6
        '422':
          description: Unprocessable entity
          x-details: The validation of the entity given in the body of the request failed
          content: *ref_5
    patch:
      summary: Update/create several attribute options
      security:
        - bearerToken: []
      operationId: patch_attributes__attribute_code__options
      tags:
        - Attribute option
      description: This endpoint allows you to update several attribute options at once. Please note that this endpoint applies a rate limit of 3 concurrent API requests per second. Contains several lines, each line is an attribute option in JSON standard format.
      parameters:
        - in: path
          name: attribute_code
          description: Code of the attribute
          required: true
          schema: *ref_51
          example: color
      requestBody:
        description: One attribute option per line, each line is a JSON object containing the attribute option to update or create.
        content:
          application/vnd.akeneo.collection+json:
            schema:
              type: string
            examples:
              request:
                summary: Example of multiline json request
                value: |
                  {"line":1,"code":"black","attribute":"a_simple_select","labels":{"en_US":"Black","fr_FR":"Noir"}}
                  {"line":2,"code":"red","label":{"en_US": "Red","fr_FR": "Rouge"}}
                  {"line":3,"code":"yellow","labels":{"en_US": "Yellow","fr_FR": "Jaune"}}
      responses:
        '200':
          description: Returns a plain text response whose lines are JSON containing the status of each update or creation
          x-no-entity: true
          content:
            application/vnd.akeneo.collection+json:
              schema:
                type: string
              examples:
                response:
                  summary: Example of multiline json response
                  value: |
                    {"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}
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '413':
          description: |
            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.
          content: *ref_34
        '415':
          description: |
            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.
          content: *ref_6
        '429':
          description: Too many requests
          x-details: There are too many requests on this endpoint
          content: &ref_54
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: HTTP status code
                    example: 429
                  message:
                    type: string
                    description: Message explaining the error
                    example: You have exceeded the limit of API requests per second.
              examples:
                response:
                  summary: Example of a too many requests response
                  value:
                    code: 429
                    message: You have exceeded the limit of API requests per second.
  /api/rest/v1/attributes/{attribute_code}/options/{code}:
    get:
      summary: Get an attribute option
      security:
        - bearerToken: []
      operationId: get_attributes__attribute_code__options__code_
      description: This endpoint allows you to get the information about a given attribute option.
      tags:
        - Attribute option
      parameters:
        - in: path
          name: attribute_code
          description: Code of the attribute
          required: true
          schema: *ref_51
          example: color
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
      responses:
        '200':
          description: Returns the content of the attribute option in JSON standard format.
          content:
            application/json:
              schema:
                type: object
                properties: *ref_52
                example: *ref_53
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '404':
          description: |
            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.
          content: *ref_25
        '406':
          description: |
            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.
          content: *ref_13
    patch:
      summary: Update/create an attribute option
      security:
        - bearerToken: []
      operationId: patch_attributes__attribute_code__options__code_
      tags:
        - Attribute option
      description: This endpoint allows you to update a given attribute option. Know more about [Update behavior](https://api.akeneo.com/documentation/update.html#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.
      parameters:
        - in: path
          name: attribute_code
          description: Code of the attribute
          required: true
          schema: *ref_51
          example: color
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
      requestBody:
        description: Body containing the attribute option to create or update.
        content:
          application/json:
            schema:
              type: object
              properties: *ref_52
              example: *ref_53
        required: true
      responses:
        '201':
          description: |
            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: *ref_23
        '204':
          description: |
            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: *ref_24
        '400':
          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.
          content: *ref_33
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '415':
          description: |
            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.
          content: *ref_6
        '422':
          description: Unprocessable entity
          x-details: The validation of the entity given in the body of the request failed
          content: *ref_5
        '429':
          description: Too many requests
          x-details: There are too many requests on this endpoint
          content: *ref_54
  /api/rest/v1/attribute-groups:
    get:
      summary: Get list of attribute groups
      security:
        - bearerToken: []
      operationId: attribute_groups_get_list
      description: |
        This endpoint allows you to get a list of attribute groups. Attribute groups
        are paginated and sorted by code.
      tags:
        - Attribute group
      parameters:
        - name: search
          in: query
          description: |
            Filter attribute groups,
            for more details see the [Filters](https://api.akeneo.com/documentation/filter.html#filter-attribute-groups) section.
          required: false
          schema:
            type: string
          examples:
            getAttributeGroupsByAttributeGroupCode:
              summary: Filter the attribute groups by their code
              value: '{"code":[{"operator":"IN","value":["marketing","technical"]}]}'
            getAttributeGroupsByUpdatedDate:
              summary: Filter the attribute groups by their update date
              value: '{"updated":[{"operator":">","value":"2020-07-04T10:00:00Z"}]}'
        - in: query
          name: page
          description: |
            The `page` query parameter allows you to 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](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_8
          example: 1
        - in: query
          name: limit
          description: |
            The `limit` query parameter allows you to 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](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_10
          example: 100
        - in: query
          name: with_count
          description: |
            The `with_count` query parameter allows you to 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.
          required: false
          schema: *ref_11
          example: true
      responses:
        '200':
          description: Return attribute groups paginated
          content:
            application/json:
              schema:
                title: Attribute groups
                type: object
                allOf:
                  - type: object
                    properties:
                      _links:
                        type: object
                        properties:
                          self:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the current page of resources
                          first:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the first page of resources
                          previous:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the previous page of resources
                          next:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the next page of resources
                      current_page:
                        type: integer
                        description: Current page number
                  - properties:
                      _embedded:
                        type: object
                        properties:
                          items:
                            type: array
                            items:
                              type: object
                              allOf:
                                - type: object
                                  properties:
                                    _links:
                                      type: object
                                      properties:
                                        self:
                                          type: object
                                          properties:
                                            href:
                                              type: string
                                              description: URI of the resource
                                - type: object
                                  required: &ref_55
                                    - code
                                  properties: &ref_56
                                    code:
                                      type: string
                                      description: Attribute group code
                                      x-immutable: true
                                      example: marketing
                                    sort_order:
                                      type: integer
                                      description: Attribute group order among other attribute groups
                                      x-validation-rules: It is a positive integer
                                      default: 0
                                      example: 2
                                    attributes:
                                      type: array
                                      description: Attribute codes that compose the attribute group
                                      x-validation-rules: |
                                        Each string of the array is an existing attribute code, an
                                        attribute can only be in one attribute group
                                      items:
                                        type: string
                                      default: []
                                      example:
                                        - sku
                                        - name
                                        - description
                                    labels:
                                      type: object
                                      description: Attribute group labels for each locale
                                      x-validation-rules: The `localeCode` is the code of an existing and activated locale
                                      default: {}
                                      example:
                                        en_US: Marketing
                                        fr_FR: Marketing
                                      additionalProperties:
                                        type: string
                                        description: Attribute group label for the locale
              examples:
                response:
                  summary: Example of attribute groups
                  value:
                    _links:
                      self:
                        href: https://demo.akeneo.com/api/rest/v1/attribute-groups?page=3&limit=2
                      first:
                        href: https://demo.akeneo.com/api/rest/v1/attribute-groups?page=1&limit=2
                      previous:
                        href: https://demo.akeneo.com/api/rest/v1/attribute-groups?page=2&limit=2
                      next:
                        href: https://demo.akeneo.com/api/rest/v1/attribute-groups?page=4&limit=2
                    current_page: 3
                    _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
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '406':
          description: |
            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.
          content: *ref_13
    post:
      summary: Create a new attribute group
      security:
        - bearerToken: []
      operationId: attribute_groups_post
      description: This endpoint allows you to create a new attribute group.
      tags:
        - Attribute group
      requestBody:
        description: Representation of the attribute group to create, in JSON standard format
        content:
          application/json:
            schema:
              type: object
              required: *ref_55
              properties: *ref_56
            examples:
              response:
                summary: Example of attribute group to create
                value:
                  code: marketing
                  sort_order: 4
                  attributes:
                    - sku
                    - name
                    - description
                  labels:
                    en_US: Marketing
                    fr_FR: Marketing
      responses:
        '201':
          description: successfully created, response with empty body
        '400':
          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.
          content: *ref_33
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '415':
          description: |
            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.
          content: *ref_6
        '422':
          description: Unprocessable entity
          x-details: The validation of the entity given in the body of the request failed
          content: *ref_5
    patch:
      summary: Update/create several attribute groups
      security:
        - bearerToken: []
      operationId: several_attribute_groups_patch
      tags:
        - Attribute group
      description: |
        This endpoint allows you to update and/or create several attribute groups at
        once. Contains several lines, each line is an attribute group in JSON standard
        format.
      requestBody:
        description: Representation of the attribute groups to update or create, in JSON standard format
        content:
          application/vnd.akeneo.collection+json:
            schema:
              type: string
              description: |
                Each line is a JSON object representing an attribute group, the
                `code` property is mandatory, the other properties are optional.
                The `type` property is not allowed.
            examples:
              response:
                summary: Example of attribute groups to update or create
                value: |
                  {"code":"marketing","sort_order":2,"attributes":["sku","name","description"],"labels":{"en_US":"Marketing","fr_FR":"Marketing"}}
                  {"code":"marketing","sort_order":3,"attributes":["sku","name","description"],"labels":{"en_US":"Marketing","fr_FR":"Marketing"}}
      responses:
        '200':
          description: |
            Returns a plain text response whose lines are JSON containing the status
            of each update or creation
          content:
            application/vnd.akeneo.collection+json:
              schema:
                type: string
                description: |
                  Each line is a JSON object containing the status of the update or
                  creation of an attribute group, with the `line` property indicating
                  the line number in the request body.
              examples:
                response:
                  summary: Response with the status of each update or creation
                  value: |
                    {"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}
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '413':
          description: |
            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.
          content: *ref_34
        '415':
          description: |
            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.
          content: *ref_6
  /api/rest/v1/attribute-groups/{code}:
    get:
      summary: Get an attribute group
      security:
        - bearerToken: []
      operationId: attribute_groups_get
      description: |
        This endpoint allows you to get the information about a given attribute
        group.
      tags:
        - Attribute group
      parameters:
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
      responses:
        '200':
          description: |
            Returns the content of the attribute group in JSON standard format
          content:
            application/json:
              schema:
                type: object
                required: *ref_55
                properties: *ref_56
              examples:
                default:
                  summary: Default example
                  value:
                    code: marketing
                    sort_order: 4
                    attributes:
                      - sku
                      - name
                      - description
                      - response_time
                      - release_date
                      - price
                    labels:
                      en_US: Marketing
                      fr_FR: Marketing
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '404':
          description: |
            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.
          content: *ref_25
        '406':
          description: |
            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.
          content: *ref_13
    patch:
      summary: Update/create an attribute group
      security:
        - bearerToken: []
      operationId: attribute_groups_patch
      tags:
        - Attribute group
      description: |
        This endpoint allows you to update a given attribute group.
        Know more about [Update behavior](https://api.akeneo.com/documentation/update.html#update-behavior).
        Note that if no attribute group exists for the given code, it creates it.
      parameters:
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
      requestBody:
        description: Representation of the attribute group to create or update.
        content:
          application/json:
            schema:
              type: object
              properties:
                code:
                  type: string
                  description: Attribute group code
                  x-immutable: true
                  example: marketing
                sort_order:
                  type: integer
                  description: Attribute group order among other attribute groups
                  x-validation-rules: It is a positive integer
                  default: 0
                  example: 2
                attributes:
                  type: array
                  description: Attribute codes that compose the attribute group
                  x-validation-rules: |
                    Each string of the array is an existing attribute code, an
                    attribute can only be in one attribute group
                  items:
                    type: string
                  default: []
                  example:
                    - sku
                    - name
                    - description
                labels:
                  type: object
                  description: Attribute group labels for each locale
                  x-validation-rules: The `localeCode` is the code of an existing and activated locale
                  default: {}
                  example:
                    en_US: Marketing
                    fr_FR: Marketing
                  additionalProperties:
                    type: string
                    description: Attribute group label for the locale
            examples:
              default:
                summary: Default example
                value:
                  code: marketing
                  sort_order: 4
                  attributes:
                    - sku
                    - name
                    - description
                    - response_time
                    - release_date
                    - price
                  labels:
                    en_US: Marketing
                    fr_FR: Marketing
        required: true
      responses:
        '201':
          description: |
            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: *ref_23
        '204':
          description: Successfully patched, response with empty body
        '400':
          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.
          content: *ref_33
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '415':
          description: |
            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.
          content: *ref_6
        '422':
          description: Unprocessable entity
          x-details: The validation of the entity given in the body of the request failed
          content: *ref_5
  /api/rest/v1/association-types:
    get:
      summary: Get a list of association types
      security:
        - bearerToken: []
      operationId: association_types_get_list
      description: |
        This endpoint allows you to get a list of association types. Association
        types are paginated and sorted by code.
      tags:
        - Association type
      parameters:
        - in: query
          name: page
          description: |
            The `page` query parameter allows you to 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](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_8
          example: 1
        - in: query
          name: limit
          description: |
            The `limit` query parameter allows you to 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](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_10
          example: 100
        - in: query
          name: with_count
          description: |
            The `with_count` query parameter allows you to 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.
          required: false
          schema: *ref_11
          example: true
      responses:
        '200':
          description: Return association types paginated
          content:
            application/json:
              schema:
                title: Association types
                type: object
                allOf:
                  - type: object
                    properties:
                      _links:
                        type: object
                        properties:
                          self:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the current page of resources
                          first:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the first page of resources
                          previous:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the previous page of resources
                          next:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the next page of resources
                      current_page:
                        type: integer
                        description: Current page number
                  - properties:
                      _embedded:
                        type: object
                        properties:
                          items:
                            type: array
                            items:
                              type: object
                              allOf:
                                - type: object
                                  properties:
                                    _links:
                                      type: object
                                      properties:
                                        self:
                                          type: object
                                          properties:
                                            href:
                                              type: string
                                              description: URI of the resource
                                - type: object
                                  required: &ref_57
                                    - code
                                  properties: &ref_58
                                    code:
                                      type: string
                                      description: Association type code
                                      x-immutable: true
                                      example: upsell
                                    labels:
                                      type: object
                                      description: Association type labels for each locale
                                      x-validation-rules: |
                                        The `localeCode` is the code of an existing
                                        and activated locale
                                      default: {}
                                      additionalProperties:
                                        type:
                                          - string
                                          - 'null'
                                        description: Association type label for the locale
                                      example:
                                        en_US: Upsell
                                        fr_FR: Vente incitative
                                    is_quantified:
                                      type: boolean
                                      description: |
                                        When true, the association is a quantified
                                        association (Only available in the PIM
                                        Enterprise Edition).
                                      default: false
                                      example: true
                                    is_two_way:
                                      type: boolean
                                      description: |
                                        When true, the association is a bidirectional
                                        association
                                      default: false
                                      example: false
              examples:
                response:
                  summary: Example of association types response
                  value:
                    _links:
                      self:
                        href: https://demo.akeneo.com/api/rest/v1/association-types?page=2&limit=3
                      first:
                        href: https://demo.akeneo.com/api/rest/v1/association-types?page=1&limit=3
                      previous:
                        href: https://demo.akeneo.com/api/rest/v1/association-types?page=1&limit=3
                      next:
                        href: https://demo.akeneo.com/api/rest/v1/association-types?page=3&limit=3
                    current_page: 2
                    _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
                    page_count: 10
                    item_count: 30
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '406':
          description: |
            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.
          content: *ref_13
    post:
      summary: Create a new association type
      security:
        - bearerToken: []
      operationId: association_types_post
      description: This endpoint allows you to create a new association type.
      tags:
        - Association type
      requestBody:
        description: Body containing the association type to create.
        content:
          application/json:
            schema:
              type: object
              required: *ref_57
              properties: *ref_58
            examples:
              request:
                summary: Example of association type creation
                value:
                  code: NEW_PROMOTION
                  labels:
                    en_US: New Promotion
                    fr_FR: Nouvelle Promotion
                  is_quantified: false
                  is_two_way: true
      responses:
        '201':
          description: Successfully created association type, empty response body.
        '400':
          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.
          content: *ref_33
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '415':
          description: |
            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.
          content: *ref_6
        '422':
          description: Unprocessable entity
          x-details: The validation of the entity given in the body of the request failed
          content: *ref_5
    patch:
      summary: Update/create several association types
      security:
        - bearerToken: []
      operationId: several_association_types_patch
      tags:
        - Association type
      description: |
        This endpoint allows you to update and/or create several association types
        at once. Contains several lines, each line is an association type in JSON standard
        format.
      requestBody:
        description: Body containing the association types to update or create.
        content:
          application/vnd.akeneo.collection+json:
            schema:
              type: string
            examples:
              request:
                summary: Example of multiline JSON request
                value: |
                  {"code":"new_sell"}
                  {"code":"substitution", "type":"bar"}
                  {"code":"x_cross_sell", "is_two_way": true, "is_quantified": false}
      responses:
        '200':
          description: Returns a plain text response whose lines are JSON containing the status of each update or creation
          content:
            application/vnd.akeneo.collection+json:
              schema:
                type: string
              examples:
                response:
                  summary: Example of multiline json response
                  value: |
                    {"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":"http:\/\/api.akeneo.com\/api-reference.html#patch_association_types__code_"}}}
                    {"line":3,"code":"x_cross_sell","status_code":204}
        '400':
          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.
          content: *ref_33
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '413':
          description: |
            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.
          content: *ref_34
        '415':
          description: |
            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.
          content: *ref_6
  /api/rest/v1/association-types/{code}:
    get:
      summary: Get an association type
      security:
        - bearerToken: []
      operationId: association_types_get
      description: |
        This endpoint allows you to get the information about a given association
        type.
      tags:
        - Association type
      parameters:
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
      responses:
        '200':
          description: Returns the content of the association type in JSON standard format
          content:
            application/json:
              schema:
                type: object
                required: *ref_57
                properties: *ref_58
              examples:
                response:
                  summary: Example of association type response
                  value:
                    code: X_SELL
                    labels:
                      en_US: Cross sell
                      fr_FR: Vente croisée
                    is_quantified: false
                    is_two_way: false
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '404':
          description: |
            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.
          content: *ref_25
        '406':
          description: |
            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.
          content: *ref_13
    patch:
      summary: Update/create an association type
      security:
        - bearerToken: []
      operationId: association_types_patch
      tags:
        - Association type
      description: |
        This endpoint allows you to update a given association type.
        Know more about [Update behavior](https://api.akeneo.com/documentation/update.html#update-behavior).
        Note that if no association type exists for the given code, it creates it.
      parameters:
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
      requestBody:
        description: Body containing the association type to update or create.
        content:
          application/json:
            schema:
              type: object
              properties:
                code:
                  type: string
                  description: Association type code
                  x-immutable: true
                  example: upsell
                labels:
                  type: object
                  description: Association type labels for each locale
                  x-validation-rules: |
                    The `localeCode` is the code of an existing
                    and activated locale
                  default: {}
                  additionalProperties:
                    type:
                      - string
                      - 'null'
                    description: Association type label for the locale
                  example:
                    en_US: Upsell
                    fr_FR: Vente incitative
                is_quantified:
                  type: boolean
                  description: |
                    When true, the association is a quantified
                    association (Only available in the PIM
                    Enterprise Edition).
                  default: false
                  example: true
                is_two_way:
                  type: boolean
                  description: |
                    When true, the association is a bidirectional
                    association
                  default: false
                  example: false
            examples:
              request:
                summary: Example of association type update
                value:
                  labels:
                    en_US: Updated Cross sell
                    fr_FR: Vente croisée mise à jour
                  is_two_way: true
        required: true
      responses:
        '201':
          description: Successfully created association type, empty response body.
        '204':
          description: Successfully updated association type, empty response body.
        '400':
          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.
          content: *ref_33
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '415':
          description: |
            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.
          content: *ref_6
        '422':
          description: Unprocessable entity
          x-details: The validation of the entity given in the body of the request failed
          content: *ref_5
  /api/rest/v1/channels:
    get:
      summary: Get a list of channels
      security:
        - bearerToken: []
      operationId: get_channels
      description: |
        This endpoint allows you to get a list of channels. Channels are paginated
        and sorted by code.
      tags:
        - Channel
      parameters:
        - in: query
          name: page
          description: |
            The `page` query parameter allows you to 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](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_8
          example: 1
        - in: query
          name: limit
          description: |
            The `limit` query parameter allows you to 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](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_10
          example: 100
        - in: query
          name: with_count
          description: |
            The `with_count` query parameter allows you to 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.
          required: false
          schema: *ref_11
          example: true
      responses:
        '200':
          description: Return channels paginated
          content:
            application/json:
              schema:
                type: object
                allOf:
                  - type: object
                    properties:
                      _links:
                        type: object
                        properties:
                          self:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the current page of resources
                          first:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the first page of resources
                          previous:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the previous page of resources
                          next:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the next page of resources
                      current_page:
                        type: integer
                        description: Current page number
                properties:
                  _embedded:
                    type: object
                    properties:
                      items:
                        type: array
                        items:
                          type: object
                          allOf:
                            - type: object
                              properties: &ref_59
                                code:
                                  type: string
                                  description: Channel code
                                  x-immutable: true
                                  example: ecommerce
                                locales:
                                  type: array
                                  description: Codes of activated locales for the channel
                                  x-validation-rules: |
                                    &bull; Each string of the array is an existing locale code
                                    &#10;&bull; At least one locale in the array
                                  items:
                                    type: string
                                  example:
                                    - de_DE
                                    - en_US
                                    - fr_FR
                                currencies:
                                  type: array
                                  description: Codes of activated currencies for the channel
                                  x-validation-rules: |
                                    &bull; Each string of the array is an existing currency code
                                    &#10;&bull; At least one currency in the array
                                  items:
                                    type: string
                                  example:
                                    - USD
                                    - EUR
                                category_tree:
                                  type: string
                                  description: Code of the category tree linked to the channel
                                  x-validation-rules: |
                                    It is the code of an existing category code that is a tree (a
                                    category without parent)
                                  example: master
                                conversion_units:
                                  type: object
                                  description: |
                                    Units to which the given metric attributes should be converted
                                    when exporting products
                                  x-validation-rules: |
                                    &bull; The `attributeCode` is the code of an existing attribute
                                    whose type is `pim_catalog_metric` &#10;&bull; The strings are
                                    existing unit codes.
                                  properties:
                                    attributeCode:
                                      type: string
                                      description: |
                                        Conversion unit code used to convert the values of the
                                        attribute `attributeCode` when exporting via the channel
                                  example:
                                    weight: KILOGRAM
                                labels:
                                  type: object
                                  description: Channel labels for each locale
                                  x-validation-rules: The `localeCode` is the code of an existing and activated locale
                                  default: {}
                                  properties:
                                    localeCode:
                                      type: string
                                      description: Channel label for the locale `localeCode`
                                  example:
                                    en_US: Ecommerce
                                    de_DE: Ecommerce
                                    fr_FR: Ecommerce
                              example: &ref_60
                                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
                          properties:
                            _links:
                              type: object
                              properties:
                                self:
                                  type: object
                                  properties:
                                    href:
                                      type: string
                                      description: URI of the resource
                    example:
                      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
                          labels:
                            en_US: Ecommerce
                            fr_FR: E-commerce
                            de_DE: E-commerce
              examples:
                response:
                  summary: Example of response
                  value:
                    _links:
                      self:
                        href: https://demo.akeneo.com/api/rest/v1/channels?page=1&limit=3
                      first:
                        href: https://demo.akeneo.com/api/rest/v1/channels?page=1&limit=3
                    current_page: 1
                    _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
                          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
                          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
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '406':
          description: |
            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.
          content: *ref_13
    post:
      summary: Create a new channel
      security:
        - bearerToken: []
      operationId: channels_post
      description: This endpoint allows you to create a new channel.
      tags:
        - Channel
      requestBody:
        description: Body representing the channel.
        content:
          application/json:
            schema:
              allOf:
                - type: object
                  properties: *ref_59
                  example: *ref_60
              required:
                - code
                - category_tree
                - locales
                - currencies
            examples:
              request:
                summary: Example of creating a channel
                value:
                  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:
        '201':
          description: |
            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: *ref_23
        '400':
          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.
          content: *ref_33
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '415':
          description: |
            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.
          content: *ref_6
        '422':
          description: |
            This response indicates that the validation of the entity given in the body of the request failed.
            It can occur when the data provided does not meet the required format or constraints defined by the API.
          content: *ref_46
    patch:
      summary: Update/create several channels
      security:
        - bearerToken: []
      operationId: several_channels_patch
      tags:
        - Channel
      description: This endpoint allows you to update and/or create several channels at once. Contains several lines, each line is a channel in JSON standard format.
      requestBody:
        description: |
          Each line is a JSON object containing the channel to update or create.
          The `code` field is mandatory, it is used to identify the attribute.
          If the channel does not exist, it will be created. If it exists, it will
          be updated with the provided values.
        content:
          application/vnd.akeneo.collection+json:
            schema:
              type: string
            examples:
              request:
                summary: Example of creating/updating several channels
                value: |
                  {"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:
        '200':
          description: Returns a plain text response whose lines are JSON containing the status of each update or creationOK
          content:
            application/vnd.akeneo.collection+json:
              schema:
                type: string
              examples:
                response:
                  summary: Example of response
                  value: |
                    {"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":"http:\/\/api.akeneo.com\/api-reference.html#patch_channels__code_"}}}
                    {"line":3,"code":"tablet","status_code":204}
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '413':
          description: |
            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.
          content: *ref_34
        '415':
          description: |
            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.
          content: *ref_6
  /api/rest/v1/channels/{code}:
    get:
      summary: Get a channel
      security:
        - bearerToken: []
      operationId: get_channels__code_
      description: This endpoint allows you to get the information about a given channel.
      tags:
        - Channel
      parameters:
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
      responses:
        '200':
          description: Returns the content of the channel in JSON standard format
          content:
            application/json:
              schema:
                type: object
                properties: *ref_59
                example: *ref_60
              examples:
                response:
                  summary: Example of a channel
                  value:
                    code: ecommerce
                    currencies:
                      - USD
                      - EUR
                    locales:
                      - de_DE
                      - en_US
                      - fr_FR
                    category_tree: master
                    conversion_units: {}
                    labels:
                      en_US: Ecommerce
                      de_DE: Ecommerce
                      fr_FR: Ecommerce
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '404':
          description: |
            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.
          content: *ref_25
        '406':
          description: |
            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.
          content: *ref_13
    patch:
      summary: Update/create a channel
      security:
        - bearerToken: []
      operationId: channels_patch
      tags:
        - Channel
      description: |
        This endpoint allows you to update a given channel.
        Know more about [Update behavior](https://api.akeneo.com/documentation/update.html#update-behavior).
        Note that if no channel exists for the given code, it creates it.
      parameters:
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
      requestBody:
        description: Body of the request to create or update a channel.
        content:
          application/json:
            schema:
              type: object
              properties: *ref_59
              example: *ref_60
            examples:
              request:
                summary: Example of updating a channel
                value:
                  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
        required: true
      responses:
        '201':
          description: |
            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: *ref_23
        '204':
          description: |
            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: *ref_24
        '400':
          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.
          content: *ref_33
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '415':
          description: |
            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.
          content: *ref_6
        '422':
          description: Unprocessable entity
          x-details: The validation of the entity given in the body of the request failed
          content: *ref_5
  /api/rest/v1/locales:
    get:
      summary: Get a list of locales
      description: |
        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`.
      operationId: get_locales
      tags:
        - Locale
      parameters:
        - name: search
          in: query
          description: |
            The `search` query parameter allows you to filter locales based on specific criteria.
            For more details see the [Filters section](https://api.akeneo.com/documentation/filter.html#filter-locales).
          required: false
          schema:
            type: string
          examples:
            getOnlyEnabledLocales:
              summary: Filter the locales to get only the enabled ones
              value: '{"enabled":[{"operator":"=","value":true}]}'
        - in: query
          name: page
          description: |
            The `page` query parameter allows you to 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](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_8
          example: 1
        - in: query
          name: limit
          description: |
            The `limit` query parameter allows you to 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](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_10
          example: 100
        - in: query
          name: with_count
          description: |
            The `with_count` query parameter allows you to 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.
          required: false
          schema: *ref_11
          example: true
      responses:
        '200':
          description: |
            Returns a paginated list of locales available in the PIM.
            The response includes links for navigation between pages and details about each locale, such as its code and whether it is enabled.
          content:
            application/json:
              schema:
                type: object
                allOf:
                  - type: object
                    properties: *ref_36
                properties:
                  current_page:
                    type: integer
                    description: Current page number
                    example: 2
                  _embedded:
                    type: object
                    properties:
                      items:
                        type: array
                        items:
                          type: object
                          allOf:
                            - type: object
                              properties: &ref_61
                                code:
                                  type: string
                                  description: Locale code
                                  example: en_US
                                enabled:
                                  type: boolean
                                  description: Whether the locale is enabled
                                  default: false
                                  example: true
                          properties:
                            _links:
                              type: object
                              properties:
                                self:
                                  type: object
                                  properties:
                                    href:
                                      type: string
                                      description: URI of the resource
                                      example: https://demo.akeneo.com/api/rest/v1/locales/en_US
                    example:
                      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
              examples:
                response:
                  summary: Paginated list of locales
                  value:
                    _links:
                      self:
                        href: https://demo.akeneo.com/api/rest/v1/locales?page=2&limit=5
                      first:
                        href: https://demo.akeneo.com/api/rest/v1/locales?page=1&limit=5
                      previous:
                        href: https://demo.akeneo.com/api/rest/v1/locales?page=1&limit=5
                      next:
                        href: https://demo.akeneo.com/api/rest/v1/locales?page=3&limit=5
                    current_page: 2
                    _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
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '404':
          description: |
            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.
          content: *ref_25
        '406':
          description: |
            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.
          content: *ref_13
      security:
        - bearerToken: []
  /api/rest/v1/locales/{code}:
    get:
      summary: Get a locale
      description: |
        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.
      operationId: get_locale_by_code
      tags:
        - Locale
      parameters:
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
      responses:
        '200':
          description: |
            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.
          content:
            application/json:
              schema:
                type: object
                properties: *ref_61
              examples:
                response:
                  summary: English (United States)
                  value:
                    code: en_US
                    enabled: true
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '404':
          description: |
            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.
          content: *ref_25
        '406':
          description: |
            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.
          content: *ref_13
      security:
        - bearerToken: []
  /api/rest/v1/categories:
    get:
      summary: Get the list of categories
      description: |
        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.
      operationId: get_categories
      tags:
        - Category
      parameters:
        - name: search
          in: query
          description: |
            The `search` query parameter allows you to filter categories based on specific criteria.
            For more details see the [Filters section](https://api.akeneo.com/documentation/filter.html#filter-categories).
          required: false
          schema:
            type: string
          examples:
            getOnlyRootCategories:
              summary: Filter the categories to get only root categories
              value: '{"is_root":[{"operator":"=","value":true}]}'
            getCategoriesByParent:
              summary: Filter the categories by parent
              value: '{"parent":[{"operator":"=","value":"categoryA"}]}'
            getCategoriesByCode:
              summary: Filter the categories by their code
              value: '{"code":[{"operator":"IN","value":["category_code1","category_code2"]}]}'
            getCategoriesByUpdatedDate:
              summary: Filter the categories by their update date
              value: '{"updated":[{"operator":">","value":"2021-05-17T10:00:00Z"}]}'
        - in: query
          name: page
          description: |
            The `page` query parameter allows you to 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](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_8
          example: 1
        - in: query
          name: limit
          description: |
            The `limit` query parameter allows you to 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](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_10
          example: 100
        - in: query
          name: with_count
          description: |
            The `with_count` query parameter allows you to 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.
          required: false
          schema: *ref_11
          example: true
        - in: query
          name: with_position
          description: |
            The `with_position` query parameter allows you to 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.
          required: false
          schema: &ref_63
            type: boolean
            default: false
          example: true
        - in: query
          name: with_enriched_attributes
          description: |
            The `with_enriched_attributes` query parameter allows you to 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
          required: false
          schema: &ref_64
            type: boolean
            default: false
          example: true
      responses:
        '200':
          description: |
            This endpoint allows you to get a list of categories. Categories are paginated and sorted by `root/left`.
            You can use the `search` query parameter to filter categories based on their labels or codes.
            The response includes the current page number, total number of pages, and a list of categories with their details.
          content:
            application/json:
              schema:
                type: object
                allOf:
                  - type: object
                    properties: *ref_36
                properties:
                  current_page:
                    type: integer
                    description: Current page number.
                    example: 2
                  _embedded:
                    type: object
                    properties:
                      items:
                        type: array
                        items:
                          type: object
                          allOf:
                            - type: object
                              properties: &ref_62
                                code:
                                  type: string
                                  description: Category code.
                                  example: winter_collection
                                parent:
                                  type:
                                    - string
                                    - 'null'
                                  description: Category code of the parent's category. It is either equal to `null` or to an existing category code. &#10;&bull; If equal to an existing category code, it cannot reference itself.
                                  example: root_category
                                updated:
                                  type: string
                                  description: Date of the last update.
                                  format: date-time
                                  example: '2021-05-21T11:32:00+02:00'
                                position:
                                  type: integer
                                  description: Position of the category in its level, start from 1 (only available when query parameter "with_position" is set to "true").
                                  example: 1
                                labels:
                                  type: object
                                  additionalProperties:
                                    type:
                                      - string
                                      - 'null'
                                    description: Category label for the locale `localeCode`. The `localeCode` is the code of an existing and activated locale.
                                  example:
                                    en_US: Winter collection
                                    fr_FR: Collection hiver
                                    de_DE: Winter-Kollektion
                                channel_requirements:
                                  type: array
                                  description: List of Channel codes on which the category is required for products completeness. Only category trees can be required, not child categories.
                                  items:
                                    type: string
                                  default: []
                                  example:
                                    - ecommerce
                                    - mobile
                                values:
                                  type: object
                                  description: Attribute values.
                                  additionalProperties:
                                    type: object
                                    properties:
                                      type:
                                        type: string
                                        description: The attribute type.
                                        example: textarea
                                      locale:
                                        type:
                                          - string
                                          - 'null'
                                        description: Locale code of the attribute value.
                                        example: en_US
                                      channel:
                                        type:
                                          - string
                                          - 'null'
                                        description: Channel code of the attribute value.
                                        example: ecommerce
                                      attribute_code:
                                        type: string
                                        description: The attribute code with its uuid (attributeCode|attributeUuid).
                                        example: description|96b88bf4-c2b7-4b64-a1f9-5d4876c02c26
                                      data:
                                        description: Attribute value.
                                        oneOf:
                                          - type: string
                                            example: <p>Winter collection description</p>
                                          - type: boolean
                                            example: false
                                          - type: array
                                            items:
                                              type: object
                                              properties:
                                                product_uuid:
                                                  type: string
                                                  example: 12951d98-210e-4b1c-ab18-7fdgf1bd14f3
                                                product_model_code:
                                                  type: string
                                                  example: test_model_1
                                          - type: object
                                            properties:
                                              size:
                                                type: integer
                                                description: Size of the file in bytes.
                                                example: 1401359
                                              extension:
                                                type: string
                                                description: File extension.
                                                example: jpg
                                              file_path:
                                                type: string
                                                description: Path to the file in the storage.
                                                example: 2/d/c/7/2dc791671d726e7438219d5dc7fd51a53d6bf2bb_IMG_7860.jpg
                                              mime_type:
                                                type: string
                                                description: MIME type of the file.
                                                example: image/jpeg
                                              original_filename:
                                                type: string
                                                description: Original filename before upload.
                                                example: IMG_7860.jpg
                                        example: <p>Winter collection description</p>
                                  example:
                                    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
                          properties:
                            _links:
                              type: object
                              properties:
                                self:
                                  type: object
                                  properties:
                                    href:
                                      type: string
                                      description: URI of the resource.
                                      example: https://demo.akeneo.com/api/rest/v1/categories/winter_collection
                    example:
                      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
                          channel_requirements:
                            - ecommerce
                            - mobile
              examples:
                response:
                  summary: Example response for getting a list of categories
                  value:
                    _links:
                      self:
                        href: https://demo.akeneo.com/api/rest/v1/categories?page=2&limit=5
                      first:
                        href: https://demo.akeneo.com/api/rest/v1/categories?page=1&limit=5
                      previous:
                        href: https://demo.akeneo.com/api/rest/v1/categories?page=1&limit=5
                      next:
                        href: https://demo.akeneo.com/api/rest/v1/categories?page=3&limit=5
                    current_page: 2
                    _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
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '406':
          description: |
            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.
          content: *ref_13
      security:
        - bearerToken: []
    post:
      summary: Create a new category
      description: |
        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.
      operationId: post_categories
      tags:
        - Category
      requestBody:
        description: The category to be created.
        content:
          application/json:
            schema:
              required:
                - code
              type: object
              properties: *ref_62
            examples:
              rootCategory:
                summary: Example of creating a root category
                value:
                  code: root_category
                  parent: null
              categoryWithParent:
                summary: Example of creating a category with a parent
                value:
                  code: category_1,
                  parent: root_category
              categoryWithLabels:
                summary: Example of creating a category with labels
                value:
                  code: category_2
                  parent: root_category,
                  labels:
                    en_US: Category two
                    fr_FR: Catégorie deux
              categoryWithValuesAndValidations:
                summary: Example of creating a category with values and validations
                value:
                  code: winter_collection
                  parent: null
                  labels:
                    en_US: Winter collection
                    fr_FR: Collection hiver
                  values:
                    a_text_area_attribute|96b88bf4-c2b7-4b64-a1f9-5d4876c02c26|ecommerce|en_US:
                      data: <p>Winter collection description</p>
                      channel: ecommerce
                      locale: en_US
                      attribute_code: a_text_area_attribute
                    a_boolean_attribute|96b88bf4-c2b7-4b64-a1f9-5d4876c02c26|ecommerce|en_US:
                      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
        required: false
      responses:
        '201':
          description: |
            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: *ref_23
        '400':
          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.
          content: *ref_33
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '415':
          description: |
            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.
          content: *ref_6
        '422':
          description: |
            This response indicates that the validation of the entity given in the body of the request failed.
            It can occur when the data provided does not meet the required format or constraints defined by the API.
          content: *ref_46
      security:
        - bearerToken: []
    patch:
      summary: Create or update several categories
      description: |
        This endpoint allows you to update several categories at once. You can specify multiple categories in the request body, each in JSON format.
        The request body should contain an array of category objects, each with its own code, parent category, labels, values, validations, and channel requirements.
        The response will include the status of each category creation or update operation.
      operationId: patch_categories
      tags:
        - Category
      requestBody:
        description: A stream of category objects in JSON Lines format (one JSON object per line).
        content:
          application/vnd.akeneo.collection+json:
            schema:
              type: string
              description: Each line must be a valid JSON object conforming to the category schema.
            example: |
              {"code":"spring_collection","parent":null,"labels":{"en_US":"Spring Collection"}}
              {"code":"woman_shoes","parent":"spring_collection"}
              {"code":"man_shoes","parent":"spring_collection","values":{"a_boolean_attribute":[{"data":true,"channel":"ecommerce"}]}}
        required: false
      responses:
        '200':
          description: |
            This response indicates that the category creation or update was successful. The response contains several lines, each representing a category in JSON standard format (JSON Lines).
            Each line includes the line number, category code, HTTP status code, and an optional message explaining any errors encountered during the process.
          content:
            application/vnd.akeneo.collection+json:
              schema:
                type: string
                description: A stream of JSON objects, one per line. Each line represents the status of a single category operation.
              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}
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '413':
          description: |
            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.
          content: *ref_34
        '415':
          description: |
            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.
          content: *ref_6
      security:
        - bearerToken: []
  /api/rest/v1/categories/{code}:
    get:
      summary: Get a category
      description: |
        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.
      operationId: get_category_by_code
      tags:
        - Category
      parameters:
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
        - in: query
          name: with_position
          description: |
            The `with_position` query parameter allows you to 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.
          required: false
          schema: *ref_63
          example: true
        - in: query
          name: with_enriched_attributes
          description: |
            The `with_enriched_attributes` query parameter allows you to 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
          required: false
          schema: *ref_64
          example: true
      responses:
        '200':
          description: |
            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.
          content:
            application/json:
              schema:
                type: object
                properties: *ref_62
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '404':
          description: |
            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.
          content: *ref_25
        '406':
          description: |
            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.
          content: *ref_13
      security:
        - bearerToken: []
    patch:
      summary: Create or update a category
      description: |
        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.
      operationId: patch_categories_by_code
      tags:
        - Category
      parameters:
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
      requestBody:
        description: The category to update or create. If the category does not exist, it will be created.
        content:
          application/json:
            schema:
              type: object
              properties: *ref_62
            examples:
              rootCategory:
                summary: Example of creating a root category
                value:
                  code: root_category
                  parent: null
              categoryWithParent:
                summary: Example of creating a category with a parent
                value:
                  code: category_1,
                  parent: root_category
              categoryWithLabels:
                summary: Example of creating a category with labels
                value:
                  code: category_2
                  parent: root_category,
                  labels:
                    en_US: Category two
                    fr_FR: Catégorie deux
              categoryWithValuesAndValidations:
                summary: Example of creating a category with values and validations
                value:
                  code: winter_collection
                  parent: null
                  labels:
                    en_US: Winter collection
                    fr_FR: Collection hiver
                  values:
                    a_text_area_attribute|96b88bf4-c2b7-4b64-a1f9-5d4876c02c26|ecommerce|en_US:
                      data: <p>Winter collection description</p>
                      channel: ecommerce
                      locale: en_US
                      attribute_code: a_text_area_attribute
                    a_boolean_attribute|96b88bf4-c2b7-4b64-a1f9-5d4876c02c26|ecommerce|en_US:
                      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
        required: true
      responses:
        '201':
          description: |
            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: *ref_23
        '204':
          description: |
            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: *ref_24
        '400':
          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.
          content: *ref_33
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '415':
          description: |
            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.
          content: *ref_6
        '422':
          description: |
            This response indicates that the validation of the entity given in the body of the request failed.
            It can occur when the data provided does not meet the required format or constraints defined by the API.
          content: *ref_46
      security:
        - bearerToken: []
  /api/rest/v1/category-media-files:
    post:
      summary: Create a category media file
      description: |
        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.
      operationId: post_category_media_files
      tags:
        - Category
      requestBody:
        description: Body of the request to create a new category media file
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                category:
                  type: string
                  description: |
                    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"}'.
                  example: '{"code":"ecomm", "attribute_code":"image_1", "channel":"ecommerce", "locale":"en_US"}'
                file:
                  type: string
                  description: The media file to be uploaded. It should be provided as a binary file. Ensure that the file format is supported by the system.
                  format: binary
                  example: ''
              required:
                - category
                - file
            examples:
              valid-category-media-file:
                summary: Create a media file for a category
                value:
                  category: '{"code":"ecomm", "attribute_code":"image_1", "channel":"ecommerce", "locale":"en_US"}'
                  file: ''
      responses:
        '201':
          description: |
            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: *ref_23
        '400':
          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.
          content: *ref_33
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '415':
          description: |
            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.
          content: *ref_6
        '422':
          description: |
            This response indicates that the validation of the entity given in the body of the request failed.
            It can occur when the data provided does not meet the required format or constraints defined by the API.
          content: *ref_46
      security:
        - bearerToken: []
  /api/rest/v1/category-media-files/{file_path}/download:
    get:
      summary: Download a category media file
      description: |
        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.
      operationId: download_category_media_file
      tags:
        - Category
      parameters:
        - in: path
          name: file_path
          description: |
            The `file_path` 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.
          required: true
          schema:
            type: string
          example: my_resource_code
      responses:
        '200':
          description: Returns the binary of the media file
          x-content-type: Mime-type of the media file
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '404':
          description: |
            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.
          content: *ref_25
      security:
        - bearerToken: []
  /api/rest/v1/currencies:
    get:
      summary: Get a list of currencies
      description: 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`.
      operationId: get_currencies
      tags:
        - Currency
      parameters:
        - name: search
          in: query
          description: |
            The `search` query parameter allows you to filter currencies based on specific criteria.
            For more details see the [Filters section](https://api.akeneo.com/documentation/filter.html#filter-currencies).
          required: false
          schema:
            type: string
          examples:
            getOnlyEnabledCurrencies:
              summary: Filter the currencies to get only the enabled ones
              value: '{"enabled":[{"operator":"=","value":true}]}'
        - in: query
          name: page
          description: |
            The `page` query parameter allows you to 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](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_8
          example: 1
        - in: query
          name: limit
          description: |
            The `limit` query parameter allows you to 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](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_10
          example: 100
        - in: query
          name: with_count
          description: |
            The `with_count` query parameter allows you to 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.
          required: false
          schema: *ref_11
          example: true
      responses:
        '200':
          description: |
            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.
          content:
            application/json:
              schema:
                type: object
                allOf:
                  - type: object
                    properties:
                      _links:
                        type: object
                        properties:
                          self:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the current page of resources
                          first:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the first page of resources
                          previous:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the previous page of resources
                          next:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the next page of resources
                      current_page:
                        type: integer
                        description: Current page number
                properties:
                  _embedded:
                    type: object
                    properties:
                      items:
                        type: array
                        items:
                          type: object
                          allOf:
                            - type: object
                              properties: &ref_65
                                code:
                                  type: string
                                  description: Currency code
                                  example: EUR
                                enabled:
                                  type: boolean
                                  description: Whether the currency is enabled
                                  example: true
                                label:
                                  type: string
                                  description: Currency label
                                  example: EUR (Euro)
                          properties:
                            _links:
                              type: object
                              properties:
                                self:
                                  type: object
                                  properties:
                                    href:
                                      type: string
                                      description: URI of the resource
                    example:
                      items:
                        - _links:
                            self:
                              href: https://demo.akeneo.com/api/rest/v1/currencies/EUR
                          code: EUR
                          enabled: true
                          label: EUR (Euro)
                        - _links:
                            self:
                              href: https://demo.akeneo.com/api/rest/v1/currencies/USD
                          code: USD
                          enabled: true
                          label: USD (Dollar)
              examples:
                response:
                  summary: Example of response
                  value:
                    _links:
                      self:
                        href: https://demo.akeneo.com/api/rest/v1/currencies?page=1&limit=3
                      first:
                        href: https://demo.akeneo.com/api/rest/v1/currencies?page=1&limit=3
                    current_page: 1
                    _embedded:
                      items:
                        - _links:
                            self:
                              href: https://demo.akeneo.com/api/rest/v1/currencies/EUR
                          code: EUR
                          enabled: true
                          label: EUR (Euro)
                        - _links:
                            self:
                              href: https://demo.akeneo.com/api/rest/v1/currencies/USD
                          code: USD
                          enabled: true
                          label: USD (Dollar)
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '406':
          description: |
            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.
          content: *ref_13
      security:
        - bearerToken: []
  /api/rest/v1/currencies/{code}:
    get:
      summary: Get a currency
      description: |
        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.
      operationId: get_currency_by_code
      tags:
        - Currency
      parameters:
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
      responses:
        '200':
          description: |
            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.
          content:
            application/json:
              schema:
                type: object
                properties: *ref_65
              examples:
                response:
                  summary: Example response for a currency
                  value:
                    code: EUR
                    enabled: true
                    label: EUR (Euro)
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '404':
          description: |
            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.
          content: *ref_25
        '406':
          description: |
            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.
          content: *ref_13
      security:
        - bearerToken: []
  /api/rest/v1/measurement-families:
    get:
      summary: Get list of measurement families
      description: This endpoint allows you to get a list of measurement families.
      operationId: measurement_families_get_list
      tags:
        - Measurement family
      responses:
        '200':
          description: A list of measurement families.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  required: &ref_66
                    - code
                    - standard_unit_code
                    - units
                  properties: &ref_67
                    code:
                      type: string
                      description: Measurement family code.
                      readOnly: true
                    labels:
                      type: object
                      description: |
                        Measurement family labels for each locale.
                        *The `localeCode` must be the code of an existing and activated locale.*
                      additionalProperties:
                        type: string
                        description: Measurement family label for the specified locale.
                      default: {}
                    standard_unit_code:
                      type: string
                      description: |
                        Unit code used as the standard unit for this measurement family.
                        *The unit code must exist in the `units` property.*
                      readOnly: true
                    units:
                      type: object
                      description: |
                        Measurement units for this family with their conversion operations.
                        *A unit cannot be added when a product attribute is linked to this measurement family.*
                        More details [here](https://api.akeneo.com/concepts/target-market-settings.html#focus-on-the-units).
                      additionalProperties:
                        type: object
                        properties:
                          code:
                            type: string
                            description: Measurement unit code.
                            readOnly: true
                          labels:
                            type: object
                            description: Unit labels for each locale. The `localeCode` must be an existing and activated locale.
                            additionalProperties:
                              type: string
                              description: Unit label for the specified locale.
                            default: {}
                          convert_from_standard:
                            type: array
                            description: |
                              Calculation to convert the unit from the standard unit.
                              * The conversion operations cannot be updated when a product attribute is linked to this measurement family.
                              * At least one conversion operation per unit is required.
                            items:
                              type: object
                              properties:
                                operator:
                                  type: string
                                  description: Operator for the conversion operation.
                                  enum:
                                    - mul
                                    - div
                                    - add
                                    - sub
                                value:
                                  type: string
                                  description: Value for the conversion operation.
                          symbol:
                            type: string
                            description: Measurement unit symbol.
                  example: &ref_68
                    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_METER:
                        code: SQUARE_METER
                        labels:
                          en_US: Square meter
                          fr_FR: Mètre carré
                        convert_from_standard:
                          - operator: mul
                            value: '1'
                        symbol: m²
              examples:
                listExample:
                  summary: Example of a measurement family list
                  value:
                    - 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²
        '401':
          description: |
            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.
          content: *ref_3
        '406':
          description: |
            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.
          content: *ref_13
      security:
        - bearerToken: []
    patch:
      summary: Update/create several measurement families
      description: This endpoint allows you to update and/or create several measurement families at once.
      operationId: patch_measurement_families
      tags:
        - Measurement family
      requestBody:
        description: A list of measurement families to create or update.
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                anyOf:
                  - type: object
                    required: *ref_66
                    properties: *ref_67
                    example: *ref_68
                  - type: object
                    required:
                      - code
                    properties:
                      code:
                        type: string
                        description: Measurement family code.
                      labels:
                        type: object
                        description: |
                          Measurement family labels for each locale.
                          The `localeCode` must be the code of an existing and activated locale.
                        additionalProperties:
                          type: string
                          description: Measurement family label for the specified locale.
                        default: {}
                      standard_unit_code:
                        type: string
                        description: Unit code used as the standard unit for this measurement family.
                      units:
                        type: object
                        description: |
                          Measurement units for this family with their conversion operations.
                        additionalProperties:
                          type: object
                          properties:
                            code:
                              type: string
                              description: Measurement unit code.
                            labels:
                              type: object
                              description: Unit labels for each locale. The `localeCode` must be an existing and activated locale.
                              additionalProperties:
                                type: string
                                description: Unit label for the specified locale.
                              default: {}
                            convert_from_standard:
                              type: array
                              description: Calculation to convert the unit from the standard unit.
                              items:
                                type: object
                                properties:
                                  operator:
                                    type: string
                                    enum:
                                      - mul
                                      - div
                                      - add
                                      - sub
                                  value:
                                    type: string
                            symbol:
                              type: string
            examples:
              bulkUpsert:
                summary: Example of a bulk measurement family upsert
                value:
                  - 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_METER:
                        code: SQUARE_METER
                        labels:
                          en_US: Square meter
                          fr_FR: Mètre carré
                        convert_from_standard:
                          - operator: mul
                            value: '1'
                        symbol: m²
                  - code: WEIGHT
                    labels:
                      en_US: Weight
                      fr_FR: Poids
                    standard_unit_code: GRAM
                    units:
                      MILLIGRAM:
                        code: MILLIGRAM
                        labels:
                          en_US: Milligram
                          fr_FR: Milligramme
                        convert_from_standard:
                          - operator: mul
                            value: '0.001'
                        symbol: mg
                      GRAM:
                        code: GRAM
                        labels:
                          en_US: Gram
                          fr_FR: Gramme
                        convert_from_standard:
                          - operator: mul
                            value: '1'
                        symbol: g
                      KILOGRAM:
                        code: KILOGRAM
                        labels:
                          en_US: Kilogram
                          fr_FR: Kilogramme
                        convert_from_standard:
                          - operator: mul
                            value: '1000'
                        symbol: kg
      responses:
        '200':
          description: OK. Returns a JSON array containing the status of each update or creation.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    code:
                      type: string
                      description: Resource code.
                    status_code:
                      type: integer
                      description: HTTP status code. See the documentation for client errors to understand the meaning of each code.
                    message:
                      type: string
                      description: Message explaining the error, if any.
                    errors:
                      type: array
                      description: List of errors for a given resource.
                      items:
                        type: object
                        properties:
                          property:
                            type: string
                          message:
                            type: string
              examples:
                bulkStatus:
                  summary: Example of a bulk status response
                  value:
                    - 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
        '401':
          description: |
            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.
          content: *ref_3
        '413':
          description: |
            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.
          content: *ref_34
        '415':
          description: |
            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.
          content: *ref_6
      security:
        - bearerToken: []
  /api/rest/v1/reference-entities:
    get:
      summary: Get list of reference entities
      operationId: get_reference_entities
      description: |
        This endpoint allows you to get a list of reference entities. Reference
        entities are paginated.
      tags:
        - Reference entity
      security:
        - bearerToken: []
      parameters:
        - in: query
          name: search_after
          description: |
            Cursor when using the `search_after` pagination method type.
            Should never be set manually, see [Pagination](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_9
          example: qaXbcde
      responses:
        '200':
          description: Return reference entities paginated
          content:
            application/json:
              schema:
                title: Reference Entities
                type: object
                allOf:
                  - type: object
                    properties:
                      _links:
                        type: object
                        properties:
                          self:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the current page of resources
                          first:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the first page of resources
                          next:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the next page of resources
                  - properties:
                      _embedded:
                        type: object
                        properties:
                          items:
                            type: array
                            items:
                              type: object
                              allOf:
                                - type: object
                                  properties:
                                    _links:
                                      type: object
                                      properties:
                                        self:
                                          type: object
                                          properties:
                                            href:
                                              type: string
                                              description: URI of the resource
                                        image_download:
                                          type: object
                                          properties:
                                            href:
                                              type: string
                                              description: |
                                                URI to download the binaries of the
                                                reference entity image file
                                - type: object
                                  required:
                                    - code
                                  properties:
                                    code:
                                      type: string
                                      description: Reference entity code
                                      x-immutable: true
                                    labels:
                                      type: object
                                      description: Reference entity labels for each locale
                                      x-validation-rules: |
                                        The `localeCode` is the code of an existing
                                        and activated locale
                                      default: {}
                                      additionalProperties:
                                        type: string
                                    image:
                                      type:
                                        - string
                                        - 'null'
                                      description: Code of the reference entity image
                                      default: null
              examples:
                success:
                  summary: Paginated reference entities list
                  value:
                    _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=2x055w%3D%3D
                    _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
        '401':
          description: |
            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.
          content: *ref_3
        '406':
          description: |
            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.
          content: *ref_13
  /api/rest/v1/reference-entities/{code}:
    get:
      summary: Get a reference entity
      operationId: get_reference_entities__code_
      tags:
        - Reference entity
      security:
        - bearerToken: []
      description: This endpoint allows you to get the information about a given reference entity.
      parameters:
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
      responses:
        '200':
          description: Returns the content of the reference entity in JSON format.
          content:
            application/json:
              schema:
                type: object
                allOf:
                  - type: object
                    properties:
                      _links:
                        type: object
                        readOnly: true
                        properties:
                          image_download:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI to download the binaries of the reference entity image file
                  - type: object
                    required:
                      - code
                    properties:
                      code:
                        type: string
                        description: Reference entity code
                        x-immutable: true
                      labels:
                        type: object
                        description: Reference entity labels for each locale
                        x-validation-rules: |
                          The `localeCode` is the code of an existing and activated locale
                        default: {}
                        additionalProperties:
                          type: string
                      image:
                        type:
                          - string
                          - 'null'
                        description: Code of the reference entity image
                        default: null
              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
        '401':
          description: |
            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.
          content: *ref_3
        '404':
          description: |
            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.
          content: *ref_25
        '406':
          description: |
            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.
          content: *ref_13
    patch:
      summary: Update/create a reference entity
      description: |
        This endpoint allows you to update a given reference entity. Note that if
        the reference entity does not already exist, it creates it.
      operationId: patch_reference_entity__code_
      tags:
        - Reference entity
      security:
        - bearerToken: []
      parameters:
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
      requestBody:
        description: Payload to create or update a reference entity
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - code
              properties:
                code:
                  type: string
                  description: Reference entity code
                  x-immutable: true
                  example: brands
                labels:
                  type: object
                  description: Reference entity labels for each locale. The `localeCode` is the code of an existing and activated locale
                  default: {}
                  additionalProperties:
                    type: string
                    description: Reference entity label for the locale
                  example:
                    en_US: Brands
                    fr_FR: Marques
                image:
                  type:
                    - string
                    - 'null'
                  description: Code of the reference entity image
                  example: 0/2/d/6/54d81dc888ba1501a8g765f3ab5797569f3bv756c_ref_img.png
                  default: null
            examples:
              default:
                summary: Create or update a reference entity
                value:
                  code: brands
                  labels:
                    en_US: Brands
                    fr_FR: Marques
                  image: 0/2/d/6/54d81dc888ba1501a8g765f3ab5797569f3bv756c_ref_img.png
      responses:
        '201':
          description: |
            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: *ref_23
        '204':
          description: |
            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: *ref_24
        '401':
          description: |
            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.
          content: *ref_3
        '415':
          description: |
            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.
          content: *ref_6
        '422':
          description: Unprocessable entity.
          content:
            application/json:
              schema:
                type: object
                required:
                  - code
                  - message
                properties:
                  code:
                    type: integer
                    description: HTTP status code
                    example: 422
                  message:
                    type: string
                    description: Description of the validation error
                    example: The code of the reference entity provided in the URI must be the same as the one provided in the request body.
              examples:
                code-mismatch:
                  summary: Code mismatch between URI and request body
                  value:
                    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.
                image-not-found:
                  summary: Provided image code does not exist
                  value:
                    code: 422
                    message: The image "0/2/d/6/54d81dc888ba1501a8g765f3ab5797569f3bv756c_ref_img.png" was not found
  /api/rest/v1/reference-entities/{reference_entity_code}/attributes:
    get:
      summary: Get the list of attributes of a given reference entity
      operationId: get_reference_entities__code__attributes
      description: This endpoint allows you to get the list of attributes of a given reference entity.
      tags:
        - Reference entity attribute
      security:
        - bearerToken: []
      parameters:
        - in: path
          name: reference_entity_code
          description: Code of the reference entity
          required: true
          schema: &ref_69
            type: string
          example: brands
      responses:
        '200':
          description: Return the attributes of the given reference entity
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  required: &ref_70
                    - code
                    - type
                  properties: &ref_71
                    code:
                      type: string
                      description: Attribute code
                      example: description
                    labels:
                      type: object
                      description: Attribute labels per locale
                      example:
                        en_US: The description
                        fr_FR: La description
                      additionalProperties:
                        type: string
                    type:
                      type: string
                      description: Attribute type. See [type](https://api.akeneo.com/concepts/reference-entities.html#reference-entity-attribute) section for more details.
                      enum:
                        - text
                        - image
                        - number
                        - single_option
                        - multiple_options
                        - reference_entity_single_link
                        - reference_entity_multiple_links
                        - asset_collection
                      example: text
                    value_per_locale:
                      type: boolean
                      description: Whether the attribute is localizable, i.e. can have one value by locale
                      default: false
                      example: true
                    value_per_channel:
                      type: boolean
                      description: Whether the attribute is scopable, i.e. can have one value by channel
                      default: false
                      example: false
                    is_required_for_completeness:
                      type: boolean
                      description: Whether the attribute should be part of the record's completeness calculation
                      default: false
                      example: true
                    max_characters:
                      type:
                        - integer
                        - 'null'
                      description: Maximum number of characters allowed for the value of the attribute when the attribute type is `text`.
                      example: 255
                    is_textarea:
                      type: boolean
                      description: Whether the UI should display a text area instead of a simple field when the attribute type is `text`.
                      default: false
                      example: true
                    is_rich_text_editor:
                      type: boolean
                      description: |
                        Whether the UI should display a rich text editor instead of a simple text area when the attribute type is `text`.
                        Required when the property `is_textarea` is equal to `true`.
                        Only for `text` attribute type.
                      default: false
                      example: true
                    validation_rule:
                      type: string
                      description: Validation rule type used to validate the attribute value when the attribute type is `text`.
                      enum:
                        - email
                        - url
                        - regexp
                        - none
                      default: none
                      example: none
                    validation_regexp:
                      type:
                        - string
                        - 'null'
                      description: |
                        Regexp expression used to validate the attribute value when the attribute type is `text`.
                        Required when the property `validation_rule` is equal to `regexp`.
                        Only for `text` attribute type.
                      example: null
                    allowed_extensions:
                      type: array
                      description: |
                        Extensions allowed when the attribute type is `image`.
                        Only for `image` attribute type.
                      items:
                        type: string
                      default: []
                      example:
                        - png
                        - jpg
                    max_file_size:
                      type:
                        - string
                        - 'null'
                      description: |
                        Max file size in MB when the attribute type is `image`.
                        Only for `image` attribute type.
                      example: '5'
                    reference_entity_code:
                      type:
                        - string
                        - 'null'
                      description: Code of the linked reference entity when the attribute type is `reference_entity_single_link` or `reference_entity_multiple_links`
                      example: color
                    asset_family_identifier:
                      type:
                        - string
                        - 'null'
                      description: Code of the linked asset family when the attribute type is `asset_collection`
                      example: youtube
                    decimals_allowed:
                      type: boolean
                      description: Whether decimals are allowed when the attribute type is `number`
                      default: false
                      example: false
                    min_value:
                      type:
                        - string
                        - 'null'
                      description: Minimum value allowed when the attribute type is `number`
                      example: '1800'
                    max_value:
                      type:
                        - string
                        - 'null'
                      description: Maximum value allowed when the attribute type is `number`
                      example: '2100'
              examples:
                default:
                  summary: Example reference entity attributes
                  value:
                    - 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'
        '401':
          description: |
            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.
          content: *ref_3
        '406':
          description: |
            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.
          content: *ref_13
  /api/rest/v1/reference-entities/{reference_entity_code}/attributes/{code}:
    get:
      summary: Get an attribute of a given reference entity
      operationId: get_reference_entity_attributes__code_
      tags:
        - Reference entity attribute
      security:
        - bearerToken: []
      description: This endpoint allows you to get the information about a given attribute for a given reference entity.
      parameters:
        - in: path
          name: reference_entity_code
          description: Code of the reference entity
          required: true
          schema: *ref_69
          example: brands
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
      responses:
        '200':
          description: Returns the content of the reference entity attribute in JSON format
          content:
            application/json:
              schema:
                type: object
                required: *ref_70
                properties: *ref_71
              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
        '401':
          description: |
            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.
          content: *ref_3
        '404':
          description: |
            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.
          content: *ref_25
        '406':
          description: |
            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.
          content: *ref_13
    patch:
      summary: Update/create an attribute of a given reference entity
      security:
        - bearerToken: []
      operationId: patch_reference_entity_attributes__code_
      tags:
        - Reference entity attribute
      description: |
        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.
      parameters:
        - in: path
          name: reference_entity_code
          description: Code of the reference entity
          required: true
          schema: *ref_69
          example: brands
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
      requestBody:
        description: Payload to update or create a reference entity attribute.
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                code:
                  type: string
                  description: Attribute code
                  example: description
                labels:
                  type: object
                  description: Attribute labels per locale
                  additionalProperties:
                    type: string
                  example:
                    en_US: Description
                    fr_FR: Description
                type:
                  type: string
                  description: Attribute type
                  enum:
                    - text
                    - image
                    - number
                    - single_option
                    - multiple_options
                    - reference_entity_single_link
                    - reference_entity_multiple_links
                    - asset_collection
                  example: text
                is_required_for_completeness:
                  type: boolean
                  description: Whether the attribute should be part of completeness calculation
                  default: false
                  example: true
                max_characters:
                  type:
                    - integer
                    - 'null'
                  description: Max characters allowed (for `text`)
                  example: 255
                is_textarea:
                  type: boolean
                  description: Display as textarea (for `text`)
                  default: false
                  example: true
                is_rich_text_editor:
                  type: boolean
                  description: Display rich text editor (for `text`)
                  default: false
                  example: true
                validation_rule:
                  type: string
                  description: Validation rule for `text`
                  enum:
                    - email
                    - url
                    - regexp
                    - none
                  default: none
                  example: none
                validation_regexp:
                  type:
                    - string
                    - 'null'
                  description: Validation regexp (if rule = regexp)
                  example: null
                allowed_extensions:
                  type: array
                  description: Allowed file extensions (for `image`)
                  items:
                    type: string
                  default: []
                  example:
                    - png
                    - jpg
                max_file_size:
                  type:
                    - string
                    - 'null'
                  description: Max file size in MB (for `image`)
                  example: '5'
                decimals_allowed:
                  type: boolean
                  description: Allow decimals (for `number`)
                  default: false
                  example: false
                min_value:
                  type:
                    - string
                    - 'null'
                  description: Minimum value (for `number`)
                  example: '1800'
                max_value:
                  type:
                    - string
                    - 'null'
                  description: Maximum value (for `number`)
                  example: '2100'
            examples:
              update:
                summary: Update an existing attribute
                value:
                  code: description
                  labels:
                    en_US: A new description
                    fr_FR: Une nouvelle description
                  type: text
                  is_required_for_completeness: true
              create:
                summary: Create a new attribute
                value:
                  code: a_new_attribute
                  value_per_locale: false
                  value_per_channel: false
                  type: text
                  labels:
                    en_US: i am new
                    fr_FR: je suis nouveau
      responses:
        '201':
          description: |
            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: *ref_23
        '204':
          description: |
            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: *ref_24
        '400':
          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.
          content: *ref_33
        '401':
          description: |
            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.
          content: *ref_3
        '415':
          description: |
            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.
          content: *ref_6
        '422':
          description: Unprocessable entity
          x-details: The validation of the entity given in the body of the request failed
          content: *ref_5
  /api/rest/v1/reference-entities/{reference_entity_code}/attributes/{attribute_code}/options:
    get:
      summary: Get a list of attribute options of a given attribute for a given reference entity
      operationId: get_reference_entity_attributes__attribute_code__options
      description: This endpoint allows you to get a list of attribute options for a given reference entity.
      tags:
        - Reference entity attribute option
      security:
        - bearerToken: []
      parameters:
        - in: path
          name: reference_entity_code
          description: Code of the reference entity
          required: true
          schema: *ref_69
          example: brands
        - in: path
          name: attribute_code
          description: Code of the attribute
          required: true
          schema: *ref_51
          example: color
      responses:
        '200':
          description: Return the options of the given attributes of the given reference entity
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  required:
                    - code
                  properties:
                    code:
                      type: string
                      description: Attribute's option code
                    labels:
                      type: object
                      description: Attribute labels for each locale. The `localeCode` is the code of an existing and activated locale.
                      default: {}
                      additionalProperties:
                        type: string
              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
        '401':
          description: |
            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.
          content: *ref_3
        '404':
          description: The attribute does not support options.
          content:
            application/json:
              schema:
                type: object
                required:
                  - code
                  - message
                properties:
                  code:
                    type: integer
                    example: 404
                  message:
                    type: string
                    example: Attribute "description" does not support options.
        '406':
          description: |
            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.
          content: *ref_13
  /api/rest/v1/reference-entities/{reference_entity_code}/attributes/{attribute_code}/options/{code}:
    get:
      summary: Get an attribute option for a given attribute of a given reference entity
      operationId: get_reference_entity_attributes__attribute_code__options__code_
      description: This endpoint allows you to get the information about a given attribute option.
      tags:
        - Reference entity attribute option
      security:
        - bearerToken: []
      parameters:
        - in: path
          name: reference_entity_code
          description: Code of the reference entity
          required: true
          schema: *ref_69
          example: brands
        - in: path
          name: attribute_code
          description: Code of the attribute
          required: true
          schema: *ref_51
          example: color
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
      responses:
        '200':
          description: Returns the content of the reference entity attribute option in JSON format
          content:
            application/json:
              schema:
                type: object
                required:
                  - code
                properties:
                  code:
                    type: string
                    description: Attribute's option code
                    example: global_nomad
                  labels:
                    type: object
                    description: Attribute labels for each locale
                    x-validation-rules: |
                      The `localeCode` is the code of an existing and activated
                      locale
                    default: {}
                    properties:
                      localeCode:
                        type: string
                        description: Attribute label for the locale `localeCode`
                    example:
                      en_US: Global Nomad
                      fr_FR: Nomade du Monde
                example:
                  code: global_nomad
                  labels:
                    en_US: Global Nomad
                    fr_FR: Nomade du Monde
        '401':
          description: |
            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.
          content: *ref_3
        '404':
          description: |
            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.
          content: *ref_25
        '406':
          description: |
            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.
          content: *ref_13
    patch:
      summary: Update/create a reference entity attribute option
      security:
        - bearerToken: []
      operationId: patch_reference_entity_attributes__attribute_code__options__code_
      tags:
        - Reference entity attribute option
      description: |
        This endpoint allows you to update a given option for a given attribute and a given reference entity. 
        Learn more about [Update behavior](https://api.akeneo.com/documentation/update.html#update-behavior). 
        Note that if the option does not already exist for the given attribute of the given reference entity, it creates it.
      parameters:
        - in: path
          name: reference_entity_code
          description: Code of the reference entity
          required: true
          schema: *ref_69
          example: brands
        - in: path
          name: attribute_code
          description: Code of the attribute
          required: true
          schema: *ref_51
          example: color
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
      requestBody:
        description: JSON payload to create or update a reference entity attribute option.
        content:
          application/json:
            schema:
              type: object
              required:
                - code
              properties:
                code:
                  type: string
                  description: Attribute's option code
                  example: global_nomad
                labels:
                  type: object
                  description: |
                    Attribute labels for each locale.
                    The `localeCode` is the code of an existing and activated locale
                  default: {}
                  properties:
                    localeCode:
                      type: string
                      description: Attribute label for the locale `localeCode`
                  example:
                    en_US: Global Nomad
                    fr_FR: Nomade du Monde
              example:
                code: global_nomad
                labels:
                  en_US: Global Nomad
                  fr_FR: Nomade du Monde
        required: true
      responses:
        '201':
          description: |
            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: *ref_23
        '204':
          description: |
            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: *ref_24
        '401':
          description: |
            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.
          content: *ref_3
        '415':
          description: |
            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.
          content: *ref_6
        '422':
          description: |
            This response indicates that the validation of the entity given in the body of the request failed.
            It can occur when the data provided does not meet the required format or constraints defined by the API.
          content: *ref_46
  /api/rest/v1/reference-entities/{reference_entity_code}/records:
    get:
      summary: Get the list of the records of a reference entity
      operationId: get_reference_entity_records
      tags:
        - Reference entity record
      security:
        - bearerToken: []
      description: |
        This endpoint allows you to get a list of records of a given reference
        entity. Records are paginated and can be filtered.
      parameters:
        - name: search
          in: query
          description: |
            Filter records of the reference entity, for more details see the [Filters](https://api.akeneo.com/documentation/filter.html#filter-reference-entity-records)
          required: false
          schema:
            type: string
          examples:
            getRecordsByRecordCode:
              summary: Filter the records by their code
              value: '{"code":[{"operator":"IN","value":["code1","code2"]}]}'
            getRecordsByCompleteness:
              summary: Filter the records to get only the completed ones on a given channel for given locales
              value: '{"complete":{"operator":"=","value":true,"channel":"ecommerce","locales":["en_US"]}}'
            getRecordsByUpdatedDate:
              summary: Filter the records by their update date
              value: '{"updated":[{"operator":">","value":"2018-07-04T10:00:00+00:00"}]}'
        - name: channel
          in: query
          description: |
            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](https://api.akeneo.com/documentation/filter.html#record-values-by-channel) section.
          required: false
          schema:
            type: string
          example: ecommerce
        - name: locales
          in: query
          description: |
            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](https://api.akeneo.com/documentation/filter.html#record-values-by-locale) section.
          required: false
          schema:
            type: string
          example: en_US,fr_FR
        - in: path
          name: reference_entity_code
          description: Code of the reference entity
          required: true
          schema: *ref_69
          example: brands
        - in: query
          name: search_after
          description: |
            Cursor when using the `search_after` pagination method type.
            Should never be set manually, see [Pagination](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_9
          example: qaXbcde
      responses:
        '200':
          description: Return the records of the given reference entity paginated
          content:
            application/json:
              schema:
                type: object
                allOf:
                  - type: object
                    properties: *ref_36
                  - type: object
                    properties:
                      _links:
                        type: object
                        description: Pagination links
                        properties:
                          self:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the current page of resources
                                example: https://demo.akeneo.com/api/rest/v1/reference-entities/brands/records
                          first:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the first page of resources
                                example: https://demo.akeneo.com/api/rest/v1/reference-entities/brands/records
                          next:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the next page of resources
                                example: https://demo.akeneo.com/api/rest/v1/reference-entities/brands/records?search_after=2x088w%3D%3D
                properties:
                  _embedded:
                    type: object
                    properties:
                      items:
                        type: array
                        items:
                          allOf:
                            - type: object
                              required: &ref_72
                                - code
                              properties: &ref_73
                                code:
                                  type: string
                                  description: Code of the record
                                  example: kartell
                                values:
                                  type: object
                                  description: Record attribute values
                                  additionalProperties:
                                    type: array
                                    items:
                                      type: object
                                      required:
                                        - data
                                      properties:
                                        locale:
                                          description: Locale code of the value
                                          type:
                                            - string
                                            - 'null'
                                        channel:
                                          description: Channel code of the value
                                          type:
                                            - string
                                            - 'null'
                                        data:
                                          description: The actual data value
                                          oneOf:
                                            - type: string
                                            - type: array
                                              items:
                                                type: string
                                            - type: object
                                  example:
                                    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
                                    creation_year:
                                      - locale: null
                                        channel: null
                                        data: '1949'
                                created:
                                  type:
                                    - string
                                    - 'null'
                                  format: date-time
                                  readOnly: true
                                  example: '2021-01-01T01:23:34+00:00'
                                updated:
                                  type:
                                    - string
                                    - 'null'
                                  format: date-time
                                  readOnly: true
                                  example: '2021-02-03T23:45:59+00:00'
                            - type: object
                              properties:
                                _links:
                                  type: object
                                  properties:
                                    self:
                                      type: object
                                      properties:
                                        href:
                                          type: string
                                          description: URI of the resource
                                          example: https://demo.akeneo.com/api/rest/v1/reference-entities/brands/records/kartell
                    example:
                      items:
                        - code: kartell
                          values:
                            label:
                              - locale: en_US
                                channel: null
                                data: Kartell
                          _links:
                            self:
                              href: https://demo.akeneo.com/api/rest/v1/reference-entities/brands/records/kartell
              example:
                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'
        '401':
          description: |
            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.
          content: *ref_3
        '406':
          description: |
            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.
          content: *ref_13
    patch:
      summary: Update/create several reference entity records
      operationId: patch_reference_entity_records
      tags:
        - Reference entity record
      security:
        - bearerToken: []
      description: |
        This endpoint allows you to update and/or create several records of a reference entity.
        Learn more about [Update behavior](https://api.akeneo.com/documentation/update.html#update-behavior). 
        If a record with the specified code does not already exist, it will be created.
      parameters:
        - in: path
          name: reference_entity_code
          description: Code of the reference entity
          required: true
          schema: *ref_69
          example: brands
      requestBody:
        description: Payload containing one or more reference entity records to create or update.
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                required:
                  - code
                  - values
                properties:
                  code:
                    type: string
                    description: Code of the record
                  values:
                    type: object
                    description: Record attribute values
                    additionalProperties:
                      type: array
                      items:
                        type: object
                        required:
                          - data
                        properties:
                          locale:
                            type:
                              - string
                              - 'null'
                          channel:
                            type:
                              - string
                              - 'null'
                          data:
                            oneOf:
                              - type: string
                              - type: array
                                items:
                                  type: string
                  created:
                    type:
                      - string
                      - 'null'
                    format: date-time
                    readOnly: true
                  updated:
                    type:
                      - string
                      - 'null'
                    format: date-time
                    readOnly: true
            examples:
              update-records:
                summary: Update existing records label and description
                value:
                  - code: kartell
                    values:
                      label:
                        - locale: fr_FR
                          channel: null
                          data: Kartell, une marque emblématique de meubles design italiens.
                      description:
                        - locale: fr_FR
                          channel: null
                          data: An updated description
              create-records:
                summary: Create new records
                value:
                  - code: a_new_brand
                    values:
                      label:
                        - locale: en_US
                          channel: null
                          data: New Brand
                      description:
                        - locale: en_US
                          channel: null
                          data: A fresh brand newly onboarded to the catalog.
                      country:
                        - locale: null
                          channel: null
                          data: germany
                      creation_year:
                        - locale: null
                          channel: null
                          data: '2022'
      responses:
        '200':
          description: Returns an array with the result for each processed record.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    code:
                      type: string
                    status_code:
                      type: integer
                    message:
                      type: string
                    errors:
                      type: array
                      items:
                        type: object
                        properties:
                          property:
                            type: string
                          message:
                            type: string
              examples:
                success-with-errors:
                  summary: Mixed success and validation errors
                  value:
                    - 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'
        '401':
          description: |
            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.
          content: *ref_3
        '413':
          description: |
            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.
          content: *ref_34
        '415':
          description: |
            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.
          content: *ref_6
  /api/rest/v1/reference-entities/{reference_entity_code}/records/{code}:
    get:
      summary: Get a record of a given reference entity
      operationId: get_reference_entity_records__code_
      tags:
        - Reference entity record
      security:
        - bearerToken: []
      description: Retrieve a specific record of a reference entity.
      parameters:
        - in: path
          name: reference_entity_code
          description: Code of the reference entity
          required: true
          schema: *ref_69
          example: brands
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
      responses:
        '200':
          description: Record retrieved successfully
          content:
            application/json:
              schema:
                type: object
                required: *ref_72
                properties: *ref_73
              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
                  creation_year:
                    - locale: null
                      channel: null
                      data: '1949'
                created: '2021-01-01T01:23:34+00:00'
                updated: '2021-02-03T23:45:59+00:00'
        '401':
          description: |
            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.
          content: *ref_3
        '404':
          description: |
            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.
          content: *ref_25
        '406':
          description: |
            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.
          content: *ref_13
    patch:
      summary: Update or create a record of a given reference entity
      operationId: patch_reference_entity_records__code_
      tags:
        - Reference entity record
      security:
        - bearerToken: []
      description: |
        Update or create a record for a reference entity.
        [Update behavior](https://api.akeneo.com/documentation/update.html#patch-reference-entity-record-values)
      parameters:
        - in: path
          name: reference_entity_code
          description: Code of the reference entity
          required: true
          schema: *ref_69
          example: brands
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
      requestBody:
        description: Reference entity record to create or update.
        required: true
        content:
          application/json:
            schema:
              type: object
              required: *ref_72
              properties: *ref_73
      responses:
        '201':
          description: |
            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: *ref_23
        '204':
          description: |
            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: *ref_24
        '400':
          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.
          content: *ref_33
        '401':
          description: |
            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.
          content: *ref_3
        '415':
          description: |
            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.
          content: *ref_6
        '422':
          description: Unprocessable entity
          x-details: The validation of the entity given in the body of the request failed
          content: *ref_5
  /api/rest/v1/reference-entities-media-files:
    post:
      summary: Create a new media file for a reference entity or a record
      operationId: post_reference_entity_media_files
      description: |
        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.
      tags:
        - Reference entity media file
      security:
        - bearerToken: []
      requestBody:
        required: true
        description: Media file to upload
        content:
          multipart/form-data:
            schema:
              type: object
              required:
                - file
              properties:
                file:
                  type: string
                  format: binary
                  description: The media file to upload
                  example: ''
            examples:
              valid-image:
                summary: Upload a PNG image
                value:
                  file: ''
      responses:
        '201':
          description: |
            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:
              description: URI of the created resource
              schema:
                type: string
                example: https://demo.akeneo.com/api/rest/v1/reference-entities-media-files/3/c/d/6/3cd6a399c51507514d60560f76772bbabacb6564_SampleJPGImage_5mbmb.jpg
            asset-media-file-code:
              description: Code of the created asset media file
              schema:
                type: string
                example: 3/c/d/6/3cd6a399c51507514d60560f76772bbabacb6564_SampleJPGImage_5mbmb.jpg
        '401':
          description: |
            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.
          content: *ref_3
        '415':
          description: |
            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.
          content: *ref_6
        '422':
          description: Unprocessable entity. The file is invalid or missing.
          content:
            application/json:
              schema:
                type: object
                required:
                  - code
                  - message
                properties:
                  code:
                    type: integer
                    example: 422
                  message:
                    type: string
                    example: Property "file" is required.
              examples:
                missing-file:
                  summary: Missing file part
                  value:
                    code: 422
                    message: Property "file" is required.
  /api/rest/v1/reference-entities-media-files/{code}:
    get:
      summary: Download the media file associated to a reference entity or a record
      operationId: get_reference_entity_media_files__code
      description: |
        This endpoint allows you to download a given media file that is associated
        with a reference entity or a record.
      tags:
        - Reference entity media file
      security:
        - bearerToken: []
      parameters:
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
      responses:
        '200':
          description: Returns the binary of the media file
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
              examples:
                download-example:
                  summary: Binary download placeholder
                  description: A sample media file (e.g. image/png, PDF, etc.)
                  value: (binary content of the media file)
        '401':
          description: |
            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.
          content: *ref_3
        '404':
          description: |
            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.
          content: *ref_25
  /api/rest/v1/asset-families:
    get:
      summary: Get list of asset families
      security:
        - bearerToken: []
      operationId: get_asset_families
      description: |
        This endpoint allows you to get a list of asset families. Asset families are paginated.
      tags:
        - Asset family
      parameters:
        - in: query
          name: search_after
          description: |
            Cursor when using the `search_after` pagination method type.
            Should never be set manually, see [Pagination](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_9
          example: qaXbcde
      responses:
        '200':
          description: Return asset families paginated
          content:
            application/json:
              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=2x055w%3D%3D
                _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
                        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
              schema:
                title: Asset families
                type: object
                allOf:
                  - type: object
                    properties:
                      _links:
                        type: object
                        properties:
                          self:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the current page of resources
                          first:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the first page of resources
                          next:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the next page of resources
                  - properties:
                      _embedded:
                        type: object
                        properties:
                          items:
                            type: array
                            items:
                              type: object
                              allOf:
                                - type: object
                                  properties:
                                    _links:
                                      type: object
                                      properties:
                                        self:
                                          type: object
                                          properties:
                                            href:
                                              type: string
                                              description: URI of the resource
                                - type: object
                                  required: &ref_74
                                    - code
                                  properties: &ref_75
                                    code:
                                      type: string
                                      description: Asset family code
                                      readOnly: true
                                      example: model_pictures
                                    labels:
                                      type: object
                                      description: |
                                        Asset family labels for each locale.
                                        The `localeCode` must be the code of an existing and activated locale.
                                      default: {}
                                      properties:
                                        localeCode:
                                          type: string
                                          description: Asset family label for the locale `localeCode`
                                      example:
                                        en_US: Model pictures
                                        fr_FR: Photographies en pied
                                    attribute_as_main_media:
                                      type: string
                                      description: |
                                        Attribute code that is used as the main media of the asset family.
                                        It must be the code of an attribute that belongs to this family, and it must be a media file or a media link attribute type.
                                      default: First media file or media link attribute that was created
                                      example: main_image
                                    naming_convention:
                                      type: object
                                      description: |
                                        The naming convention run over the asset code or the main media filename upon each asset creation, in order to automatically set several values in asset attributes.
                                        To learn more and see the format of this property, take a look at [here](https://api.akeneo.com/concepts/asset-manager.html#focus-on-the-naming-convention).
                                        To know more about the validation of this property, take a look at our naming convention format.
                                      default: {}
                                      properties:
                                        source:
                                          type: object
                                          description: |
                                            The string on which the naming convention should be applied.
                                            More details [here](https://api.akeneo.com/concepts/asset-manager.html#the-source-string).
                                        pattern:
                                          type: string
                                          description: |
                                            The regular expression that should be applied on the source.
                                            More details [here](https://api.akeneo.com/concepts/asset-manager.html#the-split-pattern).
                                        abort_asset_creation_on_error:
                                          type: boolean
                                          description: |
                                            Whether the asset should be created if the naming convention failed to apply.
                                            More details [here](https://api.akeneo.com/concepts/asset-manager.html#abortion-on-error).
                                      example:
                                        source:
                                          property: code
                                        pattern: /(?P<product_ref>.*)-.*/
                                        abort_asset_creation_on_error: true
                                    product_link_rules:
                                      type: array
                                      description: |
                                        The rules that will be run after the asset creation, in order to automatically link the assets of this family to a set of products.
                                        To understand the format of this property, see [here](https://api.akeneo.com/concepts/asset-manager.html#focus-on-the-product-link-rule).
                                        To know more about the validation of this property, take a look at our product link rule format.
                                      default: []
                                      items:
                                        type: object
                                        properties:
                                          product_selections:
                                            type: array
                                            description: |
                                              The product selection to which the assets of the asset family to be automatically linked.
                                              More details [here](https://api.akeneo.com/concepts/asset-manager.html#product-selection).
                                            items:
                                              type: object
                                              required:
                                                - field
                                                - operator
                                                - value
                                              properties:
                                                field:
                                                  type: string
                                                operator:
                                                  type: string
                                                value:
                                                  type: string
                                                locale:
                                                  type:
                                                    - string
                                                    - 'null'
                                                  description: The locale code. Can be null if not applicable.
                                                channel:
                                                  type:
                                                    - string
                                                    - 'null'
                                                  description: The channel code. Can be null if not applicable.
                                          assign_assets_to:
                                            type: array
                                            description: |
                                              The product value in which your assets will be assigned.
                                              More details [here](https://api.akeneo.com/concepts/asset-manager.html#product-value-assignment).
                                            items:
                                              type: object
                                              required:
                                                - attribute
                                                - mode
                                              properties:
                                                attribute:
                                                  type: string
                                                locale:
                                                  type:
                                                    - string
                                                    - 'null'
                                                  description: The locale code. Can be null if not applicable.
                                                channel:
                                                  type:
                                                    - string
                                                    - 'null'
                                                  description: The channel code. Can be null if not applicable.
                                                mode:
                                                  type: string
                                      example:
                                        - product_selections:
                                            - field: sku
                                              operator: EQUALS
                                              value: '{{product_ref}}'
                                          assign_assets_to:
                                            - attribute: model_pictures
                                              mode: replace
                                    transformations:
                                      type: array
                                      description: |
                                        The transformations to perform on source files in order to generate new files into your asset attributes (only available since v4.0).
                                        To understand the format of this property, see [here](https://api.akeneo.com/concepts/asset-manager.html#focus-on-the-transformations).
                                        To know more about the validation of this property, take a look at our transformation format.
                                      x-from-version: '4.0'
                                      default: []
                                      items:
                                        type: object
                                        required:
                                          - label
                                          - target
                                          - source
                                          - operations
                                        properties:
                                          label:
                                            type: string
                                            description: The name of the transformation
                                          filename_suffix:
                                            type: string
                                            description: |
                                              The suffix that will be appended to the source filename to generate the target filename.
                                              More details [here](https://api.akeneo.com/concepts/asset-manager.html#target-filename).
                                          filename_prefix:
                                            type: string
                                            description: |
                                              The prefix that will be prepended to the source filename to generate the target filename.
                                              More details [here](https://api.akeneo.com/concepts/asset-manager.html#target-filename).
                                          source:
                                            type: object
                                            required:
                                              - attribute
                                              - channel
                                              - locale
                                            description: |
                                              The attribute value in which is stored the media file you want to use as the source file for your transformation.
                                              More details [here](https://api.akeneo.com/concepts/asset-manager.html#source-file).
                                            properties:
                                              attribute:
                                                type: string
                                              locale:
                                                type:
                                                  - string
                                                  - 'null'
                                                description: The locale code. Can be null if not applicable.
                                              channel:
                                                type:
                                                  - string
                                                  - 'null'
                                                description: The channel code. Can be null if not applicable.
                                          target:
                                            type: object
                                            required:
                                              - attribute
                                              - channel
                                              - locale
                                            description: |
                                              The attribute value in which the PIM will generate the new transformed file, aka the target file.
                                              More details [here](https://api.akeneo.com/concepts/asset-manager.html#target-file).
                                            properties:
                                              attribute:
                                                type: string
                                              locale:
                                                type:
                                                  - string
                                                  - 'null'
                                                description: The locale code. Can be null if not applicable.
                                              channel:
                                                type:
                                                  - string
                                                  - 'null'
                                                description: The channel code. Can be null if not applicable.
                                          operations:
                                            type: array
                                            description: |
                                              The transformations that should be applied to your source file to generate the target file.
                                              More details [here](https://api.akeneo.com/concepts/asset-manager.html#transformation-operations).
                                              Should contain at least one operation.
                                            items:
                                              type: object
                                              properties:
                                                type:
                                                  type: string
                                                parameters:
                                                  type: object
                                                  properties:
                                                    colorspace:
                                                      type: string
                                                    width:
                                                      type: integer
                                                    height:
                                                      type: integer
                                                    ratio:
                                                      type: integer
                                                    resolution-unit:
                                                      type: string
                                                    resolution-x:
                                                      type: integer
                                                    resolution-y:
                                                      type: integer
                                                    quality:
                                                      type: integer
                                      example:
                                        - 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:
                                      type: boolean
                                      description: |
                                        Share links are available/unavailable for media file attributes of all the assets in this family
                                      x-from-version: SaaS
                                      example: true
                                  example: &ref_76
                                    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
        '401':
          description: |
            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.
          content: *ref_3
        '406':
          description: |
            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.
          content: *ref_13
  /api/rest/v1/asset-families/{code}:
    get:
      summary: Get an asset family
      security:
        - bearerToken: []
      operationId: get_asset_family__code_
      tags:
        - Asset family
      description: This endpoint allows you to get the information about a given asset family.
      parameters:
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
      responses:
        '200':
          description: Returns the content of the asset family in JSON format.
          content:
            application/json:
              schema:
                type: object
                required: *ref_74
                properties: *ref_75
                example: *ref_76
        '401':
          description: |
            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.
          content: *ref_3
        '404':
          description: |
            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.
          content: *ref_25
        '406':
          description: |
            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.
          content: *ref_13
    patch:
      summary: Update/create an asset family
      security:
        - bearerToken: []
      operationId: patch_asset_family__code_
      tags:
        - Asset family
      description: |
        This endpoint allows you to update a given asset family. Note that if the
        asset family does not already exist, it creates it.
      parameters:
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
      requestBody:
        description: The asset family to be patched.
        content:
          application/json:
            schema:
              type: object
              required: *ref_74
              properties: *ref_75
              example: *ref_76
        required: true
      responses:
        '201':
          description: |
            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: *ref_23
        '204':
          description: |
            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: *ref_24
        '401':
          description: |
            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.
          content: *ref_3
        '415':
          description: |
            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.
          content: *ref_6
        '422':
          description: Unprocessable entity
          x-details: The validation of the entity given in the body of the request failed
          content: *ref_5
  /api/rest/v1/asset-families/{asset_family_code}/attributes:
    get:
      summary: Get the list of attributes of a given asset family
      security:
        - bearerToken: []
      operationId: get_asset_families__code__attributes
      description: |
        This endpoint allows you to get the list of attributes of a given asset
        family.
      tags:
        - Asset attribute
      parameters:
        - in: path
          name: asset_family_code
          description: Code of the asset family
          required: true
          schema: &ref_77
            type: string
          example: packshot
      responses:
        '200':
          description: Return the attributes of the given asset family
          content:
            application/json:
              schema:
                type: array
                items:
                  anyOf:
                    - type: object
                      required: &ref_78
                        - code
                        - type
                      properties: &ref_79
                        code:
                          type: string
                          description: Attribute code
                          x-immutable: true
                          example: model_is_wearing_size
                        labels:
                          type: object
                          description: Attribute labels for each locale
                          x-validation-rules: |
                            The `localeCode` is the code of an existing and activated
                            locale
                          default: {}
                          patternProperties:
                            ^[a-z]{2}_[A-Z]{2}$:
                              description: |
                                Attribute label for the locale `localeCode`. The
                                `localeCode` is the code of an existing and activated
                                locale.
                              type: string
                              example: description
                          example:
                            en_US: description
                            fr_FR: description
                        type:
                          type: string
                          description: |
                            Attribute type.
                            See [type](https://api.akeneo.com/concepts/asset-manager.html#asset-attribute) section for more details.
                          enum:
                            - text
                            - media_link
                            - number
                            - media_file
                            - single_option
                            - multiple_options
                            - boolean
                            - date
                            - record
                          x-immutable: true
                          example: text
                        value_per_locale:
                          type: boolean
                          description: |
                            Whether the attribute is localizable, i.e. can have one
                            value by locale
                          default: false
                          x-immutable: true
                          example: true
                        value_per_channel:
                          type: boolean
                          description: |
                            Whether the attribute is scopable, i.e. can have one value
                            by channel
                          default: false
                          x-immutable: true
                          example: false
                        is_required_for_completeness:
                          type: boolean
                          description: |
                            Whether the attribute should be part of the record's
                            completeness calculation
                          default: false
                          example: false
                        is_read_only:
                          type: boolean
                          description: |
                            Whether the attribute should be in read only mode only in
                            the UI, but you can still update it with the API
                          default: false
                          example: false
                        max_characters:
                          type:
                            - integer
                            - 'null'
                          description: |
                            Maximum number of characters allowed for the value of the
                            attribute when the attribute type is `text`
                          x-warning: Only for `text` attribute type
                          example: 2
                        is_textarea:
                          type: boolean
                          description: |
                            Whether the UI should display a text area instead of a
                            simple field when the attribute type is `text`
                          default: false
                          x-warning: Only for `text` attribute type
                          example: false
                        is_rich_text_editor:
                          type: boolean
                          description: |
                            Whether the UI should display a rich text editor instead of
                            a simple text area when the attribute type is `text`
                          x-validation-rules: Required when the property `is_textarea` is equal to `true`
                          x-warning: Only for `text` attribute type
                          example: false
                        validation_rule:
                          type: string
                          description: |
                            Validation rule type used to validate the attribute value
                            when the attribute type is `text`
                          default: none
                          x-warning: Only for `text` attribute type
                          enum:
                            - email
                            - url
                            - regexp
                            - none
                          example: none
                        validation_regexp:
                          type:
                            - string
                            - 'null'
                          description: |
                            Regexp expression used to validate the attribute value when
                            the attribute type is `text`
                          default: null
                          x-validation-rules: |
                            Required when the property `validation_rule` is equal to
                            `regexp`
                          x-warning: Only for `text` attribute type
                          example: null
                        allowed_extensions:
                          type: array
                          description: Extensions allowed when the attribute type is `media_file`
                          default: []
                          x-warning: Only for `media_file` attribute type
                          items:
                            type: string
                          example: []
                        max_file_size:
                          type:
                            - string
                            - 'null'
                          description: Max file size in MB when the attribute type is `media_file`
                          default: null
                          x-warning: Only for `media_file` attribute type
                          example: null
                        decimals_allowed:
                          type: boolean
                          description: |
                            Whether decimals are allowed when the attribute type is
                            `number`
                          default: false
                          x-warning: Only for `number` attribute type
                          example: false
                        min_value:
                          type:
                            - string
                            - 'null'
                          description: Minimum value allowed when the attribute type is `number`
                          default: null
                          x-validation-rules: The minimum value must be lower than the maximum value
                          x-warning: Only for `number` attribute type
                          example: null
                        max_value:
                          type:
                            - string
                            - 'null'
                          description: Maximum value allowed when the attribute type is `number`
                          default: null
                          x-validation-rules: The maximum value must be greater than the minimum value
                          x-warning: Only for `number` attribute type
                          example: null
                        media_type:
                          type: string
                          description: |
                            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.
                          enum:
                            - image
                            - pdf
                            - youtube
                            - vimeo
                            - other
                          x-warning: |
                            Only required for `media_link` and `media_file` attribute
                            types
                          example: image
                        prefix:
                          type:
                            - string
                            - 'null'
                          description: |
                            Prefix of the `media_link` attribute type. The common url
                            root that prefixes the link to the media
                          default: null
                          x-warning: Only for `media_link` attribute type
                          example: null
                        suffix:
                          type:
                            - string
                            - 'null'
                          description: |
                            Suffix of the `media_link` attribute type. The common url
                            suffix for the media
                          default: null
                          x-warning: Only for `media_link` attribute type
                          example: null
                        reference_entity:
                          type:
                            - string
                            - 'null'
                          description: |
                            Reference entity code for the `record` attribute type (see [Reference entity](https://api.akeneo.com/api-reference.html#Referenceentity)).
                          default: null
                          x-warning: Only for `record` attribute type
                          x-from-version: SaaS
                          example: null
                      example: &ref_80
                        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
              examples:
                example:
                  summary: Example of attributes of an asset family
                  value:
                    - 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
        '401':
          description: |
            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.
          content: *ref_3
        '406':
          description: |
            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.
          content: *ref_13
  /api/rest/v1/asset-families/{asset_family_code}/attributes/{code}:
    get:
      summary: Get an attribute of a given asset family
      security:
        - bearerToken: []
      operationId: get_asset_family_attributes__code_
      tags:
        - Asset attribute
      description: |
        This endpoint allows you to get the information about a given attribute for
        a given asset family.
      parameters:
        - in: path
          name: asset_family_code
          description: Code of the asset family
          required: true
          schema: *ref_77
          example: packshot
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
      responses:
        '200':
          description: Returns the content of the asset attribute in JSON format
          content:
            application/json:
              schema:
                type: object
                required: *ref_78
                properties: *ref_79
                example: *ref_80
              examples:
                example:
                  summary: Example of asset family attribute
                  value:
                    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
        '401':
          description: |
            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.
          content: *ref_3
        '404':
          description: |
            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.
          content: *ref_25
        '406':
          description: |
            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.
          content: *ref_13
    patch:
      summary: Update/create an attribute of a given asset family
      security:
        - bearerToken: []
      operationId: patch_asset_family_attributes__code_
      tags:
        - Asset attribute
      description: |
        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.
      parameters:
        - in: path
          name: asset_family_code
          description: Code of the asset family
          required: true
          schema: *ref_77
          example: packshot
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
      requestBody:
        description: Body of the request containing the attribute to create or update
        content:
          application/json:
            schema:
              type: object
              required: *ref_78
              properties: *ref_79
              example: *ref_80
        required: true
      responses:
        '201':
          description: |
            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: *ref_23
        '204':
          description: |
            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: *ref_24
        '401':
          description: |
            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.
          content: *ref_3
        '415':
          description: |
            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.
          content: *ref_6
        '422':
          description: Unprocessable entity
          x-details: The validation of the entity given in the body of the request failed
          content: *ref_5
  /api/rest/v1/asset-families/{asset_family_code}/attributes/{attribute_code}/options:
    get:
      summary: |
        Get a list of attribute options of a given attribute for a given asset
        family
      security:
        - bearerToken: []
      operationId: get_asset_family_attributes__attribute_code__options
      description: |
        This endpoint allows you to get a list of attribute options for a given
        asset family.
      tags:
        - Asset attribute option
      parameters:
        - in: path
          name: asset_family_code
          description: Code of the asset family
          required: true
          schema: *ref_77
          example: packshot
        - in: path
          name: attribute_code
          description: Code of the attribute
          required: true
          schema: *ref_51
          example: color
      responses:
        '200':
          description: Return the options of the given attribute of the given asset family
          x-no-entity: true
          x-examples:
            - 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
          content:
            application/json:
              schema:
                type: array
                items:
                  anyOf:
                    - type: object
                      required: &ref_81
                        - code
                      properties: &ref_82
                        code:
                          type: string
                          description: Attribute's option code
                          x-immutable: true
                          example: small
                        labels:
                          type: object
                          description: Attribute option labels for each locale
                          x-validation-rules: |
                            The `localeCode` is the code of an existing and activated
                            locale
                          default: {}
                          patternProperties:
                            ^[a-z]{2}_[A-Z]{2}$:
                              description: |
                                Attribute label for the locale `localeCode`. The
                                `localeCode` is the code of an existing and activated
                                locale.
                              type: string
                              example: description
                          example:
                            en_US: s
                            fr_FR: s
                      example: &ref_83
                        code: small
                        labels:
                          en_US: S
                          fr_FR: S
              examples:
                example:
                  summary: Example of asset family attribute options
                  value:
                    - 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
        '401':
          description: |
            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.
          content: *ref_3
        '406':
          description: |
            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.
          content: *ref_13
  /api/rest/v1/asset-families/{asset_family_code}/attributes/{attribute_code}/options/{code}:
    get:
      summary: Get an attribute option for a given attribute of a given asset family
      security:
        - bearerToken: []
      operationId: get_asset_attributes__attribute_code__options__code_
      description: |
        This endpoint allows you to get the information about a given asset
        attribute option.
      tags:
        - Asset attribute option
      parameters:
        - in: path
          name: asset_family_code
          description: Code of the asset family
          required: true
          schema: *ref_77
          example: packshot
        - in: path
          name: attribute_code
          description: Code of the attribute
          required: true
          schema: *ref_51
          example: color
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
      responses:
        '200':
          description: Returns the content of the asset attribute option in JSON format
          content:
            application/json:
              schema:
                type: object
                required: *ref_81
                properties: *ref_82
                example: *ref_83
              examples:
                example:
                  summary: Example of asset family attribute option
                  value:
                    code: unique_size
                    labels:
                      en_US: Unique size
                      fr_FR: Taille unique
        '401':
          description: |
            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.
          content: *ref_3
        '404':
          description: |
            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.
          content: *ref_25
        '406':
          description: |
            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.
          content: *ref_13
    patch:
      summary: Update/create an asset attribute option for a given asset family
      security:
        - bearerToken: []
      operationId: patch_asset_attributes__attribute_code__options__code_
      tags:
        - Asset attribute option
      description: |
        This endpoint allows you to update a given option for a given attribute and a given asset family.
        Learn more about the [Update behavior](https://api.akeneo.com/documentation/update.html#update-behavior).
        Note that if the option does not already exist for the given attribute of the given asset family, it creates it.
      parameters:
        - in: path
          name: asset_family_code
          description: Code of the asset family
          required: true
          schema: *ref_77
          example: packshot
        - in: path
          name: attribute_code
          description: Code of the attribute
          required: true
          schema: *ref_51
          example: color
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
      requestBody:
        description: Body of the request containing the asset family attribute option to create or update
        content:
          application/json:
            schema:
              type: object
              required: *ref_81
              properties: *ref_82
              example: *ref_83
            examples:
              example:
                summary: Example of asset family attribute option to create or update
                value:
                  code: unique_size
                  labels:
                    en_US: Unique size
                    fr_FR: Taille unique
        required: true
      responses:
        '201':
          description: |
            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: *ref_23
        '204':
          description: |
            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: *ref_24
        '401':
          description: |
            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.
          content: *ref_3
        '415':
          description: |
            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.
          content: *ref_6
        '422':
          description: Unprocessable entity
          x-details: The validation of the entity given in the body of the request failed
          content: *ref_5
  /api/rest/v1/asset-media-files:
    post:
      summary: Create a new media file for an asset
      security:
        - bearerToken: []
      operationId: post_asset_media_files
      description: |
        This endpoint allows you to create a new media file and associate it to a
        media file attribute value of an asset.
      tags:
        - Asset media file
      requestBody:
        description: |
          The media file to be uploaded. The file must be a valid media type
          (e.g., image, video, audio) and should not exceed the maximum allowed size.
          The file will be associated with an asset's media file attribute value.
        required: true
        content:
          multipart/form-data:
            schema:
              required:
                - file
              properties:
                file:
                  type: string
                  description: The binary of the media file
                  format: binary
                  example: ''
            examples:
              example:
                summary: Example media file upload
                value: ''
      responses:
        '201':
          description: |
            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:
              description: URI of the created resource
              schema:
                type: string
                example: https://demo.akeneo.com/api/rest/v1/asset-media-files/3/c/d/6/3cd6a399c51507514d60560f76772bbabacb6564_SampleJPGImage_5mbmb.jpg
            asset-media-file-code:
              description: Code of the created asset media file
              schema:
                type: string
                example: 3/c/d/6/3cd6a399c51507514d60560f76772bbabacb6564_SampleJPGImage_5mbmb.jpg
        '401':
          description: |
            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.
          content: *ref_3
        '415':
          description: |
            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.
          content: *ref_6
        '422':
          description: Unprocessable entity
          x-details: The validation of the entity given in the body of the request failed
          content: *ref_5
  /api/rest/v1/asset-media-files/{code}:
    get:
      summary: Download the media file associated to an asset
      security:
        - bearerToken: []
      operationId: get_asset_media_files__code
      description: |
        This endpoint allows you to download a given media file that is associated
        with an asset.
      tags:
        - Asset media file
      parameters:
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
      responses:
        '200':
          description: Returns the binary of the media file
          x-content-type: Mime-type of the media file
        '401':
          description: |
            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.
          content: *ref_3
        '404':
          description: |
            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.
          content: *ref_25
  /api/rest/v1/asset-families/{asset_family_code}/assets:
    get:
      summary: Get the list of the assets of a given asset family
      security:
        - bearerToken: []
      operationId: get_assets
      tags:
        - Asset
      description: |
        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.
      parameters:
        - name: search
          in: query
          description: |
            Filter assets,
            for more details see the [Asset filters](https://api.akeneo.com/documentation/filter.html#filter-assets) section.
          required: false
          schema:
            type: string
          examples:
            getAssetsByAssetCode:
              summary: Filter the assets by their code
              value: '{"code":[{"operator":"IN","value":["code1","code2"]}]}'
            getAssetsByUpdatedDate:
              summary: Filter the assets by their update date
              value: '{"updated":[{"operator":">","value":"2018-07-04T10:00:00Z"}]}'
            getAssetsUpdatedOverPeriod:
              summary: Filter the assets that were updated over a period of time
              value: '{"updated":[{"operator":"NOT BETWEEN","value":["2018-07-04T10:00:00Z","2018-08-04T10:00:00Z"]}]}'
            getAssetsUpdatedSinceXDays:
              summary: Filter the assets that were updated since X days
              value: '{"updated":[{"operator":"SINCE LAST N DAYS","value":4}]}'
        - name: channel
          in: query
          description: |
            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](https://api.akeneo.com/documentation/filter.html#asset-values-by-channel) section.
          required: false
          schema:
            type: string
          example: ecommerce
        - name: locales
          in: query
          description: |
            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](https://api.akeneo.com/documentation/filter.html#asset-values-by-locale) section.
          required: false
          schema:
            type: string
          example: en_US,fr_FR
        - in: path
          name: asset_family_code
          description: Code of the asset family
          required: true
          schema: *ref_77
          example: packshot
        - in: query
          name: search_after
          description: |
            Cursor when using the `search_after` pagination method type.
            Should never be set manually, see [Pagination](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_9
          example: qaXbcde
      responses:
        '200':
          description: Return the assets of the given asset family paginated
          content:
            application/json:
              schema:
                title: Asset
                type: object
                allOf:
                  - type: object
                    properties: *ref_36
                properties:
                  _embedded:
                    type: object
                    properties:
                      _items:
                        type: array
                        items:
                          type: object
                          allOf:
                            - type: object
                              properties:
                                _links:
                                  type: object
                                  properties:
                                    self:
                                      type: object
                                      properties:
                                        href:
                                          type: string
                                          description: URI of the resource
                            - type: object
                              required: &ref_84
                                - code
                              properties: &ref_85
                                code:
                                  type: string
                                  description: Code of the asset
                                  x-immutable: true
                                  example: sku_54628_picture1
                                values:
                                  type: object
                                  description: |
                                    Asset attributes values,
                                    see the [Focus on the asset values](https://api.akeneo.com/concepts/asset-manager.html#focus-on-the-asset-values) section for more details.
                                  x-validation-rules: Validation rules detailed in Asset attribute values section
                                  patternProperties:
                                    ^\w+$:
                                      type: array
                                      items:
                                        type: object
                                        properties:
                                          channel:
                                            type:
                                              - string
                                              - 'null'
                                            description: Channel code of the asset attribute value
                                          locale:
                                            type:
                                              - string
                                              - 'null'
                                            description: Locale code of the asset attribute value
                                          data:
                                            oneOf:
                                              - type: string
                                              - type: array
                                                items:
                                                  type: string
                                              - type: boolean
                                            description: |
                                              Asset attribute value.
                                              See [the `data` format](https://api.akeneo.com/concepts/asset-manager.html#the-data-format) section for more details.
                                          _links:
                                            type: object
                                            description: |
                                              Related links for the `media file` attribute values.
                                              See [the `_links` format](https://api.akeneo.com/concepts/asset-manager.html#the-_links-format) section for more details.
                                            x-validation-rules: |
                                              The share link is returned when asset sharing is
                                              enabled
                                          linked_data:
                                            type: object
                                            description: |
                                              Linked data for the `media link` attribute values.
                                              See [the `linked_data` format](https://api.akeneo.com/concepts/asset-manager.html#the-linked_data-format) section for more details.
                                            x-from-version: SaaS
                                        required:
                                          - locale
                                          - channel
                                          - data
                                  example:
                                    media_file:
                                      - locale: en_US
                                        channel: ecommerce
                                        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
                                    description:
                                      - locale: en_US
                                        channel: ecommerce
                                        data: This is a product description
                                    main_colors:
                                      - locale: en_US
                                        channel: ecommerce
                                        data:
                                          - red
                                          - blue
                                created:
                                  type: string
                                  format: date-time
                                  description: Date of creation
                                  example: '2021-05-31T09:23:34+00:00'
                                updated:
                                  type: string
                                  format: date-time
                                  description: Date of the last update
                                  example: '2021-05-31T09:23:34+00:00'
                    example:
                      _items:
                        - code: sku_54628_picture1
                          values:
                            media_preview:
                              - data: sku_54628_picture1.jpg
                                locale: en_US
                                channel: ecommerce
                            model_wears_size:
                              - data: s
                                locale: en_US
                                channel: ecommerce
                            photographer:
                              - data: ben_levy
                                locale: en_US
                                channel: ecommerce
                            main_colors:
                              - data:
                                  - red
                                  - purple
                                locale: en_US
                                channel: ecommerce
                            end_of_use_date:
                              - data: 02/03/2021
                                locale: null
                                channel: null
                          created: '2021-05-31T09:23:34+00:00'
                          updated: '2021-05-31T09:23:34+00:00'
                          _links:
                            self:
                              href: /api/rest/v1/asset-families/packshot/assets/sku_54628_picture1
              examples:
                example:
                  summary: Example of response
                  value:
                    _embedded:
                      _items:
                        - code: sku_54628_picture1
                          values:
                            media_preview:
                              - data: sku_54628_picture1.jpg
                                locale: en_US
                                channel: ecommerce
                            model_wears_size:
                              - data: s
                                locale: en_US
                                channel: ecommerce
                            photographer:
                              - data: ben_levy
                                locale: en_US
                                channel: ecommerce
                            main_colors:
                              - data:
                                  - red
                                  - purple
                                locale: en_US
                                channel: ecommerce
                            end_of_use_date:
                              - data: 02/03/2021
                                locale: en_US
                                channel: ecommerce
                          created: '2021-05-31T09:23:34+00:00'
                          updated: '2021-05-31T09:23:34+00:00'
                          _links:
                            self:
                              href: /api/rest/v1/asset-families/packshot/assets/sku_54628_picture1
        '401':
          description: |
            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.
          content: *ref_3
        '406':
          description: |
            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.
          content: *ref_13
    patch:
      summary: Update/create several assets
      security:
        - bearerToken: []
      operationId: patch_assets
      tags:
        - Asset
      description: |
        This endpoint allows you to update and/or create several assets of one given asset family at once.
        Learn more about the [Update behavior](https://api.akeneo.com/documentation/update.html#update-asset-values).
        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.
      parameters:
        - in: path
          name: asset_family_code
          description: Code of the asset family
          required: true
          schema: *ref_77
          example: packshot
      requestBody:
        description: Body of the request containing the assets to create or update
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                required: *ref_84
                properties: *ref_85
            examples:
              example:
                summary: Example of assets to create or update
                value:
                  - code: sku_54628_picture1
                    values:
                      media_preview:
                        - data: sku_54628_picture1.jpg
                          channel: ecommerce
                          locale: en_US
                      model_wears_size:
                        - data: s
                          channel: ecommerce
                          locale: en_US
                      photographer:
                        - data: ben_levy
                          channel: ecommerce
                          locale: en_US
                      main_colors:
                        - data:
                            - red
                            - purple
                          channel: ecommerce
                          locale: en_US
                      end_of_use_date:
                        - data: 02/03/2021
                          channel: ecommerce
                          locale: en_US
                  - code: sku_54628_picture2
                    values:
                      media_preview:
                        - data: sku_54628_picture2.jpg
                          channel: ecommerce
                          locale: en_US
                      model_wears_size:
                        - data: l
                          channel: ecommerce
                          locale: en_US
                      photographer:
                        - data: ben_levy
                          channel: ecommerce
                          locale: en_US
                      main_colors:
                        - data:
                            - red
                            - purple
                          channel: ecommerce
                          locale: en_US
                      end_of_use_date:
                        - data: 02/03/2021
                          channel: ecommerce
                          locale: en_US
        required: true
      responses:
        '200':
          description: Returns an JSON array in which each object gives you the status of each asset creation or update
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    code:
                      type: string
                      description: Resource code
                    status_code:
                      type: integer
                      description: |
                        HTTP status code,
                        see [Client errors](https://api.akeneo.com/documentation/responses.html#client-errors) to understand the meaning of each code.
                    message:
                      type: string
                      description: Message explaining the error
                  required:
                    - code
                    - status_code
              examples:
                example:
                  summary: Example of response
                  value:
                    - 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
        '400':
          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.
          content: *ref_33
        '401':
          description: |
            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.
          content: *ref_3
        '413':
          description: |
            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.
          content: *ref_34
        '415':
          description: |
            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.
          content: *ref_6
  /api/rest/v1/asset-families/{asset_family_code}/assets/{code}:
    get:
      summary: Get an asset of a given asset family
      security:
        - bearerToken: []
      operationId: get_assets__code_
      tags:
        - Asset
      description: |
        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.
      parameters:
        - in: path
          name: asset_family_code
          description: Code of the asset family
          required: true
          schema: *ref_77
          example: packshot
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
      responses:
        '200':
          description: Returns the content of the asset in JSON standard format
          content:
            application/json:
              schema:
                type: object
                required: *ref_84
                properties: *ref_85
              examples:
                example:
                  summary: Example of asset
                  value:
                    code: sku_54628_picture1
                    values:
                      media_preview:
                        - data: sku_54628_picture1.jpg
                          channel: ecommerce
                          locale: en_US
                    created: '2021-05-31T09:23:34+00:00'
                    updated: '2021-05-31T09:23:34+00:00'
        '401':
          description: |
            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.
          content: *ref_3
        '404':
          description: |
            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.
          content: *ref_25
        '406':
          description: |
            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.
          content: *ref_13
    patch:
      summary: Update/create an asset
      security:
        - bearerToken: []
      operationId: patch_asset__code_
      tags:
        - Asset
      description: |
        This endpoint allows you to update a given asset of a given asset family.
        Learn more about the [Update behavior](https://api.akeneo.com/documentation/update.html#update-asset-values).
        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.
      parameters:
        - in: path
          name: asset_family_code
          description: Code of the asset family
          required: true
          schema: *ref_77
          example: packshot
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
      requestBody:
        description: Body of the request containing the asset to create or update
        content:
          application/json:
            schema:
              type: object
              required: *ref_84
              properties: *ref_85
            examples:
              example:
                summary: Example of asset to create or update
                value:
                  code: sku_54628_picture1
                  values:
                    media_preview:
                      - data: sku_54628_picture1.jpg
                        channel: ecommerce
                        locale: en_US
                    model_wears_size:
                      - data: s
                        channel: ecommerce
                        locale: en_US
                    photographer:
                      - data: ben_levy
                        channel: ecommerce
                        locale: en_US
                    main_colors:
                      - data:
                          - red
                          - purple
                        channel: ecommerce
                        locale: en_US
        required: true
      responses:
        '201':
          description: |
            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: *ref_23
        '204':
          description: |
            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: *ref_24
        '400':
          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.
          content: *ref_33
        '401':
          description: |
            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.
          content: *ref_3
        '415':
          description: |
            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.
          content: *ref_6
        '422':
          description: Unprocessable entity
          x-details: The validation of the entity given in the body of the request failed
          content: *ref_5
    delete:
      summary: Delete an asset
      security:
        - bearerToken: []
      operationId: delete_assets__code_
      tags:
        - Asset
      description: |
        This endpoint allows you to delete a given asset. This endpoint is case
        sensitive on the asset family code.
      parameters:
        - in: path
          name: asset_family_code
          description: Code of the asset family
          required: true
          schema: *ref_77
          example: packshot
        - in: path
          name: code
          description: |
            The `code` 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.
          required: true
          schema: *ref_35
          example: my_entity_code
      responses:
        '204':
          description: |
            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: *ref_24
        '401':
          description: |
            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.
          content: *ref_3
        '404':
          description: |
            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.
          content: *ref_25
  /api/rest/v1/catalogs:
    get:
      summary: Get the list of owned catalogs
      security:
        - appToken: []
      operationId: get_app_catalogs
      description: This endpoint allows you to get the list of catalogs you owned.
      tags:
        - Catalogs
      x-app-token: true
      parameters:
        - in: query
          name: page
          description: |
            The `page` query parameter allows you to 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](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_8
          example: 1
        - in: query
          name: limit
          description: |
            The `limit` query parameter allows you to 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](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_10
          example: 100
      responses:
        '200':
          description: Return the paginated catalogs owned by the user making the request
          content:
            application/json:
              schema:
                title: Catalogs
                type: object
                allOf:
                  - type: object
                    properties:
                      _links:
                        type: object
                        properties:
                          self:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the current page of resources
                          first:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the first page of resources
                          previous:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the previous page of resources
                          next:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the next page of resources
                      current_page:
                        type: integer
                        description: Current page number
                  - properties:
                      _embedded:
                        type: object
                        properties:
                          items:
                            type: array
                            items:
                              type: object
                              allOf:
                                - type: object
                                  properties:
                                    _links:
                                      type: object
                                      properties:
                                        self:
                                          type: object
                                          properties:
                                            href:
                                              type: string
                                              description: URI of the resource
                                - type: object
                                  properties: &ref_86
                                    id:
                                      type: string
                                      description: Catalog id
                                      x-immutable: true
                                      example: 12351d98-200e-4bbc-aa19-7fdda1bd14f2
                                    name:
                                      type: string
                                      description: Catalog name
                                      example: My app catalog
                                    enabled:
                                      type: boolean
                                      description: Whether the catalog is enabled or not
                                      default: false
                                      example: false
                                    managed_currencies:
                                      type: array
                                      description: List of currency codes
                                      items:
                                        type: string
                                      example:
                                        - EUR
                                        - USD
                                        - GBP
                                    managed_locales:
                                      type: array
                                      description: List of locale codes
                                      items:
                                        type: string
                                      example:
                                        - fr_FR
                                        - en_US
                                    skip_required_checks:
                                      type: boolean
                                      description: Option to skip required checks
                                      default: false
                                      example: false
                                  example: &ref_87
                                    id: 12351d98-200e-4bbc-aa19-7fdda1bd14f2
                                    name: My app catalog
                                    enabled: false
                                    managed_currencies:
                                      - EUR
                                      - USD
                                      - GBP
                                    managed_locales:
                                      - fr_FR
                                      - en_US
                                    skip_required_checks: false
              examples:
                response:
                  summary: Example of a response
                  value:
                    _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:
                        - 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
                        - id: 092c5f22-ecd8-485f-97e9-3b78098e1386
                          name: Store US
                          enabled: true
                          managed_currencies:
                            - USD
                          managed_locales:
                            - en_US
                            - es_ES
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
    post:
      summary: Create a new catalog
      security:
        - appToken: []
      operationId: post_app_catalog
      tags:
        - Catalogs
      x-app-token: true
      description: This endpoint allows you to create a new catalog.
      requestBody:
        description: The catalog to create
        content:
          application/json:
            schema:
              type: object
              required:
                - name
              properties:
                name:
                  type: string
                  description: Catalog name
                  example: My app catalog
                managed_currencies:
                  type: array
                  description: List of currency codes
                  items:
                    type: string
                  example:
                    - EUR
                    - USD
                    - GBP
                managed_locales:
                  type: array
                  description: List of locale codes
                  items:
                    type: string
                  example:
                    - fr_FR
                    - en_US
              example:
                name: My app catalog
                managed_currencies:
                  - EUR
                  - USD
                  - GBP
                managed_locales:
                  - fr_FR
                  - en_US
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties: *ref_86
                example: *ref_87
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '415':
          description: |
            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.
          content: *ref_6
        '422':
          description: Unprocessable entity
          x-details: The validation of the entity given in the body of the request failed
          content: *ref_5
  /api/rest/v1/catalogs/{id}:
    get:
      summary: Get a catalog
      security:
        - appToken: []
      operationId: get_app_catalog
      description: This endpoint allows you to get the information about a catalog.
      tags:
        - Catalogs
      x-app-token: true
      parameters:
        - in: path
          name: id
          description: |
            The `id` 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.
          required: true
          schema: &ref_88
            type: string
            format: uuid
          example: 12351d98-200e-4bbc-aa19-7fdda1bd14f2
      responses:
        '200':
          description: Return the catalog
          content:
            application/json:
              schema:
                type: object
                properties: *ref_86
                example: *ref_87
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '404':
          description: |
            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.
          content: *ref_25
    patch:
      summary: Update a catalog
      security:
        - appToken: []
      operationId: patch_app_catalog
      tags:
        - Catalogs
      x-app-token: true
      description: This endpoint allows you to update a catalog.
      parameters:
        - in: path
          name: id
          description: |
            The `id` 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.
          required: true
          schema: *ref_88
          example: 12351d98-200e-4bbc-aa19-7fdda1bd14f2
      requestBody:
        description: The catalog to update
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: Catalog name
                  example: My app catalog
                managed_currencies:
                  type: array
                  description: List of currency codes
                  items:
                    type: string
                  example:
                    - EUR
                    - USD
                    - GBP
                managed_locales:
                  type: array
                  description: List of locale codes
                  items:
                    type: string
                  example:
                    - fr_FR
                    - en_US
                skip_required_checks:
                  type: boolean
                  description: Skip required checks
                  example: false
                logo_url:
                  type:
                    - string
                    - 'null'
                  description: Logo URL
                  example: https://example.com/logo.png
              example:
                name: My app catalog
                managed_currencies:
                  - EUR
                  - USD
                  - GBP
                managed_locales:
                  - fr_FR
                  - en_US
                skip_required_checks: false
                logo_url: https://example.com/logo.png
      responses:
        '200':
          description: Updated
          content:
            application/json:
              schema:
                type: object
                properties: *ref_86
                example: *ref_87
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '404':
          description: |
            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.
          content: *ref_25
        '415':
          description: |
            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.
          content: *ref_6
        '422':
          description: Unprocessable entity
          x-details: The validation of the entity given in the body of the request failed
          content: *ref_5
    delete:
      summary: Delete a catalog
      security:
        - appToken: []
      operationId: delete_app_catalog
      tags:
        - Catalogs
      x-app-token: true
      description: This endpoint allows you to delete a catalog.
      parameters:
        - in: path
          name: id
          description: |
            The `id` 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.
          required: true
          schema: *ref_88
          example: 12351d98-200e-4bbc-aa19-7fdda1bd14f2
      responses:
        '204':
          description: Successfully deleted, returns empty body.
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '404':
          description: |
            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.
          content: *ref_25
  /api/rest/v1/catalogs/{id}/duplicate:
    post:
      summary: Duplicate a catalog
      security:
        - appToken: []
      operationId: duplicate_app_catalog
      tags:
        - Catalogs
      x-app-token: true
      description: |
        This endpoint allows you to duplicate an existing catalog. Note that the
        duplicated catalog will be deactivated (set to `false`).
      parameters:
        - in: path
          name: id
          description: |
            The `id` 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.
          required: true
          schema: *ref_88
          example: 12351d98-200e-4bbc-aa19-7fdda1bd14f2
      requestBody:
        description: The catalog to duplicate
        required: false
        content:
          application/json:
            schema:
              type: object
              additionalProperties: true
              properties:
                name:
                  type: string
                  description: Catalog name (optional for duplication)
                  example: My duplicated catalog
                managed_currencies:
                  type: array
                  description: List of currency codes
                  items:
                    type: string
                  example:
                    - EUR
                    - USD
                    - GBP
                managed_locales:
                  type: array
                  description: List of locale codes
                  items:
                    type: string
                  example:
                    - fr_FR
                    - en_US
                skip_required_checks:
                  type: boolean
                  description: Option to skip required checks
                  default: false
                  example: false
                parent_id:
                  type:
                    - string
                    - 'null'
                  description: Parent catalog ID
                  example: null
            examples:
              empty:
                summary: Empty request (duplicate with defaults)
                value: {}
              with_data:
                summary: Request with custom data
                value:
                  name: My duplicated catalog
                  managed_currencies:
                    - EUR
                    - USD
                  managed_locales:
                    - fr_FR
                    - en_US
                  skip_required_checks: false
                  parent_id: null
      responses:
        '201':
          description: Catalog successfully duplicated
          content:
            application/json:
              schema:
                type: object
                properties: *ref_86
                example: *ref_87
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '404':
          description: |
            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.
          content: *ref_25
        '422':
          description: Unprocessable entity
          x-details: The validation of the entity given in the body of the request failed
          content: *ref_5
  /api/rest/v1/catalogs/{id}/product-uuids:
    get:
      summary: Get the list of product uuids
      security:
        - appToken: []
      operationId: get_app_catalog_product_uuids
      description: |
        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](https://api.akeneo.com/apps/catalogs.html#troubleshooting) section.
      tags:
        - Catalog products
      x-app-token: true
      parameters:
        - in: path
          name: id
          description: |
            The `id` 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.
          required: true
          schema: *ref_88
          example: 12351d98-200e-4bbc-aa19-7fdda1bd14f2
        - in: query
          name: search_after
          description: |
            Cursor when using the `search_after` pagination method type.
            Should never be set manually, see [Pagination](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_9
          example: qaXbcde
        - in: query
          name: limit
          description: |
            The `limit` query parameter allows you to 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](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_10
          example: 100
        - in: query
          name: updated_before
          description: |
            Filter products that have been updated BEFORE the provided date (Only available on Catalogs endpoints).
            This filter uses the PIM products updated date.
          required: false
          schema: &ref_89
            type: string
            format: date
          example: '2025-05-17T10:00:00Z'
        - in: query
          name: updated_after
          description: |
            Filter products that have been updated AFTER the provided date (Only available on Catalogs endpoints).
            This filter uses the PIM products updated date.
          required: false
          schema: &ref_90
            type: string
            format: date
          example: '2025-06-17T10:00:00Z'
        - in: query
          name: with_count
          description: |
            The `with_count` query parameter allows you to 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.
          required: false
          schema: *ref_11
          example: true
      responses:
        '200':
          description: Return the paginated product uuids
          content:
            application/json:
              schema:
                title: Product uuids
                type: object
                allOf:
                  - type: object
                    properties:
                      _links:
                        type: object
                        properties:
                          self:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the current page of resources
                          first:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the first page of resources
                          next:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the next page of resources
                  - type: object
                    properties:
                      _embedded:
                        type: object
                        properties:
                          items:
                            type: array
                            items:
                              type: string
                              format: uuid
                              example: 4756e653-e25d-48c1-bb72-adce7b1366fd
                        required:
                          - items
              examples:
                response:
                  summary: Example of paginated product uuids
                  value:
                    _links:
                      self:
                        href: http://demo.akeneo.com/api/rest/v1/catalogs/12351d98-200e-4bbc-aa19-7fdda1bd14f2/product-uuids
                      first:
                        href: http://demo.akeneo.com/api/rest/v1/catalogs/12351d98-200e-4bbc-aa19-7fdda1bd14f2/product-uuids
                      next:
                        href: http://demo.akeneo.com/api/rest/v1/catalogs/12351d98-200e-4bbc-aa19-7fdda1bd14f2/product-uuids?search_after=eddfbd2a-abc7-488d-b9e3-41289c824f80
                    _embedded:
                      items:
                        - 844c736b-a19b-48a6-a354-6056044729f0
                        - b2a683ef-4a91-4ed3-b3fa-76dab065a8d5
                        - eddfbd2a-abc7-488d-b9e3-41289c824f80
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '404':
          description: |
            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.
          content: *ref_25
  /api/rest/v1/catalogs/{id}/products:
    get:
      summary: Get the list of products related to a catalog
      security:
        - appToken: []
      operationId: get_app_catalog_products
      tags:
        - Catalog products
      description: |
        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](https://api.akeneo.com/apps/catalogs.html#troubleshooting) section.
      parameters:
        - in: path
          name: id
          description: |
            The `id` 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.
          required: true
          schema: *ref_88
          example: 12351d98-200e-4bbc-aa19-7fdda1bd14f2
        - in: query
          name: search_after
          description: |
            Cursor when using the `search_after` pagination method type.
            Should never be set manually, see [Pagination](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_9
          example: qaXbcde
        - in: query
          name: limit
          description: |
            The `limit` query parameter allows you to 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](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_10
          example: 100
        - in: query
          name: updated_before
          description: |
            Filter products that have been updated BEFORE the provided date (Only available on Catalogs endpoints).
            This filter uses the PIM products updated date.
          required: false
          schema: *ref_89
          example: '2025-05-17T10:00:00Z'
        - in: query
          name: updated_after
          description: |
            Filter products that have been updated AFTER the provided date (Only available on Catalogs endpoints).
            This filter uses the PIM products updated date.
          required: false
          schema: *ref_90
          example: '2025-06-17T10:00:00Z'
      responses:
        '200':
          description: Return the paginated products or error message
          content:
            application/json:
              schema:
                title: Products
                type: object
                oneOf:
                  - allOf:
                      - type: object
                        properties:
                          _links:
                            type: object
                            properties:
                              self:
                                type: object
                                properties:
                                  href:
                                    type: string
                                    description: URI of the current page of resources
                              first:
                                type: object
                                properties:
                                  href:
                                    type: string
                                    description: URI of the first page of resources
                              next:
                                type: object
                                properties:
                                  href:
                                    type: string
                                    description: URI of the next page of resources
                      - type: object
                        properties:
                          _embedded:
                            type: object
                            properties:
                              items:
                                type: array
                                items:
                                  type: object
                                  allOf: *ref_19
                                  properties: *ref_20
                            required:
                              - items
                    required:
                      - _links
                      - _embedded
                  - type: object
                    properties:
                      error:
                        type: string
                        description: Error message when catalog is disabled or invalid
                    required:
                      - error
              examples:
                response:
                  summary: Paginated products
                  value:
                    _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
                            sku:
                              - data: product_416
                            Name:
                              - data: Product 416
                            Weight:
                              - data:
                                  amount: 10
                                  unit: KILOGRAM
                          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
                            sku:
                              - data: product_470
                            Name:
                              - data: Product 470
                            Weight:
                              - data:
                                  amount: 10
                                  unit: KILOGRAM
                          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: {}
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '404':
          description: |
            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.
          content: *ref_25
  /api/rest/v1/catalogs/{id}/products/{uuid}:
    get:
      summary: Get a product related to a catalog
      security:
        - appToken: []
      operationId: get_app_catalog_products_uuid
      tags:
        - Catalog products
      description: |
        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](https://api.akeneo.com/apps/catalogs.html#troubleshooting) section.
      parameters:
        - in: path
          name: id
          description: |
            The `id` 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.
          required: true
          schema: *ref_88
          example: 12351d98-200e-4bbc-aa19-7fdda1bd14f2
        - in: path
          name: uuid
          description: |
            The `uuid` 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.
          required: true
          schema: *ref_21
          example: 123e4567-e89b-12d3-a456-426614174000
      responses:
        '200':
          description: Return the product
          content:
            application/json:
              schema:
                type: object
                allOf: *ref_19
                properties: *ref_20
              examples:
                response:
                  summary: Product details
                  value:
                    uuid: a5eed606-4f98-4d8c-b926-5b59f8fb0ee7
                    family: tshirt
                    groups: []
                    categories: []
                    enabled: true
                    values:
                      name:
                        - data: Top
                          locale: en_US
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '404':
          description: |
            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.
          content: *ref_25
  /api/rest/v1/catalogs/{id}/mapping-schemas/product:
    put:
      summary: Create or update the product mapping schema related to a catalog
      security:
        - appToken: []
      operationId: put_app_catalogs_mapping_schema_product
      description: |
        This endpoint allows you to create or update the product mapping schema related to a catalog.
        See [documentation to define your JSON schema](https://api.akeneo.com/apps/catalogs.html#step-1-define-your-json-schema).
      tags:
        - Mapping schema for products
      x-app-token: true
      parameters:
        - in: path
          name: id
          description: |
            The `id` 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.
          required: true
          schema: *ref_88
          example: 12351d98-200e-4bbc-aa19-7fdda1bd14f2
      requestBody:
        description: Body containing the product mapping schema to create or update.
        content:
          application/json:
            schema:
              type: object
              required: &ref_91
                - $schema
                - properties
              properties: &ref_92
                $id:
                  type: string
                  description: id of your schema
                  example: https://example.com/product
                $schema:
                  type: string
                  description: |
                    $schema indicates which product mapping schema version your app
                    uses
                  example: https://api.akeneo.com/mapping/product/1.0.0/schema
                $comment:
                  type: string
                  description: allows you to add a comment
                  example: This is a comment about the mapping schema
                title:
                  type: string
                  description: allows you to add a title to your mapping schema
                  example: Product Mapping Schema
                description:
                  type: string
                  description: allows you to add a description of your mapping schema
                  example: This schema describes the product mapping for our application
                type:
                  type: string
                  description: should always be "object"
                  enum:
                    - object
                  example: object
                properties:
                  type: object
                  description: list and describe the targets your app expects
                  example:
                    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
            examples:
              request: &ref_93
                summary: Example of product mapping schema
                value:
                  $id: https://example.com/product
                  $schema: https://api.akeneo.com/mapping/product/1.0.0/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:
        '204':
          description: Successfully created or updated product mapping schema, empty response body.
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '415':
          description: |
            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.
          content: *ref_6
        '422':
          description: Unprocessable entity
          x-details: The validation of the entity given in the body of the request failed
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: HTTP status code
                    example: 422
                  message:
                    type: string
                    description: Message explaining the error
                    example: Validation failed.
              examples:
                validation-error:
                  summary: Example with validation error
                  value:
                    code: 422
                    message: Validation failed.
    get:
      summary: Get the product mapping schema related to a catalog
      security:
        - appToken: []
      operationId: get_app_catalogs_mapping_schema_product
      description: |
        This endpoint allows you to retrieve the product mapping schema related to a
        catalog
      tags:
        - Mapping schema for products
      x-app-token: true
      parameters:
        - in: path
          name: id
          description: |
            The `id` 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.
          required: true
          schema: *ref_88
          example: 12351d98-200e-4bbc-aa19-7fdda1bd14f2
      responses:
        '200':
          description: Return product mapping schema related to a catalog
          content:
            application/json:
              schema:
                type: object
                required: *ref_91
                properties: *ref_92
              examples:
                request: *ref_93
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '404':
          description: |
            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.
          content: *ref_25
    delete:
      summary: Delete the product mapping schema related to a catalog
      security:
        - appToken: []
      operationId: delete_app_catalogs_mapping_schema_product
      description: |
        This endpoint allows you to delete the product mapping schema related to a
        catalog
      tags:
        - Mapping schema for products
      x-app-token: true
      parameters:
        - in: path
          name: id
          description: |
            The `id` 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.
          required: true
          schema: *ref_88
          example: 12351d98-200e-4bbc-aa19-7fdda1bd14f2
      responses:
        '204':
          description: Successfully deleted product mapping schema, empty response body.
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '404':
          description: |
            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.
          content: *ref_25
  /api/rest/v1/catalogs/{id}/mapped-products:
    get:
      summary: |
        Get the list of mapped flattened products or simple products related to a
        catalog
      security:
        - appToken: []
      operationId: get_app_catalog_mapped_products
      tags:
        - Catalog products
      description: |
        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](https://api.akeneo.com/apps/catalogs.html#troubleshooting) section.
      parameters:
        - in: path
          name: id
          description: |
            The `id` 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.
          required: true
          schema: *ref_88
          example: 12351d98-200e-4bbc-aa19-7fdda1bd14f2
        - in: query
          name: search_after
          description: |
            Cursor when using the `search_after` pagination method type.
            Should never be set manually, see [Pagination](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_9
          example: qaXbcde
        - in: query
          name: limit
          description: |
            The `limit` query parameter allows you to 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](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_10
          example: 100
        - in: query
          name: updated_before
          description: |
            Filter products that have been updated BEFORE the provided date (Only available on Catalogs endpoints).
            This filter uses the PIM products updated date.
          required: false
          schema: *ref_89
          example: '2025-05-17T10:00:00Z'
        - in: query
          name: updated_after
          description: |
            Filter products that have been updated AFTER the provided date (Only available on Catalogs endpoints).
            This filter uses the PIM products updated date.
          required: false
          schema: *ref_90
          example: '2025-06-17T10:00:00Z'
      responses:
        '200':
          description: Return the paginated **mapped** products
          content:
            application/json:
              schema:
                type: object
                allOf:
                  - type: object
                    properties:
                      _links:
                        type: object
                        properties:
                          self:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the current page of resources
                          first:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the first page of resources
                          next:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the next page of resources
                properties:
                  _embedded:
                    type: object
                    properties:
                      items:
                        type: array
                        items:
                          type: object
                          additionalProperties: true
                    example:
                      items:
                        - uuid: 04f47a54-8cc9-4c51-90e9-eb9aace0865f
                          title: Canon Video Visualiser RE-455X
                          code: sku-1234
              examples:
                response:
                  summary: Example of a successful response
                  value:
                    _links:
                      self:
                        href: https://demo.akeneo.com/api/rest/v1/catalogs/d259aecf-3ec1-4b07-ae0f-ce234b86c025/mapped-products?limit=100
                      first:
                        href: https://demo.akeneo.com/api/rest/v1/catalogs/d259aecf-3ec1-4b07-ae0f-ce234b86c025/mapped-products?limit=100
                    _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
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '404':
          description: |
            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.
          content: *ref_25
  /api/rest/v1/catalogs/{id}/mapped-models:
    get:
      summary: Get the list of mapped models related to a catalog
      security:
        - appToken: []
      operationId: get_app_catalog_mapped_models
      tags:
        - Catalog products
      description: |
        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](https://api.akeneo.com/apps/catalogs.html#troubleshooting) section.
      parameters:
        - in: path
          name: id
          description: |
            The `id` 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.
          required: true
          schema: *ref_88
          example: 12351d98-200e-4bbc-aa19-7fdda1bd14f2
        - in: query
          name: search_after
          description: |
            Cursor when using the `search_after` pagination method type.
            Should never be set manually, see [Pagination](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_9
          example: qaXbcde
        - in: query
          name: limit
          description: |
            The `limit` query parameter allows you to 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](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_10
          example: 100
        - in: query
          name: updated_before
          description: |
            Filter products that have been updated BEFORE the provided date (Only available on Catalogs endpoints).
            This filter uses the PIM products updated date.
          required: false
          schema: *ref_89
          example: '2025-05-17T10:00:00Z'
        - in: query
          name: updated_after
          description: |
            Filter products that have been updated AFTER the provided date (Only available on Catalogs endpoints).
            This filter uses the PIM products updated date.
          required: false
          schema: *ref_90
          example: '2025-06-17T10:00:00Z'
      responses:
        '200':
          description: Return the paginated **mapped** models
          content:
            application/json:
              schema:
                type: object
                allOf:
                  - type: object
                    properties:
                      _links:
                        type: object
                        properties:
                          self:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the current page of resources
                          first:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the first page of resources
                          next:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the next page of resources
                properties:
                  _embedded:
                    type: object
                    properties:
                      items:
                        type: array
                        items:
                          type: object
                          additionalProperties: true
                    example:
                      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
              examples:
                response:
                  summary: Example of a paginated response with mapped models
                  value:
                    _links:
                      first:
                        href: https://demo.akeneo.com/api/rest/v1/catalogs/232be0b2-093c-4591-a506-2a2ed5176721/mapped-models?limit=3
                      next:
                        href: https://demo.akeneo.com/api/rest/v1/catalogs/232be0b2-093c-4591-a506-2a2ed5176721/mapped-models?search_after=apollon&limit=3
                      self:
                        href: https://demo.akeneo.com/api/rest/v1/catalogs/232be0b2-093c-4591-a506-2a2ed5176721/mapped-models?limit=3
                    _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
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '404':
          description: |
            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.
          content: *ref_25
  /api/rest/v1/catalogs/{id}/mapped-models/{model_code}/variants:
    get:
      summary: Get the list of mapped variants of a model related to a catalog
      security:
        - appToken: []
      operationId: get_app_catalog_mapped_variants
      tags:
        - Catalog products
      description: |
        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](https://api.akeneo.com/apps/catalogs.html#troubleshooting) section.
      parameters:
        - in: path
          name: id
          description: |
            The `id` 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.
          required: true
          schema: *ref_88
          example: 12351d98-200e-4bbc-aa19-7fdda1bd14f2
        - in: query
          name: search_after
          description: |
            Cursor when using the `search_after` pagination method type.
            Should never be set manually, see [Pagination](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_9
          example: qaXbcde
        - in: query
          name: limit
          description: |
            The `limit` query parameter allows you to 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](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_10
          example: 100
        - name: model_code
          in: path
          description: Model code
          required: true
          schema:
            type: string
        - in: query
          name: updated_before
          description: |
            Filter products that have been updated BEFORE the provided date (Only available on Catalogs endpoints).
            This filter uses the PIM products updated date.
          required: false
          schema: *ref_89
          example: '2025-05-17T10:00:00Z'
        - in: query
          name: updated_after
          description: |
            Filter products that have been updated AFTER the provided date (Only available on Catalogs endpoints).
            This filter uses the PIM products updated date.
          required: false
          schema: *ref_90
          example: '2025-06-17T10:00:00Z'
      responses:
        '200':
          description: Return the paginated **mapped** variants
          content:
            application/json:
              schema:
                type: object
                allOf:
                  - type: object
                    properties:
                      _links:
                        type: object
                        properties:
                          self:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the current page of resources
                          first:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the first page of resources
                          next:
                            type: object
                            properties:
                              href:
                                type: string
                                description: URI of the next page of resources
                properties:
                  _embedded:
                    type: object
                    properties:
                      items:
                        type: array
                        items:
                          type: object
                          additionalProperties: true
                    example:
                      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
              examples:
                response:
                  summary: Example of a response
                  value:
                    _links:
                      first:
                        href: https://demo.akeneo.com/api/rest/v1/catalogs/232be0b2-093c-4591-a506-2a2ed5176721/mapped-models/tshirt_akeneo/variants?limit=100
                      self:
                        href: https://demo.akeneo.com/api/rest/v1/catalogs/232be0b2-093c-4591-a506-2a2ed5176721/mapped-models/tshirt_akeneo/variants?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
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '404':
          description: |
            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.
          content: *ref_25
  /api/rest/v1:
    get:
      summary: Get list of all endpoints
      security:
        - bearerToken: []
      operationId: get_endpoints
      description: |
        This endpoint allows you to get the list of all the available endpoints. 
        No need to be authenticated to use this endpoint.
      tags:
        - Overview
      responses:
        '200':
          description: Return the list of all available endpoints
          x-no-entity: true
          content:
            application/json:
              schema:
                type: object
                properties:
                  host:
                    type: string
                    description: Host name
                    example: https://demo.akeneo.com
                  authentication:
                    type: object
                    description: Endpoint to get the authentication token
                    additionalProperties:
                      type: object
                      properties:
                        route:
                          type: string
                          description: Path of the endpoint
                        methods:
                          type: array
                          items:
                            type: string
                    example:
                      fos_oauth_server_token:
                        route: /api/oauth/v1/token
                        methods:
                          - POST
                  routes:
                    type: object
                    description: All the available endpoints
                    additionalProperties:
                      type: object
                      properties:
                        route:
                          type: string
                        methods:
                          type: array
                          items:
                            type: string
                    example:
                      pim_api_attribute_list:
                        route: /api/rest/v1/attributes
                        methods:
                          - GET
              examples:
                example-full-endpoints:
                  summary: Full endpoint listing
                  value:
                    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/{assetFamilyIdentifier}/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
        '406':
          description: |
            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.
          content: *ref_13
  /api/oauth/v1/token:
    post:
      summary: Get an authentication token
      description: |
        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](https://api.akeneo.com/documentation/authentication.html#token-generation).
      operationId: post_token
      security:
        - basicToken: []
      tags:
        - Authentication
      parameters:
        - in: header
          name: Content-Type
          description: |
            The `Content-Type` 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.
          required: true
          schema: *ref_43
          example: application/json
        - in: header
          name: Authorization
          description: |
            The `Authorization` 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](https://api.akeneo.com/documentation/authentication.html#client-idsecret-generation) section.
          required: true
          schema:
            type: string
      requestBody:
        description: |
          Request body for the token generation endpoint. This endpoint is used to generate an access token for the Akeneo PIM API.
        content:
          application/json:
            schema:
              type: object
              properties:
                username:
                  description: |
                    Your PIM username, field username in your PIM connection settings. 
                    See [here](https://api.akeneo.com/documentation/authentication.html#token-generation) for more details.
                  type: string
                  example: my_username_9364
                password:
                  description: |
                    Your PIM password, field password in your PIM connection settings. 
                    See [here](https://api.akeneo.com/documentation/authentication.html#token-generation) for more details.
                  type: string
                  example: 4e88d6350
                grant_type:
                  description: Always equal to "password"
                  type: string
                  default: password
                  example: password
              required:
                - username
                - password
                - grant_type
            example:
              username: admin
              password: admin
              grant_type: password
      responses:
        '200':
          description: Return an authentication token
          content:
            application/json:
              schema:
                type: object
                properties:
                  access_token:
                    type: string
                    description: |
                      Authentication token that should be given in every
                      authenticated request to the API
                    example: ZTZmYjU4ZmQxZWNmMzk1M2NlYzA5NmFhNmIzVjExMzE4NmJmODBkZGIyYTliYmQyNjk2ZDQwZThmNjdiZDQzOQ
                  expires_in:
                    type: integer
                    description: Validity of the token given in seconds, 3600s = 1h by default
                    example: 3600
                  token_type:
                    type: string
                    description: Token type, always equal to "bearer"
                    example: bearer
                  scope:
                    type:
                      - string
                      - 'null'
                    description: Unused, always equal to "null"
                    example: null
                  refresh_token:
                    type: string
                    description: |
                      Use this token when your access token has expired. 
                      [See](https://api.akeneo.com/documentation/authentication.html#refresh-an-expired-token)
                    example: M3FlODI0OTE3ODMyNjViMzRiOWE5ODMyNWViMThkNDU5YzJjNjFiZjNkZWFjMzIyYjc4YTgzZWY1MjE5ZTY5Mw
              examples:
                default:
                  summary: Default response
                  value:
                    access_token: ZTZmYjU4ZmQxZWNmMzk1M2NlYzA5NmFhNmIzVjExMzE4NmJmODBkZGIyYTliYmQyNjk2ZDQwZThmNjdiZDQzOQ
                    expires_in: 3600
                    token_type: bearer
                    scope: null
                    refresh_token: M3FlODI0OTE3ODMyNjViMzRiOWE5ODMyNWViMThkNDU5YzJjNjFiZjNkZWFjMzIyYjc4YTgzZWY1MjE5ZTY5Mw
        '400':
          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.
          content: *ref_33
        '415':
          description: |
            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.
          content: *ref_6
        '422':
          description: |
            This response indicates that the validation of the entity given in the body of the request failed.
            It can occur when the data provided does not meet the required format or constraints defined by the API.
          content: *ref_46
  /api/rest/v1/system-information:
    get:
      summary: Get system information
      operationId: get_system_information
      description: |
        This endpoint allows you to get the version and the edition of the PIM.

        Example of what you can get:

        | Environment         | Edition   | Version           |
        |---------------------|-----------|-------------------|
        | SaaS EE             | Serenity  | v20230112013744   |
        | SaaS CE             | GE        | v20210526040645   |
        | PaaS or onPrem EE   | EE        | 6.0.28            |
        | PaaS or onPrem CE   | CE        | 6.0.28            |
      tags:
        - System
      security:
        - bearerToken: []
      responses:
        '200':
          description: Return the version and the edition of the PIM.
          x-no-entity: true
          content:
            application/json:
              schema:
                type: object
                properties:
                  version:
                    type: string
                    description: Version of the PIM
                    example: v20250717143807
                  edition:
                    type: string
                    description: Edition of the PIM
                    example: Serenity
              examples:
                example-success:
                  summary: Typical response for the Serenity edition
                  value:
                    version: v20250717143807
                    edition: Serenity
        '406':
          description: |
            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.
          content: *ref_13
  /api/rest/v1/ui-extensions:
    get:
      summary: List UI extensions
      operationId: get_ui_extensions
      tags:
        - UI Extensions
      security:
        - bearerToken: []
      description: List all UI extensions associated with your token.
      responses:
        '200':
          description: Returns the list of extensions
          x-example:
            - uuid: d414135b-ff4d-44e1-8cb6-fce64cbe29c0
              name: my_awesome_button_extension
              type: iframe
              position: pim.product.tab
              configuration:
                url: https://www.example.com
                labels:
                  en_US: My awesome link extension
                  fr_FR: Ma super link extension
                default_label: My awesome link extension
              status: active
              version: V1.02.3
              description: A short human readable description.
              credentials:
                - type: Custom Header
                  value:
                    header_key: my_super_header_key
                    header_value: my_super_header_value
          content:
            application/json:
              schema:
                title: UI Extensions
                type: array
                items:
                  type: object
                  properties: &ref_94
                    name:
                      type: string
                      description: Name of the extension, shown within the Administration interface
                      example: my_awesome_button_extension
                    description:
                      type: string
                      description: Short description, shown within the Administration interface
                      example: A short human readable description.
                    version:
                      type: string
                      description: |
                        Version of the extension, shown within the Administration
                        interface
                      example: V1.02.3
                    position:
                      type: string
                      description: |
                        [Position](https://api.akeneo.com/extensions/positions.html) of the UI extension.
                      example: pim.product.tab
                    type:
                      type: string
                      description: |
                        [Type](https://api.akeneo.com/extensions/types.html) of the UI extension.
                      example: iframe
                    configuration:
                      type: object
                      description: |
                        Configuration options that are specific to the UI extension [type](https://api.akeneo.com/extensions/types.html).
                      properties:
                        default_label:
                          type: string
                          description: |
                            Default label, used if there is no translation for the PIM user locale
                          example: My awesome link extension
                        labels:
                          type: object
                          description: Label translations
                        secret:
                          type: string
                          minLength: 32
                          description: |
                            Shows ***REDACTED*** if a secret is registered for the extension.
                          example: UOL2EHjh7P0nGNUV8RwDMBclyMwe4c5IA
                        url:
                          type: string
                          description: Destination URL of the extension
                          example: https://www.example.com
                    status:
                      type: string
                      description: Status of the UI extension (active or inactive)
                      example: active
                    credentials:
                      type: array
                      description: Credentials for the UI extension
                      items:
                        oneOf:
                          - type: object
                            properties:
                              type:
                                type: string
                                enum:
                                  - Custom Header
                              value:
                                type: object
                                properties:
                                  header_key:
                                    type: string
                                  header_value:
                                    type: string
                                required:
                                  - header_key
                                  - header_value
                            required:
                              - type
                              - value
                          - type: object
                            properties:
                              type:
                                type: string
                                enum:
                                  - Bearer Token
                              value:
                                type: string
                                description: |
                                  The value of the bearer token to be used for authentication in API requests.
                                  This token should be kept secret and not shared publicly.
                            required:
                              - type
                              - value
                          - type: object
                            properties:
                              type:
                                type: string
                                enum:
                                  - Basic Auth
                              value:
                                type: object
                                properties:
                                  username:
                                    type: string
                                  password:
                                    type: string
                                required:
                                  - username
                                  - password
                            required:
                              - type
                              - value
                      example:
                        - type: Custom Header
                          value:
                            header_key: X-My-Custom-Header
                            header_value: My custom header value
                        - type: Bearer Token
                          value: my_bearer_token_value
                        - type: Basic Auth
                          value:
                            username: my_username
                            password: my_password
              examples:
                list_extensions:
                  summary: Two iframes UI extension positioned in a product tab
                  value:
                    - 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.
    post:
      summary: Create a new UI extension
      security:
        - bearerToken: []
      operationId: post_ui_extension
      tags:
        - UI Extensions
      description: |
        This endpoint allows you to create a new UI extension.
        <code>default_label</code> and <code>url</code> configuration fields are mandatory for all UI extensions.
        <code>secret</code> is optional and only available for [action](https://api.akeneo.com/api-reference.html#post_ui_extension) UI extension.
      requestBody:
        description: body of the UI extension to create
        content:
          application/json:
            schema:
              type: object
              properties: *ref_94
            examples:
              create_iframe_extension:
                summary: Create an iframe UI extension positioned in a product tab
                value:
                  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:
        '201':
          description: Returns the created extension
          content:
            application/json:
              schema:
                type: object
                properties: *ref_94
              examples:
                iframe_extension_created:
                  summary: An iframe UI extension positioned in a product tab
                  value:
                    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.
        '400':
          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.
          content: *ref_33
        '422':
          description: Unprocessable entity
          x-details: The validation of the entity given in the body of the request failed
          content: *ref_5
  /api/rest/v1/ui-extensions/{uuid}:
    patch:
      summary: Update a UI extension
      operationId: patch_ui_extension_uuid
      tags:
        - UI Extensions
      security:
        - bearerToken: []
      description: |
        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.
      parameters:
        - in: path
          name: uuid
          description: |
            The `uuid` 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.
          required: true
          schema: *ref_21
          example: 123e4567-e89b-12d3-a456-426614174000
      requestBody:
        description: body of the UI extension to update
        content:
          application/json:
            schema:
              type: object
              properties: *ref_94
            examples:
              update_version:
                summary: Update only version property
                value:
                  version: V1.02.4
        required: true
      responses:
        '200':
          description: Changes applied successfully
          x-details: Returns a JSON document representing the UI extension updated
          x-example:
            uuid: d414135b-ff4d-44e1-8cb6-fce64cbe29c0
            name: my_awesome_button_extension
            type: link
            position: pim.product.header
            configuration:
              url: https://www.example.com
              labels:
                en_US: My awesome link extension
                fr_FR: Ma super link extension
              default_label: My awesome link extension
            status: active
            version: V1.02.4
            description: A short human readable description.
          content:
            application/json:
              schema:
                type: object
                properties: *ref_94
              examples:
                updated_extension:
                  summary: Updated UI extension
                  value:
                    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.
        '400':
          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.
          content: *ref_33
        '404':
          description: |
            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.
          content: *ref_25
        '422':
          description: Unprocessable entity
          x-details: The validation of the entity given in the body of the request failed
          content: *ref_5
    delete:
      summary: Delete a UI extension
      security:
        - bearerToken: []
      operationId: delete_ui_extension_uuid
      tags:
        - UI Extensions
      description: This endpoint allows you to delete a given UI extension.
      parameters:
        - in: path
          name: uuid
          description: |
            The `uuid` 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.
          required: true
          schema: *ref_21
          example: 123e4567-e89b-12d3-a456-426614174000
      responses:
        '204':
          description: Extension deleted successfully. Empty response body.
        '400':
          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.
          content: *ref_33
        '404':
          description: |
            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.
          content: *ref_25
  /api/rest/v1/workflows/{uuid}:
    get:
      summary: Get a workflow
      operationId: get_workflows__uuid_
      tags:
        - Workflows
      description: This endpoint allows you to get the information about a given workflow as well as its steps.
      parameters:
        - in: path
          name: uuid
          description: |
            The `uuid` 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.
          required: true
          schema: *ref_21
          example: 123e4567-e89b-12d3-a456-426614174000
      responses:
        '200':
          description: Returns the content of the workflow in JSON standard format
          content:
            application/json:
              schema:
                type: object
                required:
                  - uuid
                  - code
                  - labels
                  - enabled
                  - steps
                properties:
                  uuid:
                    type: string
                    format: uuid
                    description: Workflow UUID
                    example: 6f37476a-04c2-46c0-b6d0-e18316959068
                  code:
                    type: string
                    description: Workflow code
                    example: enrichment_workflow
                  labels:
                    type: object
                    description: Locale code
                    patternProperties:
                      ^[a-z]{2}_[A-Z]{2}$:
                        type: string
                        description: Workflow labels per locale
                    example:
                      fr_FR: Workflow d'enrichissement
                  enabled:
                    type: boolean
                    description: Whether the workflow is enabled
                    example: true
                  steps:
                    type: array
                    description: List of workflow steps
                    items:
                      type: object
                      required:
                        - uuid
                        - code
                        - type
                        - labels
                        - descriptions
                        - allotted_time
                        - channels_and_locales
                      properties:
                        uuid:
                          type: string
                          format: uuid
                          description: Step UUID
                          example: f626d0e5-84a5-41fc-8215-65508c253edb
                        code:
                          type: string
                          description: Step code
                          example: marketing_enrichment
                        type:
                          type: string
                          description: Step type (e.g. enrichment, review)
                          example: enrichment
                        labels:
                          type: object
                          description: Locale code
                          patternProperties:
                            ^[a-z]{2}_[A-Z]{2}$:
                              type: string
                              description: Step labels per locale
                          example:
                            en_US: Marketing enrichment
                            fr_FR: Enrichissement marketing
                        descriptions:
                          type: object
                          description: Locale code
                          patternProperties:
                            ^[a-z]{2}_[A-Z]{2}$:
                              type: string
                              description: Step descriptions per locale
                          example:
                            fr_FR: Enrich marketing attributes
                        allotted_time:
                          type:
                            - object
                            - 'null'
                          description: 'Allotted time for the step (e.g. `{"value": 1, "unit": "days"}` or nullable)'
                          required:
                            - value
                            - unit
                          properties:
                            value:
                              type: integer
                              description: Amount of time
                              example: 1
                            unit:
                              type: string
                              description: Time unit (days)
                              example: days
                          example:
                            value: 3
                            unit: days
                        channels_and_locales:
                          type: object
                          description: Step configuration for channels and locales
                          additionalProperties:
                            type: array
                            items:
                              type: string
                              description: Locale code
                          example:
                            ecommerce:
                              - en_US
                            mobile:
                              - en_US
                              - fr_FR
                    example:
                      - 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
              examples:
                example:
                  summary: Example of a workflow
                  value:
                    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
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '404':
          description: |
            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.
          content: *ref_25
        '406':
          description: |
            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.
          content: *ref_13
  /api/rest/v1/workflows/steps/{uuid}/assignees:
    get:
      summary: Get list of workflow step assignees
      operationId: get_workflows_steps__uuid__assignees
      tags:
        - Workflows
      description: Retrieves a paginated list of assignees for a specified workflow step.
      parameters:
        - in: path
          name: uuid
          description: |
            The `uuid` 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.
          required: true
          schema: *ref_21
          example: 123e4567-e89b-12d3-a456-426614174000
        - in: query
          name: page
          description: |
            The `page` query parameter allows you to 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](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_8
          example: 1
        - in: query
          name: limit
          description: |
            The `limit` query parameter allows you to 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](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_10
          example: 100
      responses:
        '200':
          description: Paginated list of assignees for a specified workflow step.
          content:
            application/json:
              schema:
                type: object
                allOf:
                  - type: object
                    properties: *ref_36
                properties:
                  _embedded:
                    type: object
                    properties:
                      items:
                        type: array
                        items:
                          type: object
                          required:
                            - uuid
                            - first_name
                            - last_name
                            - email
                          properties:
                            uuid:
                              type: string
                              description: Assignee UUID
                              format: uuid
                              example: 25566245-55c3-42ce-86d9-8610ac459fa8
                            first_name:
                              type: string
                              description: Assignee first name
                              example: John
                            last_name:
                              type: string
                              description: Assignee last name
                              example: Doe
                            email:
                              type: string
                              description: Assignee email address
                              example: john@example.com
                    example:
                      items:
                        - uuid: 25566245-55c3-42ce-86d9-8610ac459fa8
                          first_name: John
                          last_name: Doe
                          email: john@example.com
              examples:
                example:
                  summary: Example of a paginated list of workflow step assignees
                  value:
                    _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
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '406':
          description: |
            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.
          content: *ref_13
  /api/rest/v1/workflows/tasks:
    get:
      summary: Get list of workflow tasks
      operationId: get_workflows_tasks
      tags:
        - Workflow tasks
      description: Retrieves a paginated list of tasks for a specified workflow step.
      parameters:
        - name: step_uuid
          in: query
          required: true
          schema:
            type: string
            format: uuid
          description: UUID of the workflow step
        - name: search
          in: query
          required: false
          description: |
            Stringified JSON to filter tasks, for more details see the [Filters](https://api.akeneo.com/documentation/filter.html#filter-on-workflow-tasks) section.
          schema:
            type: string
          examples:
            search-example-1:
              summary: Search for products with specific uuids
              value: '{"product_uuids":[{"operator":"IN","value":["123e4567-e89b-12d3-a456-426614174000"]}]}'
            search-example-2:
              summary: Search for product models with specific codes
              value: '{"product_model_codes":[{"operator":"IN","value":["amor", "apollon]}]}'
        - name: with_attributes
          in: query
          required: false
          schema:
            type: boolean
            default: false
          description: Whether to include task attributes in the response
        - in: query
          name: page
          description: |
            The `page` query parameter allows you to 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](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_8
          example: 1
        - in: query
          name: limit
          description: |
            The `limit` query parameter allows you to 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](https://api.akeneo.com/documentation/pagination.html) section for more details.
          required: false
          schema: *ref_10
          example: 100
      responses:
        '200':
          description: Paginated list of tasks for a specified workflow step.
          content:
            application/json:
              schema:
                type: object
                allOf:
                  - type: object
                    properties: *ref_36
                properties:
                  _embedded:
                    type: object
                    properties:
                      items:
                        type: array
                        items:
                          type: object
                          required:
                            - uuid
                            - status
                            - created_at
                            - due_date
                            - rejected
                          oneOf:
                            - required:
                                - product
                            - required:
                                - product_model
                          properties:
                            uuid:
                              type: string
                              description: Task UUID
                              format: uuid
                              example: 8f6c2d18-fbd4-4f7e-81df-cb3dc368fe07
                            status:
                              type: string
                              description: Task status
                              example: in_progress
                            created_at:
                              type: string
                              format: date-time
                              description: Task creation date
                              example: '2024-02-22T17:31:00Z'
                            product:
                              type: object
                              properties:
                                uuid:
                                  type: string
                                  format: uuid
                                  description: Product UUID
                                  example: 7108ee60-a1ea-4fe1-baca-b39909e23d24
                            product_model:
                              type: object
                              properties:
                                code:
                                  type: string
                                  description: Product model code
                                  example: a-product-model-code
                            due_date:
                              type: string
                              format: date-time
                              description: Due date
                              example: '2024-03-31T18:00:00Z'
                            rejected:
                              type: boolean
                              description: Whether the task is rejected
                              example: true
                            pending_attributes:
                              type: array
                              description: List of attribute codes for the task that are awaiting completion or require user input. This field is only included when `with_attributes=true`.
                              items:
                                type: string
                              example:
                                - size
                                - material
                                - brand
                    example:
                      items:
                        - 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
                          pending_attributes:
                            - product_description
                            - weight
                            - color
                        - 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
                          pending_attributes:
                            - size
                            - material
                            - brand
              examples:
                example:
                  summary: Example of a paginated list of workflow step tasks
                  value:
                    _links:
                      self:
                        href: https://demo.akeneo.com/api/rest/v1/workflows/tasks?step_uuid=f626d0e5-84a5-41fc-8215-65508c253edb&page=1&limit=10
                      first:
                        href: https://demo.akeneo.com/api/rest/v1/workflows/tasks?step_uuid=f626d0e5-84a5-41fc-8215-65508c253edb&page=1&limit=10
                      next:
                        href: https://demo.akeneo.com/api/rest/v1/workflows/tasks?step_uuid=f626d0e5-84a5-41fc-8215-65508c253edb&page=2&limit=10
                    current_page: 1
                    _embedded:
                      items:
                        - 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
                        - 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
        '400':
          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.
          content: *ref_33
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '415':
          description: |
            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.
          content: *ref_6
  /api/rest/v1/workflows/tasks/{uuid}:
    patch:
      summary: Update a Workflow Task's Status (Approve, Reject, Complete)
      operationId: patch_workflows_tasks__uuid_
      tags:
        - Workflow tasks
      description: |
        Performs a state transition on 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` and provide `send_back_to_step_uuid`.
      parameters:
        - in: path
          name: uuid
          description: |
            The `uuid` 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.
          required: true
          schema: *ref_21
          example: 123e4567-e89b-12d3-a456-426614174000
      requestBody:
        description: The action to perform on the task, determined by the payload.
        content:
          application/json:
            schema:
              oneOf:
                - type: object
                  description: Payload for completing an enrichment task.
                  properties:
                    status:
                      type: string
                      enum:
                        - completed
                  required:
                    - status
                - type: object
                  description: Payload for approving a review task.
                  properties:
                    status:
                      type: string
                      enum:
                        - approved
                  required:
                    - status
                - type: object
                  description: Payload for rejecting a review task.
                  properties:
                    status:
                      type: string
                      description: Must be 'rejected' for this action.
                      enum:
                        - rejected
                    send_back_to_step_uuid:
                      type: string
                      format: uuid
                      description: The UUID of the workflow step to which the task should be returned.
                      example: 123e4567-e89b-12d3-a456-426614174000
                  required:
                    - status
                    - send_back_to_step_uuid
            examples:
              completeTask:
                summary: Example for Completing a Task
                value:
                  status: completed
              approveTask:
                summary: Example for Approving a Task
                value:
                  status: approved
              rejectTask:
                summary: Example for Rejecting a Task
                value:
                  status: rejected
                  send_back_to_step_uuid: 123e4567-e89b-12d3-a456-426614174000
      responses:
        '204':
          description: |
            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: *ref_24
        '400':
          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.
          content: *ref_33
        '401':
          description: |
            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.
          content: *ref_3
        '403':
          description: |
            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.
          content: *ref_4
        '415':
          description: |
            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.
          content: *ref_6
        '422':
          description: Unprocessable entity.
          content:
            application/json:
              schema:
                type: object
                required:
                  - code
                  - message
                properties:
                  code:
                    type: integer
                    description: HTTP status code
                    example: 422
                  message:
                    type: string
                    description: Description of the validation error
                    example: Cannot update task, provided status is not supported.
              examples:
                status-not-supported:
                  summary: Provided status is not supported
                  value:
                    code: 422
                    message: Cannot update task, provided status is not supported.
                send-back-to-step-not-rpovided:
                  summary: send_back_to_step not provided
                  value:
                    code: 422
                    message: Cannot reject task, send_back_to_step_uuid is not provided.
components:
  securitySchemes:
    basicToken:
      scheme: basic
      type: http
      description: |
        HTTP Basic authentication using user credentials.
        [More information here](https://api.akeneo.com/documentation/authentication.html)
    bearerToken:
      scheme: bearer
      type: http
      description: |
        Bearer token obtained via the "Password Grant" flow. 
        This token authenticates a user, is valid for one hour, and can be refreshed using a refresh token.
        [More information here](https://api.akeneo.com/documentation/authentication.html)
    appToken:
      scheme: bearer
      type: http
      description: |
        Bearer token for Apps, obtained via the OAuth 2.0 flow.
        This permanent token allows an application to make requests on behalf of a user.
        [More information here](https://api.akeneo.com/apps/authentication-and-authorization.html)
  schemas:
    product_read:
      type: object
      allOf: *ref_19
      properties: *ref_20
    product_model_read:
      type: object
      allOf: *ref_38
      properties: *ref_39
