Mirakl Offers API

The Offers API from Mirakl — 16 operation(s) for offers.

OpenAPI Specification

mirakl-offers-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  description: '{% partial file="/partial-content/product/connect-channel-platform/rest/connect/openapi-description.md" /%}'
  title: Mirakl Connect Channel Platform APIs Carriers Offers API
  version: ''
servers:
- description: Connect Channel Platform API
  url: https://miraklconnect.com/api/channel-platform
tags:
- name: Offers
paths:
  /api/offers/imports:
    post:
      description: '<div class="extension-title">Description</div>


        Returns the import identifier to track the status of the import.


        <div class="api-description-extension">

        <div class="extension-title">Call Frequency</div>


        <div class="recommended-call-frequency">Recommended usage: Every 5 minutes with offers only, every hour with offers and products, for each seller</div>

        <div class="max-call-frequency">Maximum usage: Once per minute with offers only, once every 15 minutes with offers and products, for each seller</div>

        </div>'
      operationId: OF01
      parameters: []
      requestBody:
        content:
          multipart/form-data:
            examples:
              multipart/form-data-0:
                summary: text/csv payload
                value:
                  file: 'sku;product-id;product-id-type;description;internal-description;price-additional-info;quantity;min-quantity-alert;state;available-start-date;available-end-date;logistic-class;update-delete;discount-start-date;discount-end-date;price;discount-price;discount-ranges;price-ranges;discount-start-date[channel=FR];discount-end-date[channel=FR];price[channel=FR];discount-price[channel=FR];discount-ranges[channel=FR];prices-ranges[channel=FR];discount-start-date[channel=CA];discount-end-date[channel=CA];price[channel=CA];discount-price[channel=CA];discount-ranges[channel=CA];prices-ranges[channel=CA];leadtime-to-ship;ecotax;gift-wrap;min-quantity-ordered;producer-id[FR-DEA];eco-contribution-amount[FR-DEA];producer-id[DE-WEEE];eco-contribution-amount[DE-WEEE]

                    OFFER_SKU_004;MKP100000000037254;SKU;My Offer Description n∞1;My Internal description 1;My price Additional innformations;1000000;20;11;2017-02-20T10:45:53+01;2017-04-30T10:45:53+01;S;update;2017-02-22T10:45:53+01;2017-04-30T10:45:53+01;110.52;108,56;;5|109.20,10|108.736;2017-02-22T10:45:53+01;2017-03-31T10:45:53+01;105.56;102,36;;5|104.56,10|103.27;2017-02-22T10:45:53+01;2017-03-31T10:45:53+01;190.23;175,36;;5|182.58,10|181.27;15;1;true;1;FR123456_89ABCD;3.59;ProducerID1;0.99

                    '
                  import_mode: NORMAL
                  operator_format: true
                  shop: 0
                  with_products: true
              multipart/form-data-auto:
                summary: Complete example with value types (multipart/form-data)
                value:
                  file: string
                  import_mode: NORMAL
                  operator_format: true
                  shop: 0
                  with_products: true
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
                  description: 'Import file (CSV or XML or XLSX) to upload. Use <code>multipart/form-data</code> with name <code>file</code>.<br/> Csv format:<br/><pre>"sku";"product-id";"product-id-type";"description";"internal-description";"price";"price-additional-info";"quantity";"min-quantity-alert";"state";"available-start-date";"available-end-date";"discount-price";"discount-start-date";"discount-end-date";"discount-ranges";"allow-quote-requests";"leadtime-to-ship";"min-order-quantity";"max-order-quantity";"package-quantity";"update-delete";"price-ranges";"ecotax";"gift-wrap";"min-quantity-ordered"</pre><br/><br/>If you use specific sales channels, use: <pre>"price[channel=channel code]";"discount-price[channel=channel code]";"discount-start-date[channel=channel code]";"discount-end-date[channel=channel code]";"discount-ranges[channel=channel code]";"price-ranges[channel=channel code]"</pre><br/>If you use the price per measurement unit feature, use <code>pricing-unit</code> to specify the unit corresponding to the submitted <code>price</code>.<br/><br/>If US Tax options are activated on the platform, use: <code>product-tax-code</code> to facilitate tax calculations.<br/><br/>If <i>Data collection related to circular economy regulations</i> is enabled, use:<br/><pre>"producer-id[EPR category code]"; "eco-contribution-amount[EPR category code]"</pre>EPR category code must be one of: <pre>FR-AGROPACK, FR-ASL, FR-DASRIPAT, FR-DBPS, FR-DDS, FR-DEA, FR-DEEE, FR-DISPMED, FR-DIY, FR-EMBM, FR-GF, FR-JOUETS, FR-LUB, FR-MH, FR-MNU, FR-PA, FR-PAP, FR-PCHIM, FR-PMCB, FR-PNEU, FR-TABAC, FR-TLC, FR-VEHICULE, FR-VHU, DE-BATTG, DE-PACK, DE-WEEE, ES-PACK, ES-GPACK, ES-WEEE</pre><br/>'
                import_mode:
                  type: string
                  description: "Enum: `\"NORMAL\"`, `\"REPLACE\"`\n\n<details>\n  <summary>See deprecated values</summary>\n\n  Deprecated values: `\"PARTIAL_UPDATE\"`\n</details>\n"
                operator_format:
                  type: boolean
                  default: false
                  description: Force the use of the operator product format
                shop:
                  type: integer
                  format: int64
                  description: Shop Identifier
                with_products:
                  type: boolean
                  default: false
                  description: This file also contains product information
              required:
              - file
              - import_mode
              - shop
      responses:
        '201':
          content:
            application/json:
              examples:
                application/json-0:
                  summary: Example with business values (application/json)
                  value:
                    import_id: 2035
                    product_import_id: 2036
                application/json-auto:
                  summary: Complete example with value types (application/json)
                  value:
                    import_id: 0
                    product_import_id: 0
              schema:
                type: object
                $ref: '#/components/schemas/OF01_Response_201'
          description: Created
          headers:
            Location:
              description: Pre-calculated URL to call to get the import status
              explode: false
              schema: {}
              style: simple
      security:
      - Operator-Bearer-Token: []
      - OAuth-2: []
      summary: OF01 - Import a file to create, update or delete offers
      tags:
      - Offers
      x-codeSamples:
      - lang: cURL
        source: "curl -i -X POST \\\n  https://your-instance.mirakl.net/api/offers/imports \\\n  -H 'Content-Type: multipart/form-data' \\\n  -F 'file=@path/to/file' \\\n  -F 'import_mode=\"\\\"NORMAL\\\"\";type=application/json' \\\n  -F 'operator_format=\"true\";type=application/json' \\\n  -F 'shop=\"0\";type=application/json' \\\n  -F 'with_products=\"true\";type=application/json'\n"
    get:
      description: '<div class="api-description-extension">

        <div class="extension-title">Call Frequency</div>


        <div class="recommended-call-frequency">Recommended usage: Every 5 minutes</div>

        <div class="max-call-frequency">Maximum usage: Once per minute</div>

        <div class="extension-title">Pagination</div>


        <p>This resource supports seek pagination (<a href="#section/Seek-pagination-and-sort">see documentation</a>)</p>


        <div class="extension-title">Sort fields</div>


        <code>sort</code> field can have the following values:<ul><li><b>dateCreated</b> (Default) - Sort by creation date (desc by default)</li></ul>


        </div>'
      operationId: OF04
      parameters:
      - description: Shop identifier
        explode: true
        in: query
        name: shop_id
        required: false
        schema:
          type: integer
          format: int64
        style: form
      - description: Start creation date for filtering
        explode: true
        in: query
        name: start_date
        required: false
        schema:
          type: string
          format: date-time
        style: form
      - description: End creation date for filtering
        explode: true
        in: query
        name: end_date
        required: false
        schema:
          type: string
          format: date-time
        style: form
      - description: Offer import status
        explode: true
        in: query
        name: status
        required: false
        schema:
          type: string
          enum:
          - WAITING_SYNCHRONIZATION_PRODUCT
          - WAITING
          - RUNNING
          - COMPLETE
          - FAILED
        style: form
      - description: Offer import mode
        explode: true
        in: query
        name: mode
        required: false
        schema:
          type: string
          enum:
          - NORMAL
          - REPLACE
        style: form
      - description: List of offer import origins for filtering. This parameter can be supplied multiple times (origins=API&origins=FTP...).
        explode: true
        in: query
        name: origins
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - API
            - FTP
            - SFTP
            - HTTP
            - HTTPS
            - FRONT
            - PENDING_OFFERS
        style: form
      responses:
        '200':
          content:
            application/json:
              examples:
                application/json-0:
                  summary: Example with business values (application/json)
                  value:
                    data:
                    - date_created: '2021-05-11T14:50:25Z'
                      has_error_report: false
                      import_id: 2029
                      lines_in_error: 0
                      lines_in_pending: 0
                      lines_in_success: 8
                      lines_read: 8
                      mode: NORMAL
                      offer_deleted: 3
                      offer_inserted: 3
                      offer_updated: 2
                      origin: FRONT
                      shop_id: 123
                      status: COMPLETE
                    - date_created: '2021-05-11T14:50:25Z'
                      has_error_report: true
                      import_id: 2028
                      lines_in_error: 1
                      lines_in_pending: 0
                      lines_in_success: 9
                      lines_read: 10
                      mode: NORMAL
                      offer_deleted: 3
                      offer_inserted: 3
                      offer_updated: 3
                      origin: API
                      reason_status: A parsing error has occurred at line 10
                      shop_id: 456
                      status: WAITING
                    next_page_token: bGltaXQ9MiZhZnRlcj0yMDIxLTA1LTExJTIwMTY6NTA6MjUuNDczJnNvcnQ9ZGF0ZUNyZWF0ZWQsREVTQw==
                    previous_page_token: null
                application/json-auto:
                  summary: Complete example with value types (application/json)
                  value:
                    data:
                    - date_created: '2023-03-28T09:34:42Z'
                      has_error_report: true
                      import_id: 0
                      lines_in_error: 0
                      lines_in_pending: 0
                      lines_in_success: 0
                      lines_read: 0
                      mode: NORMAL
                      offer_deleted: 0
                      offer_inserted: 0
                      offer_updated: 0
                      origin: API
                      reason_status: string
                      shop_id: 0
                      status: WAITING_SYNCHRONIZATION_PRODUCT
                    next_page_token: string
                    previous_page_token: string
              schema:
                type: object
                $ref: '#/components/schemas/OF04_Response_200'
          description: OK
      security:
      - Operator-Bearer-Token: []
      - OAuth-2: []
      summary: OF04 - Get information and statistics about offer imports
      tags:
      - Offers
  /api/offers/imports/{import}:
    get:
      description: '<div class="api-description-extension">

        <div class="extension-title">Call Frequency</div>


        <div class="recommended-call-frequency">Recommended usage: After each OF01 call, every 5 minutes</div>

        <div class="max-call-frequency">Maximum usage: Once per minute</div>

        </div>'
      operationId: OF02
      parameters:
      - description: Import identifier
        explode: false
        in: path
        name: import
        required: true
        schema:
          type: integer
          format: int64
        style: simple
      responses:
        '200':
          content:
            application/json:
              examples:
                application/json-0:
                  summary: Example with business values (application/json)
                  value:
                    date_created: '2019-04-01T15:16:31Z'
                    has_error_report: false
                    import_id: 2035
                    lines_in_error: 0
                    lines_in_pending: 0
                    lines_in_success: 1
                    lines_read: 1
                    mode: NORMAL
                    offer_deleted: 0
                    offer_inserted: 1
                    offer_updated: 0
                    status: COMPLETE
                application/json-auto:
                  summary: Complete example with value types (application/json)
                  value:
                    date_created: '2023-03-28T09:34:42Z'
                    has_error_report: true
                    import_id: 0
                    lines_in_error: 0
                    lines_in_pending: 0
                    lines_in_success: 0
                    lines_read: 0
                    mode: NORMAL
                    offer_deleted: 0
                    offer_inserted: 0
                    offer_updated: 0
                    reason_status: string
                    status: WAITING_SYNCHRONIZATION_PRODUCT
                    type: AUTO
              schema:
                type: object
                $ref: '#/components/schemas/OF02_Response_200'
          description: OK
      security:
      - Operator-Bearer-Token: []
      - OAuth-2: []
      summary: OF02 - Get information and statistics about an offer import
      tags:
      - Offers
  /api/offers/imports/{import}/error_report:
    get:
      description: '<div class="extension-title">Description</div>


        This API returns a CSV, XLSX or XML file, depending on the file format provided by the seller.


        <div class="api-description-extension">

        <div class="extension-title">Call Frequency</div>


        <div class="recommended-call-frequency">Recommended usage: After each OF02 call, every 5 minutes</div>

        <div class="max-call-frequency">Maximum usage: Once per minute</div>

        </div>'
      operationId: OF03
      parameters:
      - description: Import identifier
        explode: false
        in: path
        name: import
        required: true
        schema:
          type: integer
          format: int64
        style: simple
      responses:
        '200':
          content:
            application/octet-stream:
              examples:
                application/octet-stream-0:
                  summary: Example with business values (application/octet-stream)
                  value: '"sku";"product-id";"product-id-type";"description";"internal-description";"price-additional-info";"quantity";"min-quantity-alert";"state";"available-start-date";"available-end-date";"logistic-class";"update-delete";"discount-start-date";"discount-end-date";"price";"discount-price";"discount-ranges";"price-ranges";"discount-start-date[channel=FR]";"discount-end-date[channel=FR]";"price[channel=FR]";"discount-price[channel=FR]";"discount-ranges[channel=FR]";"prices-ranges[channel=FR]";"discount-start-date[channel=CA]";"discount-end-date[channel=CA]";"price[channel=CA]";"discount-price[channel=CA]";"discount-ranges[channel=CA]";"prices-ranges[channel=CA]";"leadtime-to-ship";"error-line";"error-message"

                    "OFFER_SKU_004";"MKP100000000195360";"SKU";"My Offer Description n°1";"My Internal description 1";"My price Additional innformations";"1000000";"20";"11";"2017-02-20T10:45:53+01";"2017-04-30T10:45:53+01";"S";"update";"2017-02-22T10:45:53+01";"2017-04-30T10:45:53+01";"110.52";"108,56";"";"5|109.20,10|108.736";"2017-02-22T10:45:53+01";"2017-03-31T10:45:53+01";"105.56";"102,36";"";"5|104.56,10|103.27";"2017-02-22T10:45:53+01";"2017-03-31T10:45:53+01";"190.23";"175,36";"";"5|182.58,10|181.27";"15";"2";"The product does not exist"

                    '
                application/octet-stream-auto:
                  summary: Complete example with value types (application/octet-stream)
                  value: string
              schema:
                type: string
                format: binary
          description: OK
      security:
      - Operator-Bearer-Token: []
      - OAuth-2: []
      summary: OF03 - Get the error report file for an offer import
      tags:
      - Offers
  /api/offers/{offer}:
    get:
      description: '<div class="api-description-extension">

        <div class="extension-title">Call Frequency</div>


        <div class="recommended-call-frequency">Recommended usage: At each offer page display</div>

        <div class="max-call-frequency">Maximum usage: At each offer page display</div>

        <div class="extension-title">Read More</div>


        <ul><li><a href="https://help.mirakl.com/bundle/customers/page/topics/Mirakl/integrating_mirakl/integrate_price_approval.htm">If the "Price approval" option is activated, read this page</a></li><li><a href="https://help.mirakl.com/bundle/customers/page/topics/Mirakl/integration_guide/adv_pricing_inte/adv_pricing_offer_apis.htm#Aboutprioritizationrulesforpricefields">Price prioritization for Advanced Pricing</a></li></ul><div class="extension-title">Localization</div>


        <p>This resource supports <code>locale</code> parameter (<a href="#section/Locale">see documentation</a>)</p><p>Localized output fields will be highlighted with an icon: <span class="flag"></span></p></div>'
      operationId: OF22
      parameters:
      - description: Offer identifier
        explode: false
        in: path
        name: offer
        required: true
        schema:
          type: integer
          format: int64
        style: simple
      - description: Filter used to pick prices on a specific channel
        explode: true
        in: query
        name: pricing_channel_code
        required: false
        schema:
          type: string
        style: form
      - description: For Customer Pricing users only. Customer identifier code the API will use to return all prices and applicable price for this organization. Ignored if value does not exist.
        explode: true
        in: query
        name: pricing_customer_organization_id
        required: false
        schema:
          type: string
        style: form
      responses:
        '200':
          content:
            application/json:
              examples:
                application/json-0:
                  summary: Example with business values for single channel pricing users (application/json)
                  value:
                    active: true
                    all_prices:
                    - channel_code: null
                      discount_end_date: '2019-04-29T22:00:00Z'
                      discount_start_date: '2019-03-31T22:00:00Z'
                      price: 49
                      unit_discount_price: 49
                      unit_origin_price: 50
                      volume_prices:
                      - price: 49
                        quantity_threshold: 1
                        unit_discount_price: 49
                        unit_origin_price: 50
                      - price: 44
                        quantity_threshold: 50
                        unit_discount_price: 44
                        unit_origin_price: 45
                      - price: 39
                        quantity_threshold: 100
                        unit_discount_price: 39
                        unit_origin_price: 40
                    - channel_code: US
                      context:
                        channel_codes:
                        - US
                      discount_end_date: '2019-04-29T22:00:00Z'
                      discount_start_date: '2019-03-31T22:00:00Z'
                      price: 59
                      unit_discount_price: 59
                      unit_origin_price: 60
                      volume_prices:
                      - price: 59
                        quantity_threshold: 1
                        unit_discount_price: 59
                        unit_origin_price: 60
                      - price: 49
                        quantity_threshold: 50
                        unit_discount_price: 49
                        unit_origin_price: 50
                      - price: 44
                        quantity_threshold: 100
                        unit_discount_price: 44
                        unit_origin_price: 45
                    - channel_code: US
                      context:
                        channel_codes:
                        - US
                        customer_group_ids:
                        - Group2
                        - Group3
                        customer_organization_ids:
                        - Org1
                        end_date: '2023-12-31T23:59:59Z'
                        start_date: '2023-01-01T00:00:00Z'
                      discount_end_date: '2023-01-31T22:00:00Z'
                      discount_start_date: '2023-03-31T22:00:00Z'
                      price: 29
                      unit_discount_price: 29
                      unit_origin_price: 30
                      volume_prices:
                      - price: 29
                        quantity_threshold: 1
                        unit_discount_price: 29
                        unit_origin_price: 30
                      - price: 19
                        quantity_threshold: 20
                        unit_discount_price: 19
                        unit_origin_price: 20
                      - price: 14
                        quantity_threshold: 100
                        unit_discount_price: 14
                        unit_origin_price: 15
                    allow_quote_requests: false
                    applicable_pricing:
                      channel_code: US
                      context:
                        channel_codes:
                        - US
                        customer_group_ids:
                        - Group2
                        - Group3
                        customer_organization_ids:
                        - Org1
                        end_date: '2023-12-31T23:59:59Z'
                        start_date: '2023-01-01T00:00:00Z'
                      discount_end_date: '2023-01-31T22:00:00Z'
                      discount_start_date: '2023-03-31T22:00:00Z'
                      price: 29
                      unit_discount_price: 29
                      unit_origin_price: 30
                      volume_prices:
                      - price: 29
                        quantity_threshold: 1
                        unit_discount_price: 29
                        unit_origin_price: 30
                      - price: 19
                        quantity_threshold: 20
                        unit_discount_price: 19
                        unit_origin_price: 20
                      - price: 14
                        quantity_threshold: 100
                        unit_discount_price: 14
                        unit_origin_price: 15
                    available_end_date: '2019-09-29T22:00:00Z'
                    available_start_date: '2019-03-31T22:00:00Z'
                    category_code: '3016100'
                    category_label: Shoes
                    channels:
                    - FR
                    - US
                    currency_iso_code: USD
                    description: Offer for product MKP100000000154824
                    discount:
                      discount_price: null
                      end_date: '2019-04-29T22:00:00Z'
                      origin_price: 50
                      ranges:
                      - price: 49
                        quantity_threshold: 1
                      - price: 44
                        quantity_threshold: 50
                      - price: 39
                        quantity_threshold: 100
                      start_date: '2019-03-31T22:00:00Z'
                    eco_contributions:
                    - eco_contribution_amount: 3.59
                      epr_category_code: FR-DEA
                      producer_id: FR123456_89ABCD
                    - eco_contribution_amount: 0.99
                      epr_category_code: DE-WEEE
                      producer_id: ProducerID1
                    fulfillment:
                      center:
                        code: DEFAULT
                    inactivity_reasons:
                    - SHOP_NOT_OPEN
                    - ZERO_QUANTITY
                    leadtime_to_ship: 10
                    logistic_class:
                      code: M
                      label: Medium
                    max_order_quantity: 5
                    min_order_quantity: 1
                    min_quantity_alert: 1
                    min_shipping_price: 0
                    min_shipping_price_additional: 0
                    min_shipping_type: CLC
                    min_shipping_zone: DOM1
                    model: MARKETPLACE
                    offer_additional_fields:
                    - code: ecotax
                      type: NUMERIC
                      value: '20'
                    - code: gift-wrap
                      type: BOOLEAN
                      value: 'true'
                    - code: min-quantity-ordered
                      type: NUMERIC
                      value: '5'
                    offer_id: 2135
                    package_quantity: 1
                    price: 49
                    price_additional_info: Apply Discount prices
                    product_brand: Capture
                    product_description: 'Cobalt, fuchsia, leopard print: imitation suede upper. Synthetic lining, upper and sole. Almond toe court with cushioned sole. Heel height 9cm.'
                    product_references:
                    - reference: '9400016774345'
                      reference_type: EAN
                    product_sku: MKP100000000154824
                    product_title: Capture Coloured Court Shoe - 10
                    quantity: 1000000
                    shipping_deadline: '2019-09-01T23:59:59.999Z'
                    shop_grade: 4
                    shop_id: 2000
                    shop_name: ACME SHOP
                    shop_sku: S2002
                    state_code: '11'
                    total_price: 49
                    warehouses:
                    - code: WAREHOUSE_001
                      quantity: 750000
                    - code: WAREHOUSE_002
                      quantity: 250000
                application/json-1:
                  summary: Example with business values for multi channel pricing users (application/json)
                  value:
                    active: true
                    all_prices:
                    - channel_code: null
                      discount_end_date: '2019-04-29T22:00:00Z'
                      discount_start_date: '2019-03-31T22:00:00Z'
                      price: 49
                      unit_discount_price: 49
                      unit_origin_price: 50
                      volume_prices:
                      - price: 49
                        quantity_threshold: 1
                        unit_discount_price: 49
                        unit_origin_price: 50
                      - price: 44
                        quantity_threshold: 50
                        unit_discount_price: 44
                        unit_origin_price: 45
                      - price: 39
                        quantity_threshold: 100
                        unit_discount_price: 39
                        unit_origin_price: 40
                    - channel_code: null
                      context:
                        channel_codes:
                        - US
                      discount_end_date: '2019-04-29T22:00:00Z'
                      discount_start_date: '2019-03-31T22:00:00Z'
                      price: 59
                      unit_discount_price: 59
                      unit_origin_price: 60
                      volume_prices:
                      - price: 59
                        quantity_threshold: 1
                        unit_discount_price: 59
                        unit_origin_price: 60
                      - price: 49
                        quantity_threshold: 50
                        unit_discount_price: 49
                        unit_origin_price: 50
                      - price: 44
                        quantity_threshold: 100
                        unit_discount_price: 44
                        unit_origin_price: 45
                    - channel_code: null
                      context:
                        channel_codes:
                        - US
                        - FR
                        customer_group_ids:
                        - Group2
                        - Group3
                        customer_organization_ids:
                        - Org1
                        end_date: '2023-12-31T23:59:59Z'
                        start_date: '2023-01-01T00:00:00Z'
                      discount_end_date: '2023-01-31T22:00:00Z'
                      discount_start_date: '2023-03-31T22:00:00Z'
                      price: 29
                      unit_discount_price: 29
                      unit_origin_price: 30
                      volume_prices:
                      - price: 29
                        quantity_threshold: 1
                        unit_discount_price: 29
                        unit_origin_price: 30
                      - price: 19
                        quantity_threshold: 20
                        unit_discount_price: 19
                        unit_origin_price: 20
                      - price: 14
                        quantity_threshold: 100
                        unit_discount_price: 14
                        unit_origin_price: 15
                    allow_quote_requests: false
                    applicable_pricing:
                      channel_code: null
                      context:
                        channel_codes:
                        - US
                        - FR
                        customer_group_ids:
                        - Group2
                        - Group3
                        customer_organization_ids:
                        - Org1
                        end_date: '2023-12-31T23:59:59Z'
                        start_date: '2023-01-01T00:00:00Z'
                      discount_end_date: '2023-01-31T22:00:00Z'
                      discount_start_date: '2023-03-31T22:00:00Z'
                      price: 29
                      unit_discount_price: 29
                      unit_origin_price: 30
                      volume_prices:
                      - price: 29
                        quantity_threshold: 1
                        unit_discount_price: 29
                        unit_origin_price: 30
                      - price: 19
                        quantity_threshold: 20
                        unit_discount_price: 19
                        unit_origin_price: 20
                      - price: 14
                        quantity_threshold: 100
                        unit_discount_price: 14
                        unit_origin_price: 15
                    available_end_date: '2019-09-29T22:00:00Z'
                    available_start_date: '2019-03-31T22:00:00Z'
                    category_code: '3016100'
                    category_label: Shoes
                    channels:
                    - FR
               

# --- truncated at 32 KB (320 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/mirakl/refs/heads/main/openapi/mirakl-offers-api-openapi.yml