{
  "components": {
    "examples": {
      "200-admin-daily-chain": {
        "summary": "Exemple de récompenses quotidiennes",
        "value": {
          "date_end": "2025-04-25T18:16:00+05:00",
          "date_start": "2023-04-15T18:16:00+05:00",
          "description": {
            "en": "Daily reward short description"
          },
          "id": 3,
          "is_enabled": true,
          "is_recurrent": false,
          "name": {
            "en": "Daily reward",
            "ru": "Ежедневная награда"
          },
          "number_of_steps": 3,
          "order": 1,
          "steps": [
            {
              "items": [
                {
                  "description": {
                    "en": "Allows to see the stars",
                    "ru": "Позволяет увидеть звезды"
                  },
                  "image_url": "https://picture.bundle-picture.png",
                  "item_id": 9010,
                  "name": {
                    "en": "Telescope",
                    "ru": "Телескоп"
                  },
                  "quantity": 1,
                  "sku": "telescope",
                  "type": "virtual_good"
                },
                {
                  "description": {
                    "en": "Heal 10% of your health",
                    "ru": "Лечит 10% здоровья"
                  },
                  "image_url": "https://picture.bundle-picture.png",
                  "item_id": 9012,
                  "name": {
                    "en": "Healing potion",
                    "ru": "Зелье лечения"
                  },
                  "quantity": 2,
                  "sku": "health_potion",
                  "type": "virtual_good"
                }
              ],
              "step_id": 7,
              "step_number": 1
            },
            {
              "items": [
                {
                  "description": {
                    "en": "Allows to see the stars",
                    "ru": "Позволяет увидеть звезды"
                  },
                  "image_url": "https://picture.bundle-picture.png",
                  "item_id": 9010,
                  "name": {
                    "en": "Telescope",
                    "ru": "Телескоп"
                  },
                  "quantity": 5,
                  "sku": "telescope",
                  "type": "virtual_good"
                }
              ],
              "step_id": 6,
              "step_number": 2
            },
            {
              "items": [
                {
                  "description": {
                    "en": "Allows to see the stars",
                    "ru": "Позволяет увидеть звезды"
                  },
                  "image_url": "https://picture.bundle-picture.png",
                  "item_id": 9010,
                  "name": {
                    "en": "Telescope",
                    "ru": "Телескоп"
                  },
                  "quantity": 2,
                  "sku": "telescope",
                  "type": "virtual_good"
                }
              ],
              "step_id": 5,
              "step_number": 3
            }
          ],
          "type": "calendar_hard"
        }
      },
      "200-admin-daily-chain-list": {
        "summary": "Exemple de liste de récompenses quotidiennes",
        "value": {
          "has_more": false,
          "items": [
            {
              "date_end": "2025-04-25T18:16:00+05:00",
              "date_start": "2023-04-15T18:16:00+05:00",
              "description": {
                "en": "Daily reward short description"
              },
              "id": 1,
              "is_enabled": false,
              "is_recurrent": true,
              "name": {
                "en": "Daily reward",
                "ru": "Ежедневная награда"
              },
              "number_of_steps": 10,
              "order": 1,
              "type": "calendar_hard"
            },
            {
              "date_end": "2025-04-28T15:00:00+08:00",
              "date_start": "2025-04-15T00:00:00+08:00",
              "description": {
                "en": "Monthly daily reward short description"
              },
              "id": 2,
              "is_enabled": false,
              "is_recurrent": true,
              "name": {
                "en": "Monthly daily reward",
                "ru": "Ежедневные награды в цепочке на месяц"
              },
              "number_of_steps": 13,
              "order": 2,
              "type": "calendar_hard"
            },
            {
              "date_end": "2025-05-31T18:16:00+05:00",
              "date_start": "2023-05-01T18:16:00+05:00",
              "description": {
                "en": "Login reward short description"
              },
              "id": 3,
              "is_enabled": true,
              "is_recurrent": true,
              "name": {
                "en": "Login reward"
              },
              "number_of_steps": 7,
              "order": 3,
              "type": "rolling_skippable"
            },
            {
              "date_end": "2025-04-25T18:16:00+05:00",
              "date_start": "2023-04-15T18:16:00+05:00",
              "description": {
                "en": "Daily reward short description"
              },
              "id": 4,
              "is_enabled": true,
              "is_recurrent": true,
              "name": {
                "en": "Daily reward",
                "ru": "Ежедневная награда"
              },
              "number_of_steps": 10,
              "order": 4,
              "type": "calendar_hard"
            },
            {
              "date_end": "2025-11-30T10:00:00+05:00",
              "date_start": "2025-11-01T10:00:00+05:00",
              "description": {
                "en": "Unskippable login reward short description"
              },
              "id": 5,
              "is_enabled": true,
              "is_recurrent": true,
              "name": {
                "en": "Unskippable login reward"
              },
              "number_of_steps": 7,
              "order": 3,
              "type": "rolling_unskippable"
            }
          ],
          "total_items_count": 3
        }
      },
      "200-admin-offer-chain": {
        "summary": "Exemple de chaîne d'offres",
        "value": {
          "attribute_conditions": [
            {
              "attribute": "race",
              "can_be_missing": false,
              "operator": "eq",
              "type": "string",
              "value": "elf"
            },
            {
              "attribute": "level",
              "can_be_missing": false,
              "operator": "ge",
              "type": "number",
              "value": "10"
            },
            {
              "attribute": "10_level_up_date",
              "can_be_missing": false,
              "operator": "le",
              "type": "date",
              "value": "2026-01-01T00:00:00"
            }
          ],
          "date_end": "2025-04-25T18:16:00+05:00",
          "date_start": "2023-04-15T18:16:00+05:00",
          "description": {
            "de": "Personalisierte Angebotskette mit Benutzerattributbedingungen - für Elfen der Stufe 10 und höher, die Stufe 10 spätestens am 2026-01-01 00:00:00 erreicht haben, einschließlich",
            "en": "Personalized offer chain with user attribute conditions - for level 10 and above elves who reached level 10 no later than 2026-01-01 00:00:00, inclusive",
            "fr": "Chaîne d'offres personnalisée avec des conditions d'attribut utilisateur - pour les elfes de niveau 10 et plus qui ont atteint le niveau 10 au plus tard le 2026-01-01 00:00:00, inclus",
            "it": "Catena di offerte personalizzata con condizioni di attributo utente - per elfi di livello 10 e superiore che hanno raggiunto il livello 10 non più tardi del 2026-01-01 00:00:00, inclusi",
            "ru": "Персонализированная цепочка предложений - для эльфов 10 уровня и выше, достигших 10 уровня не позднее 2026-01-01 00:00:00 включительно"
          },
          "id": 3,
          "is_always_visible": false,
          "is_enabled": true,
          "name": {
            "de": "Angebotskette",
            "en": "Offer chain",
            "fr": "Chaîne d'offres",
            "it": "Catena di offerte",
            "ru": "Цепочка"
          },
          "order": 1,
          "recurrent_schedule": null,
          "steps": [
            {
              "is_free": false,
              "items": [
                {
                  "description": {
                    "de": "Ermöglicht das Betrachten der Sterne",
                    "en": "Allows to see the stars",
                    "fr": "Permet de voir les étoiles",
                    "it": "Permette di vedere le stelle",
                    "ru": "Позволяет увидеть звезды"
                  },
                  "image_url": "https://cdn.picture.vg.sku-telescope.png",
                  "item_id": 9010,
                  "name": {
                    "de": "Teleskop",
                    "en": "Telescope",
                    "fr": "Télescope",
                    "it": "Telescopio",
                    "ru": "Телескоп"
                  },
                  "order": 1,
                  "quantity": 1,
                  "sku": "telescope",
                  "type": "virtual_good"
                },
                {
                  "description": {
                    "de": "Heilt 10% deiner Gesundheit",
                    "en": "Heal 10% of your health",
                    "fr": "Soigne 10% de votre santé",
                    "it": "Cura il 10% della tua salute",
                    "ru": "Лечит 10% здоровья"
                  },
                  "image_url": "https://cdn.picture/vg-sku-health_potion.png",
                  "item_id": 9012,
                  "name": {
                    "de": "Heiltrank",
                    "en": "Healing potion",
                    "fr": "Potion de soin",
                    "it": "Pozione curativa",
                    "ru": "Зелье лечения"
                  },
                  "order": 0,
                  "quantity": 2,
                  "sku": "health_potion",
                  "type": "virtual_good"
                }
              ],
              "step_id": 7,
              "step_number": 1
            },
            {
              "is_free": false,
              "items": [
                {
                  "description": {
                    "de": "Ermöglicht das Betrachten der Sterne",
                    "en": "Allows to see the stars",
                    "fr": "Permet de voir les étoiles",
                    "it": "Permette di vedere le stelle",
                    "ru": "Позволяет увидеть звезды"
                  },
                  "image_url": "https://cdn.picture/vg-sku-telescope.png",
                  "item_id": 9010,
                  "name": {
                    "de": "Teleskop",
                    "en": "Telescope",
                    "fr": "Télescope",
                    "it": "Telescopio",
                    "ru": "Телескоп"
                  },
                  "order": 0,
                  "quantity": 5,
                  "sku": "telescope",
                  "type": "virtual_good"
                }
              ],
              "step_id": 6,
              "step_number": 2
            },
            {
              "is_free": true,
              "items": [
                {
                  "description": {
                    "de": "Ermöglicht das Betrachten der Sterne",
                    "en": "Allows to see the stars",
                    "fr": "Permet de voir les étoiles",
                    "it": "Permette di vedere le stelle",
                    "ru": "Позволяет увидеть звезды"
                  },
                  "image_url": "https://cdn.picture/vg-sku-telescope.png",
                  "item_id": 9010,
                  "name": {
                    "de": "Teleskop",
                    "en": "Telescope",
                    "fr": "Télescope",
                    "it": "Telescopio",
                    "ru": "Телескоп"
                  },
                  "order": 0,
                  "quantity": 2,
                  "sku": "telescope",
                  "type": "virtual_good"
                }
              ],
              "step_id": 5,
              "step_number": 3
            }
          ]
        }
      },
      "200-admin-offer-chain-list": {
        "summary": "Exemple de liste de chaînes d'offres",
        "value": {
          "has_more": false,
          "items": [
            {
              "date_end": "2025-04-25T18:16:00+05:00",
              "date_start": "2023-04-15T18:16:00+05:00",
              "description": {
                "de": "Standard-personalisierte Angebotskette für Benutzer, die die Bedingungen anderer personalisierter Ketten nicht erfüllen",
                "en": "Default personalized offer chain for users that do not meet the conditions of other personalized chains",
                "fr": "Chaîne d'offres personnalisée par défaut pour les utilisateurs qui ne répondent pas aux conditions des autres chaînes personnalisées",
                "it": "Catena di offerte personalizzata predefinita per gli utenti che non soddisfano le condizioni di altre catene personalizzate",
                "ru": "Персонализированная цепочка по умолчанию для пользователей, не подходящих под условия других персонализированных цепочек"
              },
              "id": 1,
              "is_always_visible": false,
              "is_enabled": true,
              "name": {
                "de": "Neue personalisierte Standard-Angebotskette",
                "en": "New personalized default offer chain",
                "fr": "Nouvelle chaîne d'offres personnalisée par défaut",
                "it": "Nuova catena di offerte personalizzata predefinita",
                "ru": "Новая персонализированная цепочка предложений по умолчанию"
              },
              "order": 1,
              "recurrent_schedule": null
            },
            {
              "attribute_conditions": [
                {
                  "attribute": "race",
                  "can_be_missing": false,
                  "operator": "eq",
                  "type": "string",
                  "value": "elf"
                },
                {
                  "attribute": "level",
                  "can_be_missing": false,
                  "operator": "ge",
                  "type": "number",
                  "value": "10"
                },
                {
                  "attribute": "10_level_up_date",
                  "can_be_missing": false,
                  "operator": "le",
                  "type": "date",
                  "value": "2026-01-01T00:00:00"
                }
              ],
              "date_end": "2025-04-25T18:16:00+05:00",
              "date_start": "2023-04-15T18:16:00+05:00",
              "description": {
                "de": "Personalisierte Angebotskette mit Benutzerattributbedingungen - für Elfen der Stufe 10 und höher, die Stufe 10 spätestens am 2026-01-01 00:00:00 erreicht haben, einschließlich",
                "en": "Personalized offer chain with user attribute conditions - for level 10 and above elves who reached level 10 no later than 2026-01-01 00:00:00, inclusive",
                "fr": "Chaîne d'offres personnalisée avec des conditions d'attribut utilisateur - pour les elfes de niveau 10 et plus qui ont atteint le niveau 10 au plus tard le 2026-01-01 00:00:00, inclus",
                "it": "Catena di offerte personalizzata con condizioni di attributo utente - per elfi di livello 10 e superiore che hanno raggiunto il livello 10 non più tardi del 2026-01-01 00:00:00, inclusi",
                "ru": "Персонализированная цепочка предложений с условиями по атрибутам пользователя - для эльфов уровня 10 и выше, достигших 10 уровня не позднее 2026-01-01 00:00:00 включительно"
              },
              "id": 2,
              "is_always_visible": false,
              "is_enabled": true,
              "name": {
                "de": "Neue personalisierte Angebotskette",
                "en": "New personalized offer chain",
                "fr": "Nouvelle chaîne d'offres personnalisée",
                "it": "Nuova catena di offerte personalizzata",
                "ru": "Новая персонализированная цепочка предложений"
              },
              "order": 2,
              "recurrent_schedule": null
            },
            {
              "date_end": "2025-04-25T18:16:00+05:00",
              "date_start": "2023-04-15T18:16:00+05:00",
              "description": {
                "de": "Angebotskette, die sich wöchentlich mittwochs um 07:00 Uhr GMT+3 zurücksetzt",
                "en": "Offer chain that resets weekly on Wednesdays at 07:00 GMT+3",
                "fr": "Chaîne d'offres qui se réinitialise chaque semaine le mercredi à 07h00 GMT+3",
                "it": "Catena di offerte che si resetta settimanalmente il mercoledì alle 07:00 GMT+3",
                "ru": "Цепочка предложений, которая сбрасывается еженедельно по средам в 07:00 GMT+3"
              },
              "id": 4,
              "is_always_visible": true,
              "is_enabled": false,
              "name": {
                "de": "Wöchentliche Angebotskette",
                "en": "Weekly offer chain",
                "fr": "Chaîne d'offres hebdomadaire",
                "it": "Catena di offerte settimanale",
                "ru": "Еженедельная цепочка предложений"
              },
              "order": 3,
              "recurrent_schedule": {
                "day_of_week": 3,
                "displayable_reset_next_date": "2018-12-05T07:00:00+03:00",
                "displayable_reset_start_date": "2018-12-05T07:00:00+03:00",
                "interval_type": "weekly",
                "reset_next_date": 1543982400,
                "time": "07:00:00+03:00"
              }
            },
            {
              "date_end": "2025-08-28T15:00:00+08:00",
              "date_start": "2025-04-15T00:00:00+08:00",
              "description": {
                "de": "Angebotskette, die sich monatlich am 28. um 15:00 Uhr GMT+8 zurücksetzt",
                "en": "Offer chain that resets monthly on the 28th at 15:00 GMT+8",
                "fr": "Chaîne d'offres qui se réinitialise mensuellement le 28 à 15h00 GMT+8",
                "it": "Catena di offerte che si resetta mensilmente il 28 alle 15:00 GMT+8",
                "ru": "Цепочка предложений, которая сбрасывается ежемесячно 28-го числа в 15:00 GMT+8"
              },
              "id": 5,
              "is_always_visible": true,
              "is_enabled": true,
              "name": {
                "de": "Monatliche Angebotskette",
                "en": "Monthly offer chain",
                "fr": "Chaîne d'offres mensuelle",
                "it": "Catena di offerte mensile",
                "ru": "Ежемесячная цепочка предложений"
              },
              "order": 4,
              "recurrent_schedule": {
                "day_of_month": 28,
                "displayable_reset_next_date": "2025-05-28T15:00:00+08:00",
                "displayable_reset_start_date": "2025-05-28T15:00:00+08:00",
                "interval_type": "monthly",
                "reset_next_date": 1748415600,
                "time": "15:00:00+08:00"
              }
            }
          ]
        }
      },
      "200-clan-reward-chain": {
        "summary": "Exemple de chaîne de récompenses de clan",
        "value": {
          "clan_type": "guild",
          "description": {
            "en": "Clan reward chain description."
          },
          "image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png",
          "is_enabled": true,
          "long_description": {
            "en": "Clan reward chain long description."
          },
          "name": {
            "en": "Clan reward chain"
          },
          "order": 1,
          "periods": [
            {
              "date_from": "2020-04-15T18:16:00+05:00",
              "date_until": "2021-04-15T18:16:00+05:00"
            }
          ],
          "popup_header": {
            "en": "How to unlock rewards"
          },
          "popup_image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png",
          "popup_instruction": {
            "en": "You must be a clan member in order to get clan rewards. You join a clan when a clan member invites you to the clan, and you accept the invite. You can also create your own clan."
          },
          "recurrent_schedule": {
            "day_of_week": 2,
            "displayable_reset_next_date": "2023-03-07T11:00:00+08:00",
            "displayable_reset_start_date": "2023-02-28T11:00:00+08:00",
            "interval_type": "weekly",
            "reset_next_date": 1677553200,
            "time": "11:00:00+08:00"
          },
          "reward_chain_id": 1,
          "steps": [
            {
              "image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png",
              "name": {
                "en": "First step of the reward chain"
              },
              "price": {
                "amount": 10
              },
              "reward": [
                {
                  "quantity": 5,
                  "sku": "com.xsolla.item_1"
                },
                {
                  "quantity": 1,
                  "sku": "com.xsolla.item_2"
                }
              ],
              "step_id": 1
            },
            {
              "image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png",
              "name": {
                "en": "Second step of the reward chain"
              },
              "price": {
                "amount": 15
              },
              "reward": [
                {
                  "quantity": 5,
                  "sku": "com.xsolla.item_3"
                },
                {
                  "quantity": 1,
                  "sku": "com.xsolla.item_4"
                }
              ],
              "step_id": 2
            }
          ],
          "value_point": {
            "description": {
              "en": "Value points for clan reward system."
            },
            "image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png",
            "is_clan": true,
            "is_enabled": true,
            "long_description": {
              "en": "Value points given to clans to get new rewards in a certain reward chain."
            },
            "media_list": [],
            "name": {
              "en": "Clan Reward VP 1"
            },
            "order": 1,
            "sku": "com.xsolla.clan_value_point_1"
          }
        }
      },
      "200-client-daily-chain": {
        "summary": "Exemple de récompenses quotidiennes d'un utilisateur",
        "value": {
          "date_end": "2025-04-03T18:16:00+05:00",
          "date_start": "2025-04-01T18:16:00+05:00",
          "description": "Active daily reward description",
          "id": 101,
          "name": "Active daily reward",
          "order": 1,
          "steps": [
            {
              "items": [
                {
                  "bundle_type": "standard",
                  "content": [
                    {
                      "description": "Virtual good one",
                      "image_url": "https://picture.virtual-good-picture.png",
                      "is_free": false,
                      "item_id": 1,
                      "name": "virtual_good_one",
                      "quantity": 1,
                      "sku": "d0df11c5-f7c4-4907-9ae1-7dd40cecab05",
                      "type": "virtual_good"
                    },
                    {
                      "description": "Gold Coins",
                      "image_url": "https://picture.gold_coins.png",
                      "is_free": false,
                      "item_id": 2,
                      "name": "Gold Coins",
                      "quantity": 100,
                      "sku": "coins",
                      "type": "virtual_currency"
                    }
                  ],
                  "description": "Many stuff",
                  "image_url": "https://picture.bundle-with-many-stuff.png",
                  "is_free": false,
                  "item_id": 10001,
                  "name": "Bundle with awesome stuff!",
                  "quantity": 1,
                  "sku": "bundle_with_items",
                  "type": "bundle"
                }
              ],
              "status": "blocked",
              "step_number": 1,
              "unlocked_date": 1711978560
            },
            {
              "items": [
                {
                  "description": "Heal 10% of your health",
                  "image_url": "https://picture.bundle-picture.png",
                  "is_free": false,
                  "item_id": 9012,
                  "name": "Healing potion",
                  "quantity": 1,
                  "sku": "health_potion",
                  "type": "virtual_good"
                }
              ],
              "status": "claimed",
              "step_number": 2,
              "unlocked_date": 1712064960
            },
            {
              "items": [
                {
                  "description": "Heal 10% of your health",
                  "image_url": "https://picture.bundle-picture.png",
                  "is_free": false,
                  "item_id": 9012,
                  "name": "Healing potion",
                  "quantity": 2,
                  "sku": "health_potion",
                  "type": "virtual_good"
                }
              ],
              "status": "claimable",
              "step_number": 3,
              "unlocked_date": 1712151360
            },
            {
              "items": [
                {
                  "description": "store_item_0_lost_telescope_2_short_description",
                  "image_url": "https://picture.bundle-picture.png",
                  "is_free": false,
                  "item_id": 9011,
                  "name": "Free item",
                  "quantity": 1,
                  "sku": "free_item",
                  "type": "virtual_good"
                }
              ],
              "status": "claim_in_future",
              "step_number": 4,
              "unlocked_date": 1712237760
            }
          ],
          "type": "calendar_hard"
        }
      },
      "200-client-daily-chain-list": {
        "summary": "Exemple de liste de récompenses quotidiennes d'un utilisateur",
        "value": {
          "has_more": false,
          "items": [
            {
              "date_end": "2025-04-03T18:16:00+05:00",
              "date_start": "2025-04-01T18:16:00+05:00",
              "description": null,
              "id": 101,
              "name": "Active daily reward",
              "order": 1,
              "steps": [
                {
                  "items": [
                    {
                      "description": "Heal 10% of your health",
                      "image_url": "https://picture.bundle-picture.png",
                      "is_free": false,
                      "item_id": 9012,
                      "name": "Healing potion",
                      "quantity": 1,
                      "sku": "health_potion",
                      "type": "virtual_good"
                    }
                  ],
                  "status": "claimed",
                  "step_number": 1,
                  "unlocked_date": 1711978560
                },
                {
                  "items": [
                    {
                      "description": "Heal 10% of your health",
                      "image_url": "https://picture.bundle-picture.png",
                      "is_free": false,
                      "item_id": 9012,
                      "name": "Healing potion",
                      "quantity": 2,
                      "sku": "health_potion",
                      "type": "virtual_good"
                    }
                  ],
                  "status": "claimable",
                  "step_number": 2,
                  "unlocked_date": 1712064960
                },
                {
                  "items": [
                    {
                      "description": "store_item_0_lost_telescope_2_short_description",
                      "image_url": "https://picture.bundle-picture.png",
                      "is_free": true,
                      "item_id": 9011,
                      "name": "Free item",
                      "quantity": 1,
                      "sku": "free_item",
                      "type": "virtual_good"
                    }
                  ],
                  "status": "claim_in_future",
                  "step_number": 3,
                  "unlocked_date": 1712151360
                }
              ],
              "type": "calendar_hard"
            },
            {
              "date_end": "2025-05-03T18:16:00+05:00",
              "date_start": "2025-05-01T18:16:00+05:00",
              "description": null,
              "id": 102,
              "name": "Active daily reward 2",
              "order": 1,
              "steps": [
                {
                  "items": [
                    {
                      "description": "store_item_0_lost_telescope_2_short_description",
                      "image_url": "https://picture.bundle-picture.png",
                      "is_free": true,
                      "item_id": 9011,
                      "name": "Free item",
                      "quantity": 3,
                      "sku": "free_item",
                      "type": "virtual_good"
                    }
                  ],
                  "status": "claimable",
                  "step_number": 1,
                  "unlocked_date": 1714560960
                },
                {
                  "items": [
                    {
                      "description": "Heal 10% of your health",
                      "image_url": "https://picture.bundle-picture.png",
                      "is_free": false,
                      "item_id": 9012,
                      "name": "Healing potion",
                      "quantity": 3,
                      "sku": "health_potion",
                      "type": "virtual_good"
                    }
                  ],
                  "status": "claim_in_future",
                  "step_number": 2,
                  "unlocked_date": 1714647360
                }
              ],
              "type": "calendar_hard"
            },
            {
              "date_end": "2025-04-03T18:16:00+05:00",
              "date_start": "2025-04-01T18:16:00+05:00",
              "description": null,
              "id": 103,
              "name": "Active daily reward 3",
              "order": 1,
              "steps": [
                {
                  "items": [
                    {
                      "description": "store_item_0_lost_telescope_2_short_description",
                      "image_url": "https://picture.bundle-picture.png",
                      "is_free": true,
                      "item_id": 9011,
                      "name": "Free item",
                      "quantity": 3,
                      "sku": "free_item",
                      "type": "virtual_good"
                    }
                  ],
                  "status": "claimable",
                  "step_number": 1,
                  "unlocked_date": 1711978560
                },
                {
                  "items": [
                    {
                      "description": "Heal 10% of your health",
                      "image_url": "https://picture.bundle-picture.png",
                      "is_free": false,
                      "item_id": 9012,
                      "name": "Healing potion",
                      "quantity": 3,
                      "sku": "health_potion",
                      "type": "virtual_good"
                    }
                  ],
                  "status": "blocked",
                  "step_number": 2,
                  "unlocked_date": 1712064960
                },
                {
                  "items": [
                    {
                      "description": "Heal 10% of your health",
                      "image_url": "https://picture.bundle-picture.png",
                      "is_free": false,
                      "item_id": 9012,
                      "name": "Healing potion",
                      "quantity": 3,
                      "sku": "health_potion",
                      "type": "virtual_good"
                    }
                  ],
                  "status": "blocked",
                  "step_number": 3,
                  "unlocked_date": 1712151360
                }
              ],
              "type": "calendar_hard"
            },
            {
              "date_end": "2025-04-28T10:00:00+05:00",
              "date_start": "2025-04-01T10:00:00+05:00",
              "description": null,
              "id": 104,
              "name": "Active daily rolling reward",
              "order": 1,
              "steps": [
                {
                  "items": [
                    {
                      "description": "Item one description",
                      "image_url": "https://picture.bundle-picture.png",
                      "is_free": true,
                      "item_id": 1001,
                      "name": "Item One",
                      "quantity": 1,
                      "sku": "item_one",
                      "type": "virtual_good"
                    }
                  ],
                  "status": "claimed",
                  "step_number": 1,
                  "unlocked_date": -1
                },
                {
                  "items": [
                    {
                      "description": "Item two description",
                      "image_url": "https://picture.bundle-picture.png",
                      "is_free": false,
                      "item_id": 1002,
                      "name": "Item Two",
                      "quantity": 1,
                      "sku": "item_two",
                      "type": "virtual_good"
                    }
                  ],
                  "status": "claimable",
                  "step_number": 2,
                  "unlocked_date": 1712064960
                },
                {
                  "items": [
                    {
                      "description": "Item three description",
                      "image_url": "https://picture.bundle-picture.png",
                      "is_free": false,
                      "item_id": 1003,
                      "name": "Item Three",
                      "quantity": 1,
                      "sku": "item_three",
                      "type": "virtual_good"
                    }
                  ],
                  "status": "claim_in_future",
                  "step_number": 3,
                  "unlocked_date": 1712151360
                }
              ],
              "type": "rolling_skippable"
            }
          ],
          "total_items_count": 3
        }
      },
      "200-client-get-reward-chains-list": {
        "value": {
          "has_more": false,
          "items": [
            {
              "clan_type": null,
              "date_end": "2023-04-25T18:16:00+05:00",
              "date_start": "2023-04-15T18:16:00+05:00",
              "description": "Big weekly quest",
              "image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png",
              "long_description": "You can get a lot of additional items just by shopping during the week",
              "name": "Weekly quest",
              "order": 1,
              "popup_header": null,
              "popup_image_url": null,
              "popup_instruction": null,
              "recurrent_schedule": {
                "interval_type": "weekly",
                "reset_next_date": 1746057600
              },
              "reward_chain_id": 10,
              "steps": [
                {
                  "image_url": "https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg",
                  "is_claimed": true,
                  "name": "Level 1",
                  "price": {
                    "amount": 100
                  },
                  "reward": [
                    {
                      "description": "Super box with items",
                      "image_url": "https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg",
                      "name": "Super box",
                      "quantity": 1,
                      "sku": "com.xsolla.box_1",
                      "type": "bundle"
                    },
                    {
                      "description": "Mega box with items",
                      "image_url": "https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg",
                      "name": "Mega box",
                      "quantity": 1,
                      "sku": "com.xsolla.box_2",
                      "type": "bundle"
                    }
                  ],
                  "step_id": 1
                },
                {
                  "image_url": "https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg",
                  "is_claimed": false,
                  "name": "Level 2",
                  "price": {
                    "amount": 200
                  },
                  "reward": [
                    {
                      "description": "Super box with items",
                      "image_url": "https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg",
                      "name": "Super box",
                      "quantity": 2,
                      "sku": "com.xsolla.box_1",
                      "type": "bundle"
                    },
                    {
                      "description": "Mega box with items",
                      "image_url": "https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg",
                      "name": "Mega box",
                      "quantity": 2,
                      "sku": "com.xsolla.box_2",
                      "type": "bundle"
                    }
                  ],
                  "step_id": 2
                }
              ],
              "top_contributors": [],
              "value_point": {
                "amount": 130,
                "description": null,
                "image_url": "https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg",
                "long_description": null,
                "name": "Value point",
                "sku": "com.xsolla.value_point_1"
              }
            },
            {
              "clan_type": "guild",
              "date_end": "2023-10-15T18:16:00+05:00",
              "date_start": "2023-04-15T18:16:00+05:00",
              "description": "Major weekly clan quest.",
              "image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png",
              "long_description": "You and your clan members can get additional items for shopping during a certain month.",
              "name": "Weekly clan quest",
              "order": 2,
              "popup_header": {
                "en": "How to unlock rewards"
              },
              "popup_image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png",
              "popup_instruction": {
                "en": "You should be a clan member to get clan rewards. You join a clan when a clan member invited you to the clan, and you accepted the invite. You can create your own clan."
              },
              "recurrent_schedule": {
                "interval_type": "monthly",
                "reset_next_date": 1746057600
              },
              "reward_chain_id": 12,
              "steps": [
                {
                  "image_url": "https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg",
                  "is_claimed": true,
                  "name": "Level 1",
                  "price": {
                    "amount": 100
                  },
                  "reward": [
                    {
                      "description": "Super box with items",
                      "image_url": "https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg",
                      "name": "Super box",
                      "quantity": 1,
                      "sku": "com.xsolla.box_1",
                      "type": "bundle"
                    },
                    {
                      "description": "Mega box with items",
                      "image_url": "https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg",
                      "name": "Mega box",
                      "quantity": 1,
                      "sku": "com.xsolla.box_2",
                      "type": "bundle"
                    }
                  ],
                  "step_id": 1
                },
                {
                  "image_url": "https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg",
                  "is_claimed": false,
                  "name": "Level 2",
                  "price": {
                    "amount": 200
                  },
                  "reward": [
                    {
                      "description": "Super box with items",
                      "image_url": "https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg",
                      "name": "Super box",
                      "quantity": 2,
                      "sku": "com.xsolla.box_1",
                      "type": "bundle"
                    },
                    {
                      "description": "Mega box with items",
                      "image_url": "https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg",
                      "name": "Mega box",
                      "quantity": 2,
                      "sku": "com.xsolla.box_2",
                      "type": "bundle"
                    }
                  ],
                  "step_id": 2
                }
              ],
              "top_contributors": [
                {
                  "contributed_amount": 100,
                  "name": "Rabbit"
                },
                {
                  "contributed_amount": 80,
                  "name": "Rocket"
                },
                {
                  "contributed_amount": 40,
                  "name": "Rain"
                }
              ],
              "value_point": {
                "amount": 80,
                "description": "Value points for clan reward system.",
                "image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png",
                "long_description": "Value points given to clans to get new rewards in a reward chain.",
                "name": "Clan Reward VP 1",
                "sku": "com.xsolla.clan_value_point_1"
              }
            }
          ],
          "total_items_count": 1
        }
      },
      "200-client-get-user-clan-reward-chain-balance": {
        "summary": "Exemple de chaîne de récompenses de clan",
        "value": {
          "amount": 80,
          "description": "Value points for clan reward system.",
          "image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png",
          "is_clan": true,
          "long_description": "Value points given to clans to get new rewards in a reward chain.",
          "name": "Clan Reward VP 1",
          "sku": "com.xsolla.clan_value_point_1"
        }
      },
      "200-client-get-user-reward-chain-balance": {
        "summary": "Exemple de chaîne de récompenses",
        "value": {
          "amount": 130,
          "description": null,
          "image_url": "https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg",
          "is_clan": false,
          "long_description": null,
          "name": "Value point",
          "sku": "com.xsolla.value_point_1"
        }
      },
      "200-client-offer-chain": {
        "summary": "Exemple de chaîne d'offres d'utilisateur",
        "value": {
          "date_end": "2025-04-25T18:16:00+05:00",
          "date_start": "2010-04-15T18:16:00+05:00",
          "description": null,
          "id": 4,
          "name": "Offer chain with bundles",
          "next_step_number": 1,
          "order": 1,
          "recurrent_schedule": null,
          "steps": [
            {
              "is_claimed": false,
              "is_free": false,
              "items": [
                {
                  "bundle_type": "standard",
                  "content": [
                    {
                      "description": "virtual_good_short_description_d0df11c5-f7c4-4907-9ae1-7dd40cecab05",
                      "image_url": "https://popmedia.blob.core.windows.net/popyourself/female/accessory/female_crossnecklace_2_silver-01.png",
                      "is_free": false,
                      "item_id": 1,
                      "name": "Virtual Good Bundle",
                      "quantity": 1,
                      "sku": "d0df11c5-f7c4-4907-9ae1-7dd40cecab05",
                      "type": "virtual_good"
                    },
                    {
                      "description": "Big Rocket - short description",
                      "image_url": "https://picture.bigrocket.png",
                      "is_free": false,
                      "item_id": 7009,
                      "name": "Big Rocket",
                      "quantity": 1,
                      "sku": "vg-in-bundle-big-rocket",
                      "type": "virtual_good"
                    },
                    {
                      "description": "Gold Coins - short description",
                      "image_url": "https://picture.gold_coins.png",
                      "is_free": true,
                      "item_id": 7010,
                      "name": "Gold Coins",
                      "quantity": 100,
                      "sku": "vc-in-bundle-gold-coins",
                      "type": "virtual_currency"
                    },
                    {
                      "description": "Some Game - short description",
                      "image_url": "https://picture.some_game.png",
                      "is_free": true,
                      "item_id": 7011,
                      "name": "Some Game",
                      "quantity": 1,
                      "sku": "digital-content-drm-in-bundle-awesome-game",
                      "type": "virtual_good"
                    },
                    {
                      "bundle_type": "standard",
                      "content": [
                        {
                          "description": "Gold Coins - short description",
                          "image_url": "https://picture.gold_coins.png",
                          "is_free": true,
                          "item_id": 7010,
                          "name": "Gold Coins",
                          "quantity": 1,
                          "sku": "vc-in-bundle-gold-coins",
                          "type": "virtual_currency"
                        }
                      ],
                      "description": "Bundle - short description",
                      "image_url": "https://picture.bundle-picture.png",
                      "is_free": true,
                      "item_id": 7012,
                      "name": "Some Bundle in Bundle",
                      "quantity": 1,
                      "sku": "bundle-in-bundle-another-bundle",
                      "type": "bundle"
                    },
                    {
                      "description": "Lootbox in bundle - short description",
                      "image_url": "https://picture.lootbox-picture.png",
                      "is_free": true,
                      "item_id": 7013,
                      "name": "Some Lootbox",
                      "quantity": 1,
                      "sku": "lootbox-in-bundle-awesome-game",
                      "type": "lootbox"
                    }
                  ],
                  "description": "Many stuff",
                  "image_url": "https://picture.bundle-with-many-stuff.png",
                  "is_free": false,
                  "item_id": 7008,
                  "name": "Bundle with many awesome stuff!",
                  "order": 0,
                  "quantity": 5,
                  "sku": "bundle_with_many_items",
                  "type": "bundle"
                }
              ],
              "step_number": 1,
              "step_price": {
                "amount": 499.95,
                "currency": "USD"
              },
              "step_vp_rewards": null
            },
            {
              "is_claimed": false,
              "is_free": true,
              "items": [
                {
                  "bundle_type": "standard",
                  "content": [],
                  "description": "No",
                  "image_url": "https://picture.bundle-no-items.png",
                  "is_free": true,
                  "item_id": 7007,
                  "name": "Empty bundle",
                  "order": 0,
                  "quantity": 10,
                  "sku": "bundle-empty",
                  "type": "bundle"
                }
              ],
              "step_number": 2,
              "step_price": null,
              "step_vp_rewards": null
            }
          ]
        }
      },
      "200-client-offer-chain-list": {
        "summary": "Exemple de liste de chaînes d'offres d'utilisateur",
        "value": {
          "has_more": false,
          "items": [
            {
              "date_end": "2025-04-25T18:16:00+05:00",
              "date_start": "2018-04-15T18:16:00+05:00",
              "description": null,
              "id": 101,
              "name": "Active offer chain",
              "next_step_number": 1,
              "order": 1,
              "recurrent_schedule": null,
              "steps": [
                {
                  "is_claimed": false,
                  "is_free": false,
                  "items": [
                    {
                      "description": "Heal 10% of your health",
                      "image_url": "https://picture.bundle-picture.png",
                      "is_free": false,
                      "item_id": 9012,
                      "name": "Healing potion",
                      "order": 0,
                      "quantity": 1,
                      "sku": "health_potion",
                      "type": "virtual_good"
                    }
                  ],
                  "step_number": 1,
                  "step_price": {
                    "amount": 99.99,
                    "currency": "USD"
                  },
                  "step_vp_rewards": [
                    {
                      "amount": 15,
                      "image_url": "https://popmedia.blob.core.windows.net/popyourself/female/accessory/female_crossnecklace_2_silver-01.png",
                      "is_clan": true,
                      "item_id": 6039,
                      "name": "store_item_0_test_value_point_name",
                      "sku": "test_value_point_39"
                    }
                  ]
                },
                {
                  "is_claimed": false,
                  "is_free": false,
                  "items": [
                    {
                      "description": "Heal 10% of your health",
                      "image_url": "https://picture.bundle-picture.png",
                      "is_free": false,
                      "item_id": 9012,
                      "name": "Healing potion",
                      "order": 0,
                      "quantity": 2,
                      "sku": "health_potion",
                      "type": "virtual_good"
                    }
                  ],
                  "step_number": 2,
                  "step_price": {
                    "amount": 199.98,
                    "currency": "USD"
                  },
                  "step_vp_rewards": [
                    {
                      "amount": 30,
                      "image_url": "https://popmedia.blob.core.windows.net/popyourself/female/accessory/female_crossnecklace_2_silver-01.png",
                      "is_clan": true,
                      "item_id": 6039,
                      "name": "store_item_0_test_value_point_name",
                      "sku": "test_value_point_39"
                    }
                  ]
                },
                {
                  "is_claimed": false,
                  "is_free": true,
                  "items": [
                    {
                      "description": "store_item_0_lost_telescope_2_short_description",
                      "image_url": "https://picture.bundle-picture.png",
                      "is_free": true,
                      "item_id": 9011,
                      "name": "Free item",
                      "order": 0,
                      "quantity": 1,
                      "sku": "free_item",
                      "type": "virtual_good"
                    }
                  ],
                  "step_number": 3,
                  "step_price": null,
                  "step_vp_rewards": null
                }
              ]
            },
            {
              "date_end": "2025-04-25T18:16:00+05:00",
              "date_start": "2018-04-15T18:16:00+05:00",
              "description": null,
              "id": 102,
              "name": "Active offer chain 2",
              "next_step_number": 1,
              "order": 1,
              "recurrent_schedule": null,
              "steps": [
                {
                  "is_claimed": false,
                  "is_free": true,
                  "items": [
                    {
                      "description": "store_item_0_lost_telescope_2_short_description",
                      "image_url": "https://picture.bundle-picture.png",
                      "is_free": true,
                      "item_id": 9011,
                      "name": "Free item",
                      "order": 0,
                      "quantity": 3,
                      "sku": "free_item",
                      "type": "virtual_good"
                    }
                  ],
                  "step_number": 1,
                  "step_price": null,
                  "step_vp_rewards": null
                },
                {
                  "is_claimed": false,
                  "is_free": true,
                  "items": [
                    {
                      "description": "Heal 10% of your health",
                      "image_url": "https://picture.bundle-picture.png",
                      "is_free": false,
                      "item_id": 9012,
                      "name": "Healing potion",
                      "order": 0,
                      "quantity": 3,
                      "sku": "health_potion",
                      "type": "virtual_good"
                    }
                  ],
                  "step_number": 2,
                  "step_price": null,
                  "step_vp_rewards": [
                    {
                      "amount": 45,
                      "image_url": "https://popmedia.blob.core.windows.net/popyourself/female/accessory/female_crossnecklace_2_silver-01.png",
                      "is_clan": true,
                      "item_id": 6039,
                      "name": "store_item_0_test_value_point_name",
                      "sku": "test_value_point_39"
                    }
                  ]
                },
                {
                  "is_claimed": false,
                  "is_free": true,
                  "items": [],
                  "step_number": 3,
                  "step_price": null,
                  "step_vp_rewards": null
                }
              ]
            },
            {
              "date_end": "2025-04-25T18:16:00+05:00",
              "date_start": "2018-04-15T18:16:00+05:00",
              "description": null,
              "id": 103,
              "name": "Active offer chain 3",
              "next_step_number": 1,
              "order": 1,
              "recurrent_schedule": null,
              "steps": [
                {
                  "is_claimed": false,
                  "is_free": true,
                  "items": [
                    {
                      "description": "store_item_0_lost_telescope_2_short_description",
                      "image_url": "https://picture.bundle-picture.png",
                      "is_free": true,
                      "item_id": 9011,
                      "name": "Free item",
                      "order": 0,
                      "quantity": 3,
                      "sku": "free_item",
                      "type": "virtual_good"
                    }
                  ],
                  "step_number": 1,
                  "step_price": null,
                  "step_vp_rewards": null
                },
                {
                  "is_claimed": false,
                  "is_free": false,
                  "items": [
                    {
                      "description": "Heal 10% of your health",
                      "image_url": "https://picture.bundle-picture.png",
                      "is_free": false,
                      "item_id": 9012,
                      "name": "Healing potion",
                      "order": 0,
                      "quantity": 3,
                      "sku": "health_potion",
                      "type": "virtual_good"
                    }
                  ],
                  "step_number": 2,
                  "step_price": {
                    "amount": 299.97,
                    "currency": "USD"
                  },
                  "step_vp_rewards": [
                    {
                      "amount": 45,
                      "image_url": "https://popmedia.blob.core.windows.net/popyourself/female/accessory/female_crossnecklace_2_silver-01.png",
                      "is_clan": true,
                      "item_id": 6039,
                      "name": "store_item_0_test_value_point_name",
                      "sku": "test_value_point_39"
                    }
                  ]
                },
                {
                  "is_claimed": false,
                  "is_free": true,
                  "items": [],
                  "step_number": 3,
                  "step_price": null,
                  "step_vp_rewards": null
                }
              ]
            }
          ],
          "total_items_count": 3
        }
      },
      "200-client-update-user-clan": {
        "value": {
          "reward": [
            {
              "bundle_type": "standard",
              "description": "Super box with items",
              "image_url": "https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg",
              "name": "Super box",
              "quantity": 1,
              "sku": "com.xsolla.box_1",
              "type": "bundle"
            },
            {
              "description": "Mega potion",
              "image_url": "https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg",
              "name": "Mega potion",
              "quantity": 1,
              "sku": "com.xsolla.potion_1",
              "type": "virtual_good"
            }
          ]
        }
      },
      "200-reward-chain": {
        "summary": "Exemple de chaîne de récompenses",
        "value": {
          "attribute_conditions": [
            {
              "attribute": "race",
              "can_be_missing": false,
              "operator": "eq",
              "type": "string",
              "value": "ork"
            }
          ],
          "description": {
            "en": "Reward chain description"
          },
          "image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png",
          "is_always_visible": true,
          "is_enabled": true,
          "is_reset_after_end": true,
          "long_description": {
            "en": "Reward chain long description"
          },
          "name": {
            "en": "Reward chain"
          },
          "order": 1,
          "periods": [
            {
              "date_from": "2026-01-01T01:00:00+05:00",
              "date_until": "2026-01-31T23:59:59+05:00"
            },
            {
              "date_from": "2026-02-01T01:00:00+05:00",
              "date_until": "2026-02-28T23:59:59+05:00"
            }
          ],
          "recurrent_schedule": {
            "day_of_week": 2,
            "displayable_reset_next_date": "2026-01-06T01:00:00+05:00",
            "displayable_reset_start_date": "2026-01-01T01:00:00+05:00",
            "interval_type": "weekly",
            "reset_next_date": 1767643200,
            "time": "01:00:00+05:00"
          },
          "reward_chain_id": 1,
          "steps": [
            {
              "image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png",
              "name": {
                "en": "First step of the reward chain"
              },
              "price": {
                "amount": 10
              },
              "reward": [
                {
                  "quantity": 5,
                  "sku": "com.xsolla.item_1"
                },
                {
                  "quantity": 1,
                  "sku": "com.xsolla.item_2"
                }
              ],
              "step_id": 1
            },
            {
              "image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png",
              "name": {
                "en": "Second step of the reward chain"
              },
              "price": {
                "amount": 15
              },
              "reward": [
                {
                  "quantity": 5,
                  "sku": "com.xsolla.item_3"
                },
                {
                  "quantity": 1,
                  "sku": "com.xsolla.item_4"
                }
              ],
              "step_id": 2
            }
          ],
          "value_point": {
            "description": {
              "en": "Value points for reward system."
            },
            "image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png",
            "is_clan": false,
            "is_enabled": true,
            "long_description": {
              "en": "Value points given to users to get new rewards in a reward chain."
            },
            "media_list": [],
            "name": {
              "en": "Reward VP 1"
            },
            "order": 1,
            "sku": "com.xsolla.reward_vp_1",
            "type": "value_point"
          }
        }
      },
      "200-reward-chain-list": {
        "value": {
          "has_more": true,
          "items": [
            {
              "attribute_conditions": [
                {
                  "attribute": "race",
                  "can_be_missing": false,
                  "operator": "eq",
                  "type": "string",
                  "value": "ork"
                }
              ],
              "description": {
                "en": "Reward chain description"
              },
              "image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png",
              "is_always_visible": true,
              "is_enabled": true,
              "is_reset_after_end": true,
              "long_description": {
                "en": "Reward chain long description"
              },
              "name": {
                "en": "Reward chain"
              },
              "order": 1,
              "periods": [
                {
                  "date_from": "2026-01-01T01:00:00+05:00",
                  "date_until": "2026-01-31T23:59:59+05:00"
                },
                {
                  "date_from": "2026-02-01T01:00:00+05:00",
                  "date_until": "2026-02-28T23:59:59+05:00"
                }
              ],
              "recurrent_schedule": null,
              "reward_chain_id": 1,
              "value_point": {
                "description": "Value points for standard reward system.",
                "image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png",
                "is_clan": false,
                "is_enabled": true,
                "long_description": "Value points given to users to get new rewards in a reward chain.",
                "media_list": [],
                "name": {
                  "en": "Reward VP 1"
                },
                "order": 1,
                "sku": "com.xsolla.reward_vp_1",
                "type": "value_point"
              }
            },
            {
              "clan_type": "guild",
              "description": {
                "en": "Clan reward chain description."
              },
              "image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png",
              "is_enabled": true,
              "long_description": {
                "en": "Clan reward chain long description."
              },
              "name": {
                "en": "Clan reward chain"
              },
              "order": 1,
              "periods": [
                {
                  "date_from": "2026-01-01T01:00:00+05:00",
                  "date_until": "2026-01-31T23:59:59+05:00"
                },
                {
                  "date_from": "2026-02-01T01:00:00+05:00",
                  "date_until": "2026-02-28T23:59:59+05:00"
                }
              ],
              "popup_header": {
                "en": "How to unlock rewards"
              },
              "popup_image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png",
              "popup_instruction": {
                "en": "You must be a clan member in order to get clan rewards. You join a clan when a clan member invites you to the clan, and you accept the invite. You can also create your own clan."
              },
              "recurrent_schedule": {
                "day_of_month": null,
                "day_of_week": 2,
                "displayable_reset_next_date": "2026-01-06T01:00:00+05:00",
                "displayable_reset_start_date": "2026-01-01T01:00:00+05:00",
                "interval_type": "weekly",
                "reset_next_date": 1767643200,
                "time": "01:00:00+05:00"
              },
              "reward_chain_id": 2,
              "value_point": {
                "description": "Value points for clan reward system.",
                "image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png",
                "is_clan": true,
                "is_enabled": true,
                "long_description": "Value points given to clans to get new rewards in a reward chain.",
                "media_list": [],
                "name": {
                  "en": "Clan Reward VP 1"
                },
                "order": 1,
                "sku": "com.xsolla.clan_value_point_1"
              }
            }
          ]
        }
      },
      "200-value-points-reward-chain_admin_get-value-point": {
        "value": {
          "can_delete": false,
          "description": {
            "en": "Points for reward system"
          },
          "image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png",
          "is_clan": false,
          "is_enabled": true,
          "long_description": {
            "en": "Points given to users to get new rewards in a reward chain."
          },
          "media_list": [],
          "name": {
            "en": "Reward VP 1"
          },
          "order": 1,
          "sku": "com.xsolla.reward_vp_1",
          "type": "value_point"
        }
      },
      "200-value-points-reward-chain_admin_get-value-point-list": {
        "value": {
          "items": [
            {
              "description": {
                "en": "Points for reward system"
              },
              "image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png",
              "is_clan": false,
              "is_enabled": true,
              "long_description": {
                "en": "Points given to users to get new rewards in a reward chain."
              },
              "media_list": [],
              "name": {
                "en": "Reward VP 1"
              },
              "order": 1,
              "sku": "com.xsolla.reward_vp_1",
              "type": "value_point"
            },
            {
              "description": {
                "en": "Value points for reward system."
              },
              "image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png",
              "is_clan": false,
              "is_enabled": false,
              "long_description": {
                "en": "Value points given to users to get new rewards in a reward chain."
              },
              "media_list": [],
              "name": {
                "en": "Reward VP 2"
              },
              "order": 2,
              "sku": "com.xsolla.reward_vp_2",
              "type": "value_point"
            },
            {
              "description": {
                "en": "Value points for clan reward system."
              },
              "image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png",
              "is_clan": true,
              "is_enabled": true,
              "long_description": {
                "en": "Value points given to clans to get new rewards in a reward chain."
              },
              "media_list": [],
              "name": {
                "en": "Clan Reward VP 1"
              },
              "order": 3,
              "sku": "com.xsolla.clan_value_point_1"
            }
          ]
        }
      },
      "200-value-points-rewards-list": {
        "value": {
          "items": [
            {
              "amount": 100,
              "image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png",
              "item_id": 14232,
              "name": {
                "en": "Booster"
              },
              "sku": "com.xsolla.booster_1"
            },
            {
              "amount": 200,
              "image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png",
              "item_id": 14232,
              "name": {
                "en": "Mega Booster"
              },
              "sku": "com.xsolla.booster_mega"
            }
          ]
        }
      },
      "401-complex-auth-header-not-found": {
        "value": {
          "errorCode": 1501,
          "errorMessage": "[0401-1501]: Authorization failed: Authorization header not sent",
          "statusCode": 401,
          "transactionId": "x-x-x-x-transactionId-mock-x-x-x"
        }
      },
      "401-complex-auth-incorrect-credentials": {
        "value": {
          "errorCode": 1013,
          "errorMessage": "[0401-1013]: Token not found.",
          "statusCode": 401,
          "transactionId": "x-x-x-x-transactionId-mock-x-x-x"
        }
      },
      "404-coupon-not-found": {
        "value": {
          "errorCode": 9802,
          "errorMessage": "[0401-9802]: Coupon not found",
          "statusCode": 404,
          "transactionId": "x-x-x-x-transactionId-mock-x-x-x"
        }
      },
      "404-daily-chain-not-found": {
        "description": "Daily reward was not found.",
        "summary": "Récompense quotidienne non trouvée",
        "value": {
          "errorCode": 6201,
          "errorMessage": "[0401-6201]: Chain not found",
          "errorMessageExtended": {
            "chain_id": 4,
            "project_id": 0
          },
          "statusCode": 404,
          "transactionId": "x-x-x-x-transactionId-mock-x-x-x"
        }
      },
      "404-daily-chain-step-not-found": {
        "description": "Daily reward step was not found.",
        "summary": "Étape de récompense quotidienne non trouvée",
        "value": {
          "errorCode": 6304,
          "errorMessage": "[0401-6304]: Daily Chain Step not found",
          "errorMessageExtended": {
            "chain_id": 100,
            "step_number": 1
          },
          "statusCode": 404,
          "transactionId": "x-x-x-x-transactionId-mock-x-x-x"
        }
      },
      "404-offer-chain-not-found": {
        "description": "Offer chain step was not found.",
        "summary": "Chaîne non trouvée",
        "value": {
          "errorCode": 6201,
          "errorMessage": "[0401-6201]: Chain not found",
          "errorMessageExtended": {
            "chain_id": 4,
            "project_id": 0
          },
          "statusCode": 404,
          "transactionId": "x-x-x-x-transactionId-mock-x-x-x"
        }
      },
      "404-offer-chain-step-not-found": {
        "description": "Offer chain step was not found.",
        "summary": "Étape de chaîne non trouvée",
        "value": {
          "errorCode": 6304,
          "errorMessage": "[0401-6304]: Offer Chain Step not found",
          "errorMessageExtended": {
            "chain_id": 100,
            "step_number": 1
          },
          "statusCode": 404,
          "transactionId": "x-x-x-x-transactionId-mock-x-x-x"
        }
      },
      "404-promotion-by-id-not-found": {
        "value": {
          "errorCode": 1101,
          "errorMessage": "[0401-1101]: Promotion not found",
          "statusCode": 404,
          "transactionId": "transaction id"
        }
      },
      "404-user-not-found": {
        "value": {
          "errorCode": 5008,
          "errorMessage": "[0401-5008]: Could not find User",
          "statusCode": 404,
          "transactionId": "transaction id"
        }
      },
      "422-activate-deactivate-promotion": {
        "value": {
          "errorCode": 9505,
          "errorMessage": "[0401-9505]: Error was occurred while promotion was being updated",
          "statusCode": 422,
          "transactionId": "da145238620011eb8e24fe6913ff226a"
        }
      },
      "422-admin-daily-chain-error-activated": {
        "description": "Active daily reward have to be deactivated before being updated.",
        "summary": "Impossible de mettre à jour une récompense quotidienne active",
        "value": {
          "errorCode": 6209,
          "errorMessage": "[0401-6209]: Active chain cannot be updated. Please deactivate it first",
          "errorMessageExtended": {
            "chain_id": 2,
            "project_id": 0
          },
          "statusCode": 422,
          "transactionId": "x-x-x-x-transactionId-mock-x-x-x"
        }
      },
      "422-admin-daily-chain-error-chain-id-mismatch": {
        "description": "Daily reward ID specified in the body does not match the URL.",
        "summary": "Incohérence d'ID de récompense quotidienne",
        "value": {
          "errorCode": 6205,
          "errorMessage": "[0401-6205]: Chain ID mismatch. Please, check the chain ID in your request body and URL",
          "errorMessageExtended": {
            "body_chain_id": 2,
            "project_id": 0,
            "url_chain_id": 1
          },
          "statusCode": 422,
          "transactionId": "x-x-x-x-transactionId-mock-x-x-x"
        }
      },
      "422-admin-daily-chain-error-duplicate-step-ids": {
        "description": "Please, ensure that daily reward step IDs are unique in the request body.",
        "summary": "ID d'étape de récompense quotidienne dupliqué",
        "value": {
          "errorCode": 6207,
          "errorMessage": "[0401-6207]: Duplicate chain step IDs detected in the request body",
          "errorMessageExtended": {
            "chain_id": 3,
            "chain_step_id_list": [
              8,
              9,
              10
            ],
            "project_id": 0
          },
          "statusCode": 422,
          "transactionId": "x-x-x-x-transactionId-mock-x-x-x"
        }
      },
      "422-admin-daily-chain-error-incorrect-items": {
        "description": "Specified items are not allowed, disabled or not found. Only enabled items of following types are allowed: virtual item, bundle, virtual currency package.",
        "summary": "Objets d'étape incorrects",
        "value": {
          "errorCode": 6211,
          "errorMessage": "[0401-6211]: Chain steps items are not allowed or not found",
          "errorMessageExtended": {
            "invalid_items": {
              "disabled": [
                "vg_disabled_item_1",
                "vg_disabled_item_2",
                "vc_disabled_1"
              ],
              "invalid_item_type": {
                "allowed_item_type_list": [
                  "virtual_good",
                  "bundle"
                ],
                "sku_map": {
                  "gk_steam_enabled_shown_in_store_1": "game_key",
                  "unit_enabled_shown_in_store_1": "unit",
                  "vc_disabled_1": "virtual_currency",
                  "vc_enabled_shown_in_store_1": "virtual_currency"
                }
              },
              "not_found": [
                "vg_deleted_item_1",
                "vg_deleted_item_2",
                "not_existing_sku_404_1",
                "not_existing_sku_404_2"
              ]
            },
            "project_id": 0
          },
          "statusCode": 422,
          "transactionId": "x-x-xX-x-transactionId-mock-x-x-x"
        }
      },
      "422-admin-daily-chain-error-incorrect-period": {
        "description": "Please ensure start date is earlier than end date.",
        "summary": "Période incorrecte pour une récompense quotidienne",
        "value": {
          "errorCode": 6204,
          "errorMessage": "[0401-6204]: Period of a chain is invalid. Please, check the dates in your request",
          "errorMessageExtended": {
            "chain_id": 1,
            "invalid_periods": [
              {
                "end": "2023-04-15T18:16:00+05:00",
                "start": "2025-04-25T18:16:00+05:00"
              }
            ],
            "project_id": 0
          },
          "statusCode": 422,
          "transactionId": "x-x-x-x-transactionId-mock-x-x-x"
        }
      },
      "422-admin-daily-chain-error-incorrect-steps-order": {
        "description": "Daily reward steps numbers sequence is incorrect. Correct step numbers should be sequential without any gaps or duplicates.",
        "summary": "Ordre d'étapes incorrect",
        "value": {
          "errorCode": 6210,
          "errorMessage": "[0401-6210]: Chain step numbers are invalid",
          "errorMessageExtended": {
            "incorrect_step_numbers": {
              "duplicates": [
                2,
                7
              ],
              "missing": [
                3,
                4,
                5,
                6
              ],
              "out_of_range": [
                7,
                8
              ]
            },
            "project_id": 0
          },
          "statusCode": 422,
          "transactionId": "x-x-x-x-transactionId-mock-x-x-x"
        }
      },
      "422-admin-daily-chain-error-invalid-chain-step-ids": {
        "description": "Some of step IDs was not found. Please, double check if specified daily reward step IDs actually exist.",
        "summary": "ID d'étape de récompense quotidienne non trouvés",
        "value": {
          "errorCode": 6206,
          "errorMessage": "[0401-6206]: Chain step IDs not found",
          "errorMessageExtended": {
            "chain_id": 1,
            "chain_step_id_list": [
              404000
            ],
            "project_id": 0
          },
          "statusCode": 404,
          "transactionId": "x-x-x-x-transactionId-mock-x-x-x"
        }
      },
      "422-admin-daily-chain-error-invalid-dates": {
        "description": "Please, ensure dates format is valid.",
        "summary": "Format de date non valide",
        "value": {
          "errorCode": 6204,
          "errorMessage": "[0401-6204]: Period of a chain is invalid. Please, check the dates in your request",
          "errorMessageExtended": {
            "chain_id": 1,
            "invalid_format_dates": {
              "date_end": "2025-04-25 19:16:00Z",
              "date_start": "2023-04-15 17:16:00Z"
            },
            "project_id": 0
          },
          "statusCode": 422,
          "transactionId": "x-x-x-x-transactionId-mock-x-x-x"
        }
      },
      "422-admin-daily-chain-error-item-limit-exceeded": {
        "description": "Daily reward step item count exceeds the allowed limit for some steps. Currently only 1 item per step is allowed.",
        "summary": "Limite d'objets dépassée",
        "value": {
          "errorCode": 6208,
          "errorMessage": "[0401-6208]: Chain step item count exceeds the allowed limit for some steps",
          "errorMessageExtended": {
            "max_items": 1,
            "project_id": 0,
            "steps_exceeded_limits": [
              {
                "items_count": 2,
                "step_number": 1
              },
              {
                "items_count": 3,
                "step_number": 4
              }
            ]
          },
          "statusCode": 422,
          "transactionId": "x-x-x-x-transactionId-mock-x-x-x"
        }
      },
      "422-admin-daily-chain-error-too-many-steps": {
        "description": "Daily reward steps max amount limit of 30 items is exceeded. Try specifying less steps.",
        "summary": "Trop d'étapes",
        "value": {
          "errorCode": 6203,
          "errorMessage": "[0401-6203]: Chain step count exceeds the allowed limit",
          "errorMessageExtended": {
            "max_steps": 30,
            "project_id": 0,
            "step_count": 31
          },
          "statusCode": 422,
          "transactionId": "x-x-x-x-transactionId-mock-x-x-x"
        }
      },
      "422-admin-offer-chain-error-activated": {
        "description": "Active offer chain has to be deactivated before being updated. To do this, use the <a href=\"/fr/api/shop-builder/operation/admin-toggle-offer-chain\">Toggle offer chain</a> call.",
        "summary": "Impossible de modifier une chaîne d'offres active",
        "value": {
          "errorCode": 6209,
          "errorMessage": "[0401-6209]: Active chain cannot be updated. Please deactivate it first",
          "errorMessageExtended": {
            "chain_id": 2,
            "project_id": 0
          },
          "statusCode": 422,
          "transactionId": "x-x-x-x-transactionId-mock-x-x-x"
        }
      },
      "422-admin-offer-chain-error-chain-id-mismatch": {
        "description": "Offer chain ID in the request body does not match the ID in the URL.",
        "summary": "ID de chaîne non conforme",
        "value": {
          "errorCode": 6205,
          "errorMessage": "[0401-6205]: Chain ID mismatch. Please, check the chain ID in your request body and URL",
          "errorMessageExtended": {
            "body_chain_id": 2,
            "project_id": 0,
            "url_chain_id": 1
          },
          "statusCode": 422,
          "transactionId": "x-x-x-x-transactionId-mock-x-x-x"
        }
      },
      "422-admin-offer-chain-error-duplicate-step-ids": {
        "description": "Chain step IDs must be unique in the request body.",
        "summary": "ID d'étape de chaîne en double",
        "value": {
          "errorCode": 6207,
          "errorMessage": "[0401-6207]: Duplicate chain step IDs detected in the request body",
          "errorMessageExtended": {
            "chain_id": 3,
            "chain_step_id_list": [
              8,
              9,
              10
            ],
            "project_id": 0
          },
          "statusCode": 422,
          "transactionId": "x-x-x-x-transactionId-mock-x-x-x"
        }
      },
      "422-admin-offer-chain-error-incorrect-items": {
        "description": "Specified items are either unavailable, or not found. Only enabled items of the following types are supported: virtual items, bundles, and virtual currency packages.",
        "summary": "Objets d'étape non valides",
        "value": {
          "errorCode": 6211,
          "errorMessage": "[0401-6211]: Chain steps items are not allowed or not found",
          "errorMessageExtended": {
            "invalid_items": {
              "disabled": [
                "vg_disabled_item_1",
                "vg_disabled_item_2",
                "vc_disabled_1"
              ],
              "invalid_item_type": {
                "allowed_item_type_list": [
                  "virtual_good",
                  "bundle"
                ],
                "sku_map": {
                  "gk_steam_enabled_shown_in_store_1": "game_key",
                  "unit_enabled_shown_in_store_1": "unit",
                  "vc_disabled_1": "virtual_currency",
                  "vc_enabled_shown_in_store_1": "virtual_currency"
                }
              },
              "not_found": [
                "vg_deleted_item_1",
                "vg_deleted_item_2",
                "not_existing_sku_404_1",
                "not_existing_sku_404_2"
              ]
            },
            "project_id": 0
          },
          "statusCode": 422,
          "transactionId": "x-x-xX-x-transactionId-mock-x-x-x"
        }
      },
      "422-admin-offer-chain-error-incorrect-period": {
        "description": "The start date must be earlier than the end date.",
        "summary": "Période de chaîne non valide",
        "value": {
          "errorCode": 6204,
          "errorMessage": "[0401-6204]: Period of a chain is invalid. Please, check the dates in your request",
          "errorMessageExtended": {
            "chain_id": 1,
            "invalid_periods": [
              {
                "end": "2023-04-15T18:16:00+05:00",
                "start": "2025-04-25T18:16:00+05:00"
              }
            ],
            "project_id": 0
          },
          "statusCode": 422,
          "transactionId": "x-x-x-x-transactionId-mock-x-x-x"
        }
      },
      "422-admin-offer-chain-error-incorrect-steps-order": {
        "description": "The sequence of offer chain step numbers is incorrect. Step numbers must be sequential, without gaps or duplicates.",
        "summary": "Ordre d'étapes non valide",
        "value": {
          "errorCode": 6210,
          "errorMessage": "[0401-6210]: Chain step numbers are invalid",
          "errorMessageExtended": {
            "incorrect_step_numbers": {
              "duplicates": [
                2,
                7
              ],
              "missing": [
                3,
                4,
                5,
                6
              ],
              "out_of_range": [
                7,
                8
              ]
            },
            "project_id": 0
          },
          "statusCode": 422,
          "transactionId": "x-x-x-x-transactionId-mock-x-x-x"
        }
      },
      "422-admin-offer-chain-error-invalid-chain-step-ids": {
        "description": "Some of the step IDs were not found. Double-check that the specified chain step IDs exist. To do this, use the <a href=\"/api/shop-builder/operation/order-user-offer-chain-step-reward#tag/offer-chain-admin/operation/admin-get-offer-chain\">Get offer chain</a> call.",
        "summary": "ID d'étape de la chaîne introuvable",
        "value": {
          "errorCode": 6206,
          "errorMessage": "[0401-6206]: Chain step IDs not found",
          "errorMessageExtended": {
            "chain_id": 1,
            "chain_step_id_list": [
              404000
            ],
            "project_id": 0
          },
          "statusCode": 404,
          "transactionId": "x-x-x-x-transactionId-mock-x-x-x"
        }
      },
      "422-admin-offer-chain-error-invalid-dates": {
        "description": "The date format must be valid. Use <a href=\"https://en.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a> format.",
        "summary": "Format de date non valide",
        "value": {
          "errorCode": 6204,
          "errorMessage": "[0401-6204]: Period of a chain is invalid. Please, check the dates in your request",
          "errorMessageExtended": {
            "chain_id": 1,
            "invalid_format_dates": {
              "date_end": "2025-04-25 19:16:00Z",
              "date_start": "2023-04-15 17:16:00Z"
            },
            "project_id": 0
          },
          "statusCode": 422,
          "transactionId": "x-x-x-x-transactionId-mock-x-x-x"
        }
      },
      "422-admin-offer-chain-error-item-limit-exceeded": {
        "description": "The number of items in one or more offer chain steps exceeds the allowed limit. Currently, only one item per step is allowed.",
        "summary": "Limite d'objets dépassée",
        "value": {
          "errorCode": 6208,
          "errorMessage": "[0401-6208]: Chain step item count exceeds the allowed limit for some steps",
          "errorMessageExtended": {
            "max_items": 1,
            "project_id": 0,
            "steps_exceeded_limits": [
              {
                "items_count": 2,
                "step_number": 1
              },
              {
                "items_count": 3,
                "step_number": 4
              }
            ]
          },
          "statusCode": 422,
          "transactionId": "x-x-x-x-transactionId-mock-x-x-x"
        }
      },
      "422-admin-offer-chain-error-too-many-steps": {
        "description": "The number of offer chain steps exceeds the allowed limit of 30. Try specifying fewer steps.",
        "summary": "Trop d'étapes",
        "value": {
          "errorCode": 6203,
          "errorMessage": "[0401-6203]: Chain step count exceeds the allowed limit",
          "errorMessageExtended": {
            "max_steps": 30,
            "project_id": 0,
            "step_count": 31
          },
          "statusCode": 422,
          "transactionId": "x-x-x-x-transactionId-mock-x-x-x"
        }
      },
      "422-daily-chain-claim-error-invalid-step": {
        "description": "Ensure the user has not previously claimed the reward and that the correct step in the daily reward is selected for claiming.",
        "summary": "Impossible de réclamer la récompense de l'étape",
        "value": {
          "errorCode": 6405,
          "errorMessage": "[0401-6405]: This step is not available to be claimed by the user.",
          "errorMessageExtended": {
            "chain_id": 1,
            "step_number": 1
          },
          "statusCode": 422,
          "transactionId": "x-x-x-x-transactionId-mock-x-x-x"
        }
      },
      "422-offer-chain-claim-error-invalid-step": {
        "description": "The user must claim all previous steps, and the request must use a valid call – <a href=\"/api/shop-builder/operation/order-user-offer-chain-step-reward\">Create order for paid offer chain step</a>, <a href=\"/api/shop-builder/operation/claim-user-offer-chain-step-reward\">Claim free offer chain step</a> for free ones.\n\nThis error is returned if one or more of the following conditions are not met:<ul><li>The offer chain exists, is enabled, and not deleted.</li><li>The target step exists, is enabled, and marked as free.</li><li>The step has not already been claimed by the user. In case of a recurring chain, this check is based on the user progress of the current iteration.</li><li>All previous steps in the chain (by step number) have been claimed or purchased. In case of a recurring chain, this check also considers the user progress of the current iteration.</li></ul>",
        "summary": "Impossible de réclamer la récompense de l'étape",
        "value": {
          "errorCode": 6306,
          "errorMessage": "[0401-6306]: This step is not valid to claim by user.",
          "errorMessageExtended": {
            "chain_id": 1,
            "step_number": 1
          },
          "statusCode": 422,
          "transactionId": "x-x-x-x-transactionId-mock-x-x-x"
        }
      },
      "422-promotion-out-of-range-available-user-limit": {
        "value": {
          "errorCode": 4511,
          "errorMessage": "[0401-4511]: Available promotion limit is out of range.",
          "statusCode": 422,
          "transactionId": "transaction id"
        }
      },
      "422-promotion-without-user-limit": {
        "value": {
          "errorCode": 4509,
          "errorMessage": "[0401-4509]: Promotion does not have configured user limits.",
          "statusCode": 422,
          "transactionId": "transaction id"
        }
      },
      "422-property-sku-is-required": {
        "value": {
          "errorCode": 1102,
          "errorMessage": "[0401-1102]: Unprocessable Entity. The property `sku` is required",
          "statusCode": 422,
          "transactionId": "da145238620011eb8e24fe6913ff226a"
        }
      },
      "422-user_external_id_invalid": {
        "value": {
          "errorCode": 1102,
          "errorMessage": "[0401-1102]: Unprocessable Entity",
          "errorMessageExtended": [
            {
              "message": "Must be at least 1 characters long",
              "property": "user_external_id"
            },
            {
              "message": "Does not match the regex pattern ^\\S+$",
              "property": "user_external_id"
            }
          ],
          "statusCode": 404,
          "transactionId": "transaction id"
        }
      },
      "Promotions_200-admin-coupons": {
        "value": {
          "active_promotions_count": 2,
          "inactive_promotions_count": 0,
          "items": [
            {
              "bonus": [
                {
                  "quantity": 1,
                  "sku": "com.xsolla.elven_sword_1"
                },
                {
                  "quantity": 2,
                  "sku": "com.xsolla.elven_shield_1"
                },
                {
                  "quantity": 2,
                  "sku": "com.xsolla.elven_gloves_1"
                }
              ],
              "external_id": "coupon_44056_1",
              "is_enabled": true,
              "name": {
                "de-DE": "Neujahrsbonus",
                "en-US": "New Year Bonus"
              },
              "promotion_periods": [
                {
                  "date_from": "2020-04-15T18:16:00+05:00",
                  "date_until": "2020-04-25T18:16:00+05:00"
                },
                {
                  "date_from": "2020-05-15T18:16:00+05:00",
                  "date_until": "2020-05-25T18:16:00+05:00"
                }
              ],
              "redeem_code_limit": 1,
              "redeem_total_limit": null,
              "redeem_user_limit": null,
              "total_limit_state": null
            },
            {
              "bonus": [
                {
                  "quantity": 100,
                  "sku": "com.xsolla.diamonds_1"
                }
              ],
              "external_id": "summer2021",
              "is_enabled": true,
              "name": {
                "de-DE": "Gutscheintitel",
                "en-US": "Coupon name"
              },
              "promotion_periods": [
                {
                  "date_from": "2020-04-15T18:16:00+05:00",
                  "date_until": "2020-04-25T18:16:00+05:00"
                }
              ],
              "redeem_code_limit": 1,
              "redeem_total_limit": 100,
              "redeem_user_limit": null,
              "total_limit_state": {
                "available": 50,
                "reserved": 10,
                "used": 40
              }
            }
          ],
          "total_promotions_count": 2
        }
      },
      "Promotions_200-admin-promocodes": {
        "value": {
          "active_promotions_count": 2,
          "inactive_promotions_count": 0,
          "items": [
            {
              "bonus": [
                {
                  "quantity": 1,
                  "sku": "com.xsolla.elven_sword_1"
                },
                {
                  "quantity": 2,
                  "sku": "com.xsolla.elven_shield_1"
                },
                {
                  "quantity": 2,
                  "sku": "com.xsolla.elven_gloves_1"
                }
              ],
              "discount": null,
              "discounted_items": null,
              "external_id": "promocode_100_crystals",
              "is_enabled": true,
              "name": {
                "de-DE": "Neujahrsbonus",
                "en-US": "New Year Bonus"
              },
              "promotion_periods": [
                {
                  "date_from": "2020-04-15T18:16:00+05:00",
                  "date_until": "2020-04-25T18:16:00+05:00"
                }
              ],
              "redeem_code_limit": 1,
              "redeem_total_limit": null,
              "redeem_user_limit": null,
              "total_limit_state": null
            },
            {
              "bonus": [
                {
                  "quantity": 100,
                  "sku": "com.xsolla.diamonds_1"
                }
              ],
              "discount": {
                "percent": "10.99"
              },
              "discounted_items": [
                {
                  "discount": {
                    "percent": "10.00"
                  },
                  "sku": "com.xsolla.elven_sword_1"
                }
              ],
              "excluded_promotions": [
                23,
                45
              ],
              "external_id": "summer2021",
              "is_enabled": true,
              "name": {
                "de-DE": "Gutscheintitel",
                "en-US": "Coupon name"
              },
              "price_conditions": [
                {
                  "operator": "ge",
                  "value": "10.0000"
                },
                {
                  "operator": "le",
                  "value": "50.0000"
                }
              ],
              "promotion_periods": [
                {
                  "date_from": "2020-04-15T18:16:00+05:00",
                  "date_until": "2020-04-25T18:16:00+05:00"
                }
              ],
              "redeem_code_limit": null,
              "redeem_total_limit": 100,
              "redeem_user_limit": null,
              "total_limit_state": {
                "available": 50,
                "reserved": 10,
                "used": 40
              }
            }
          ],
          "total_promotions_count": 2
        }
      },
      "Promotions_200-admin-promotions": {
        "value": {
          "active_promotions_count": 3,
          "inactive_promotions_count": 2,
          "promotions": [
            {
              "bonus": [
                {
                  "item": {
                    "bundle_type": "virtual_currency_package",
                    "content": [],
                    "description": null,
                    "image_url": null,
                    "name": {
                      "en": "Diamonds pack",
                      "ru": "Пак кристаллов"
                    },
                    "sku": "com.xsolla.diamonds_pack_1",
                    "type": "bundle"
                  },
                  "quantity": 1
                }
              ],
              "condition": [
                {
                  "item": {
                    "description": null,
                    "image_url": null,
                    "name": {
                      "en": "VG name",
                      "ru": "Название VG"
                    },
                    "sku": "com.xsolla.virtual_good_bonus_2",
                    "type": "virtual_good"
                  }
                }
              ],
              "discount": null,
              "id": 1,
              "is_enabled": true,
              "name": {
                "en": "promotion_1"
              },
              "promotion_periods": [
                {
                  "date_from": "2020-01-01T00:00:00+03:00",
                  "date_until": null
                }
              ],
              "type": "item_bonus"
            },
            {
              "bonus": [],
              "condition": [
                {
                  "item": {
                    "description": null,
                    "image_url": null,
                    "name": {
                      "en": "VG name",
                      "ru": "Название VG"
                    },
                    "sku": "com.xsolla.virtual_good_bonus_2",
                    "type": "virtual_good"
                  }
                }
              ],
              "discount": {
                "percent": "10.99"
              },
              "id": 2,
              "is_enabled": false,
              "name": {
                "en": "promotion_2"
              },
              "promotion_periods": [
                {
                  "date_from": "2020-01-01T00:00:00+03:00",
                  "date_until": "2030-01-01T00:00:00+03:00"
                }
              ],
              "type": "item_discount"
            },
            {
              "bonus": [
                {
                  "item": {
                    "description": null,
                    "image_url": null,
                    "name": {
                      "en": "VG name",
                      "ru": "Название VG"
                    },
                    "sku": "com.xsolla.virtual_good_bonus_2",
                    "type": "virtual_good"
                  },
                  "quantity": 2
                }
              ],
              "condition": [
                {
                  "item": {
                    "external_id": "coupon_2",
                    "is_enabled": true,
                    "name": {
                      "en": "Coupon name",
                      "ru": "Название купона"
                    },
                    "redeem_code_limit": 1,
                    "redeem_total_limit": null,
                    "redeem_user_limit": null
                  }
                }
              ],
              "discount": null,
              "id": 3,
              "is_enabled": true,
              "name": {
                "en": "promotion_3"
              },
              "promotion_periods": [
                {
                  "date_from": "2020-01-01T00:00:00+03:00",
                  "date_until": "2030-01-01T00:00:00+03:00"
                }
              ],
              "type": "coupon_bonus"
            },
            {
              "bonus": [
                {
                  "item": {
                    "description": null,
                    "image_url": null,
                    "name": {
                      "en": "VG name",
                      "ru": "Название VG"
                    },
                    "sku": "com.xsolla.virtual_good_bonus_2",
                    "type": "virtual_good"
                  },
                  "quantity": 2
                }
              ],
              "condition": [
                {
                  "item": {
                    "external_id": "coupon_3",
                    "is_enabled": true,
                    "name": {
                      "en": "Coupon name",
                      "ru": "Название купона"
                    },
                    "redeem_code_limit": 1,
                    "redeem_total_limit": null,
                    "redeem_user_limit": null
                  }
                }
              ],
              "discount": {
                "percent": "12.99"
              },
              "id": 4,
              "is_enabled": false,
              "name": {
                "en": "promotion_4"
              },
              "promotion_periods": [
                {
                  "date_from": "2018-01-01T00:00:00+03:00",
                  "date_until": "2031-01-01T00:00:00+03:00"
                }
              ],
              "type": "promocode_bonus_discount"
            },
            {
              "bonus": [
                {
                  "item": {
                    "description": null,
                    "image_url": null,
                    "name": {
                      "en": "VG name",
                      "ru": "Название VG"
                    },
                    "sku": "com.xsolla.virtual_good_bonus_4",
                    "type": "virtual_good"
                  },
                  "quantity": 1
                }
              ],
              "condition": null,
              "discount": null,
              "id": 5,
              "is_enabled": true,
              "name": {
                "en": "promotion_5"
              },
              "promotion_periods": [
                {
                  "date_from": "2020-01-01T00:00:00+03:00",
                  "date_until": null
                }
              ],
              "type": "cart_bonus"
            }
          ],
          "total_promotions_count": 5
        }
      },
      "Promotions_200-admin-unique-catalog-offers": {
        "value": {
          "active_promotions_count": 2,
          "inactive_promotions_count": 0,
          "items": [
            {
              "external_id": "new_year_bonus",
              "is_enabled": true,
              "items": [
                "booster",
                "booster_mega"
              ],
              "name": {
                "de-DE": "Neujahrsbonus",
                "en-US": "New Year Bonus"
              },
              "promotion_periods": [
                {
                  "date_from": "2020-04-15T18:16:00+05:00",
                  "date_until": "2020-04-25T18:16:00+05:00"
                },
                {
                  "date_from": "2020-05-15T18:16:00+05:00",
                  "date_until": "2020-05-25T18:16:00+05:00"
                }
              ],
              "redeem_code_limit": 1,
              "redeem_total_limit": null,
              "redeem_user_limit": 1,
              "total_limit_state": null
            },
            {
              "external_id": "secret_store",
              "is_enabled": true,
              "items": [
                "helmet",
                "armor",
                "sword"
              ],
              "name": {
                "en-US": "Secret store",
                "ru-RU": "Тайный магазин"
              },
              "promotion_periods": [
                {
                  "date_from": "2020-04-15T18:16:00+05:00",
                  "date_until": null
                }
              ],
              "redeem_code_limit": 1,
              "redeem_total_limit": 100,
              "redeem_user_limit": 1,
              "total_limit_state": {
                "available": 50,
                "reserved": 10,
                "used": 40
              }
            }
          ],
          "total_promotions_count": 2
        }
      },
      "Promotions_200-coupon-code-list": {
        "value": {
          "codes": [
            {
              "code": "CODE001"
            },
            {
              "code": "CODE002"
            },
            {
              "code": "CODE003"
            },
            {
              "code": "CODE004"
            },
            {
              "code": "CODE005"
            }
          ],
          "total_count": 5
        }
      },
      "Promotions_200-get-coupon-rewards": {
        "value": {
          "bonus": [
            {
              "item": {
                "description": "Game description",
                "image_url": "https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png",
                "name": {
                  "en": "Game name"
                },
                "sku": "com.xsolla.game_1",
                "type": "unit",
                "unit_items": [
                  {
                    "drm_name": "Steam",
                    "drm_sku": "steam_key_01",
                    "is_free": false,
                    "name": "Game name",
                    "sku": "com.xsolla.game_key_01",
                    "type": "game_key"
                  },
                  {
                    "drm_name": "Origin",
                    "drm_sku": "origin_key_02",
                    "name": "Game name",
                    "sku": "game_key_02",
                    "type": "game_key"
                  }
                ]
              },
              "quantity": 1
            },
            {
              "item": {
                "description": "Game description",
                "image_url": "https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png",
                "name": {
                  "en": "Game name"
                },
                "sku": "com.xsolla.game_2",
                "type": "unit",
                "unit_items": [
                  {
                    "drm_name": "Steam",
                    "drm_sku": "steam_key_01",
                    "name": "Game name",
                    "sku": "com.xsolla.game_key_01",
                    "type": "game_key"
                  }
                ]
              },
              "quantity": 2
            }
          ],
          "discount": {
            "percent": "10.00"
          },
          "is_selectable": true
        }
      },
      "Promotions_200-get-promocode-rewards": {
        "value": {
          "bonus": [
            {
              "item": {
                "description": "Game description",
                "image_url": "https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png",
                "name": "Game name",
                "sku": "com.xsolla.game_1",
                "type": "unit",
                "unit_items": [
                  {
                    "drm_name": "Steam",
                    "drm_sku": "steam_key_01",
                    "is_free": false,
                    "name": "Game name",
                    "sku": "com.xsolla.game_key_01",
                    "type": "game_key"
                  },
                  {
                    "drm_name": "Origin",
                    "drm_sku": "origin_key_02",
                    "name": "Game name",
                    "sku": "com.xsolla.game_key_02",
                    "type": "game_key"
                  }
                ]
              },
              "quantity": 1
            },
            {
              "item": {
                "description": "Game description",
                "image_url": "https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png",
                "name": "Game name",
                "sku": "com.xsolla.game_2",
                "type": "unit",
                "unit_items": [
                  {
                    "drm_name": "Steam",
                    "drm_sku": "steam_key_01",
                    "name": "Game name",
                    "sku": "com.xsolla.game_key_01",
                    "type": "game_key"
                  }
                ]
              },
              "quantity": 2
            }
          ],
          "discount": {
            "percent": "10.00"
          },
          "discounted_items": [
            {
              "discount": {
                "percent": "10.00"
              },
              "sku": "com.xsolla.elven_sword_1"
            }
          ],
          "is_selectable": true
        }
      },
      "Promotions_422-invalid-coupon": {
        "value": {
          "errorCode": 1102,
          "errorMessage": "[0401-1102]: Unprocessable Entity. The property `external_id` is required",
          "statusCode": 422
        }
      },
      "code-limit": {
        "value": {
          "has_more": false,
          "items": [
            {
              "code": "WINTER2023",
              "per_code": {
                "available": 7,
                "reserved": 1,
                "total": 10,
                "used": 2
              }
            },
            {
              "code": "SUMMER2023",
              "per_code": {
                "available": 0,
                "reserved": 2,
                "total": 5,
                "used": 3
              }
            }
          ],
          "promotion_id": 1,
          "total_items_count": 2
        }
      }
    },
    "parameters": {
      "code-path-param": {
        "description": "Code unique sensible à la casse. Comprend des lettres et des chiffres.",
        "in": "path",
        "name": "code",
        "required": true,
        "schema": {
          "example": "WINTER2021",
          "maxLength": 128,
          "minLength": 1,
          "type": "string"
        }
      },
      "codes-query-param": {
        "description": "Codes uniques sensibles à la casse. Ne comprennent que des lettres et des chiffres.",
        "in": "query",
        "name": "codes[]",
        "schema": {
          "items": {
            "maxLength": 128,
            "minLength": 1,
            "type": "string"
          },
          "type": "array"
        }
      },
      "coupon_code-path-param": {
        "description": "Code unique sensible à la casse. Comprend des lettres et des chiffres.",
        "in": "path",
        "name": "coupon_code",
        "required": true,
        "schema": {
          "example": "WINTER2021",
          "maxLength": 128,
          "minLength": 1,
          "type": "string"
        }
      },
      "daily_chain_id-path-param": {
        "description": "ID de récompense quotidienne.",
        "in": "path",
        "name": "daily_chain_id",
        "required": true,
        "schema": {
          "example": 101,
          "type": "integer"
        }
      },
      "daily_chain_step_number-path-param": {
        "description": "Numéro d'étape de récompense quotidienne.",
        "in": "path",
        "name": "step_number",
        "required": true,
        "schema": {
          "example": 1,
          "type": "integer"
        }
      },
      "enabled-query-param": {
        "description": "Filtrer les éléments en fonction de l'indicateur `is_enabled`.",
        "in": "query",
        "name": "enabled",
        "required": false,
        "schema": {
          "type": "integer"
        }
      },
      "external_id-promotion-path-param": {
        "description": "External ID de la promotion. Identifiant unique de la promotion au sein du projet.",
        "in": "path",
        "name": "external_id",
        "required": true,
        "schema": {
          "example": "coupon_44056_1",
          "type": "integer"
        }
      },
      "is_enabled-query-param": {
        "description": "Filtrer les éléments en fonction de l'indicateur `is_enabled`.",
        "in": "query",
        "name": "is_enabled",
        "required": false,
        "schema": {
          "type": "integer"
        }
      },
      "is_expired-daily-chain-query-param": {
        "description": "Filtrez les récompenses quotidiennes pour n'afficher que celles qui sont expirées.",
        "in": "query",
        "name": "is_expired",
        "required": false,
        "schema": {
          "type": "integer"
        }
      },
      "item_sku-path-param": {
        "description": "UGS de l'objet.",
        "in": "path",
        "name": "item_sku",
        "required": true,
        "schema": {
          "example": "booster_mega_1",
          "type": "string"
        }
      },
      "limit-query-param": {
        "description": "Nombre maximal d'éléments sur une page.",
        "example": 50,
        "in": "query",
        "name": "limit",
        "required": false,
        "schema": {
          "example": 50,
          "minimum": 1,
          "type": "integer"
        }
      },
      "offer_chain_id-path-param": {
        "description": "ID de la chaîne d'offres.",
        "in": "path",
        "name": "offer_chain_id",
        "required": true,
        "schema": {
          "example": 101,
          "type": "integer"
        }
      },
      "offer_chain_step_number-path-param": {
        "description": "Numéro de l'étape de la chaîne d'offres.",
        "in": "path",
        "name": "step_number",
        "required": true,
        "schema": {
          "example": 1,
          "type": "integer"
        }
      },
      "offset-query-param": {
        "description": "Numéro de l'élément à partir duquel la liste est générée (le décompte commence à 0).",
        "example": 0,
        "in": "query",
        "name": "offset",
        "required": false,
        "schema": {
          "example": 0,
          "minimum": 0,
          "type": "integer"
        }
      },
      "personalized-catalog-rule_id-path-param": {
        "description": "ID de règle.",
        "in": "path",
        "name": "rule_id",
        "required": true,
        "schema": {
          "example": 1,
          "type": "number"
        }
      },
      "project_id-path-param": {
        "description": "Project ID. You can find this parameter in your [Publisher Account](https://publisher.xsolla.com/0/projects/0/) next to the project name and in the browser address bar when working with a project. The URL has the following format: `https://publisher.xsolla.com/<merchant_id>/projects/<project_id>`.",
        "in": "path",
        "name": "project_id",
        "required": true,
        "schema": {
          "example": 44056,
          "type": "integer"
        }
      },
      "promocode_code-path-param": {
        "description": "Code unique sensible à la casse. Comprend des lettres et des chiffres.",
        "in": "path",
        "name": "promocode_code",
        "required": true,
        "schema": {
          "example": "SO6rew99j9",
          "maxLength": 128,
          "minLength": 1,
          "type": "string"
        }
      },
      "promotion_id-path-param": {
        "description": "ID de la promotion. Identifiant unique de la promotion au sein du projet.",
        "in": "path",
        "name": "promotion_id",
        "required": true,
        "schema": {
          "example": 111425,
          "type": "integer"
        }
      },
      "reward_chain_id-path-param": {
        "description": "ID de la chaîne de récompenses.",
        "in": "path",
        "name": "reward_chain_id",
        "required": true,
        "schema": {
          "example": 101,
          "type": "integer"
        }
      },
      "reward_chain_step_id-path-param": {
        "description": "ID de l'étape de la chaîne de récompenses.",
        "in": "path",
        "name": "step_id",
        "required": true,
        "schema": {
          "example": 120,
          "type": "integer"
        }
      },
      "type-daily-chain-query-param": {
        "description": "Filtre les récompenses quotidiennes pour ne renvoyer que le type spécifié.",
        "in": "query",
        "name": "type",
        "required": false,
        "schema": {
          "enum": [
            "calendar_hard",
            "rolling_skippable",
            "rolling_unskippable"
          ],
          "type": "string"
        }
      },
      "user_external_id-query-param": {
        "description": "External ID de l'utilisateur",
        "in": "query",
        "name": "user_external_id",
        "required": true,
        "schema": {
          "example": "d342dad2-9d59-11e9-a384-42010aa8003f",
          "type": "string"
        }
      },
      "value_point_sku-path-param": {
        "description": "UGS du point de valeur.",
        "in": "path",
        "name": "value_point_sku",
        "required": true,
        "schema": {
          "example": "value_point_3",
          "type": "string"
        }
      }
    },
    "requestBodies": {
      "Promotions_cancel-promo-code-model": {
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "cart": {
                  "properties": {
                    "id": {
                      "default": "current",
                      "description": "ID de panier.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "id"
                  ],
                  "type": [
                    "object",
                    "null"
                  ]
                }
              },
              "type": "object"
            }
          }
        }
      },
      "Promotions_coupon-create": {
        "content": {
          "application/json": {
            "examples": {
              "personalized": {
                "value": {
                  "attribute_conditions": [
                    {
                      "attribute": "account_status",
                      "can_be_missing": false,
                      "operator": "eq",
                      "type": "string",
                      "value": "golden"
                    }
                  ],
                  "bonus": [
                    {
                      "quantity": 1,
                      "sku": "com.xsolla.elven_sword_2"
                    }
                  ],
                  "external_id": "coupon_external_id",
                  "name": {
                    "de-DE": "Neujahrsbonus",
                    "en-US": "New Year Bonus"
                  },
                  "promotion_periods": [
                    {
                      "date_from": "2020-04-15T18:16:00+05:00",
                      "date_until": "2020-04-25T18:16:00+05:00"
                    }
                  ],
                  "redeem_code_limit": 1,
                  "redeem_total_limit": 100,
                  "redeem_user_limit": 1
                }
              },
              "simple": {
                "value": {
                  "bonus": [
                    {
                      "quantity": 1,
                      "sku": "com.xsolla.elven_sword_1"
                    }
                  ],
                  "external_id": "coupon_external_id",
                  "name": {
                    "de-DE": "Neujahrsbonus",
                    "en-US": "New Year Bonus"
                  },
                  "promotion_periods": [
                    {
                      "date_from": "2020-04-15T18:16:00+05:00",
                      "date_until": "2020-04-25T18:16:00+05:00"
                    },
                    {
                      "date_from": "2020-05-15T18:16:00+05:00",
                      "date_until": "2020-05-25T18:16:00+05:00"
                    }
                  ],
                  "redeem_code_limit": 1,
                  "redeem_total_limit": 100,
                  "redeem_user_limit": 1
                }
              }
            },
            "schema": {
              "properties": {
                "attribute_conditions": {
                  "$ref": "#/components/schemas/promotion_user-attribute_conditions_model-post"
                },
                "bonus": {
                  "$ref": "#/components/schemas/Promotions_coupon_bonus"
                },
                "external_id": {
                  "$ref": "#/components/schemas/Promotions_coupon-external_id"
                },
                "name": {
                  "$ref": "#/components/schemas/Promotions_coupon_name"
                },
                "promotion_periods": {
                  "$ref": "#/components/schemas/promotion_periods"
                },
                "redeem_code_limit": {
                  "$ref": "#/components/schemas/Promotions_redeem_code_limit"
                },
                "redeem_total_limit": {
                  "$ref": "#/components/schemas/Promotions_coupon-redeem_total_limit"
                },
                "redeem_user_limit": {
                  "$ref": "#/components/schemas/Promotions_coupon-redeem_user_limit"
                }
              },
              "required": [
                "external_id",
                "name"
              ],
              "type": "object"
            }
          }
        }
      },
      "Promotions_coupon-update": {
        "content": {
          "application/json": {
            "examples": {
              "personalized": {
                "value": {
                  "attribute_conditions": [
                    {
                      "attribute": "account_status",
                      "can_be_missing": false,
                      "operator": "eq",
                      "type": "string",
                      "value": "golden"
                    }
                  ],
                  "bonus": [
                    {
                      "quantity": 1,
                      "sku": "com.xsolla.elven_sword_2"
                    }
                  ],
                  "name": {
                    "de-DE": "Neujahrsbonus",
                    "en-US": "New Year Bonus"
                  },
                  "promotion_periods": [
                    {
                      "date_from": "2020-04-15T18:16:00+05:00",
                      "date_until": "2020-04-25T18:16:00+05:00"
                    }
                  ],
                  "redeem_code_limit": 1,
                  "redeem_total_limit": 100,
                  "redeem_user_limit": 1
                }
              },
              "simple": {
                "value": {
                  "bonus": [
                    {
                      "quantity": 1,
                      "sku": "com.xsolla.elven_sword_1"
                    }
                  ],
                  "name": {
                    "de-DE": "Neujahrsbonus",
                    "en-US": "New Year Bonus"
                  },
                  "promotion_periods": [
                    {
                      "date_from": "2020-04-15T18:16:00+05:00",
                      "date_until": "2020-04-25T18:16:00+05:00"
                    },
                    {
                      "date_from": "2020-05-15T18:16:00+05:00",
                      "date_until": "2020-05-25T18:16:00+05:00"
                    }
                  ],
                  "redeem_code_limit": 1,
                  "redeem_total_limit": 100,
                  "redeem_user_limit": 1
                }
              }
            },
            "schema": {
              "properties": {
                "attribute_conditions": {
                  "$ref": "#/components/schemas/promotion_user-attribute_conditions_model-post"
                },
                "bonus": {
                  "$ref": "#/components/schemas/Promotions_coupon_bonus"
                },
                "name": {
                  "$ref": "#/components/schemas/Promotions_coupon_name"
                },
                "promotion_periods": {
                  "$ref": "#/components/schemas/promotion_periods"
                },
                "redeem_code_limit": {
                  "$ref": "#/components/schemas/Promotions_redeem_code_limit"
                },
                "redeem_total_limit": {
                  "$ref": "#/components/schemas/Promotions_coupon-redeem_total_limit"
                },
                "redeem_user_limit": {
                  "$ref": "#/components/schemas/Promotions_coupon-redeem_user_limit"
                }
              },
              "required": [
                "name"
              ],
              "type": "object"
            }
          }
        }
      },
      "Promotions_create-coupon-promocode-code": {
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "coupon_code": {
                  "$ref": "#/components/schemas/Promotions_coupon_code"
                }
              },
              "type": "object"
            }
          }
        }
      },
      "Promotions_create-update-bonus-promotion": {
        "content": {
          "application/json": {
            "examples": {
              "personalized": {
                "value": {
                  "attribute_conditions": [
                    {
                      "attribute": "account_status",
                      "can_be_missing": false,
                      "operator": "eq",
                      "type": "string",
                      "value": "golden"
                    }
                  ],
                  "bonus": [
                    {
                      "quantity": 50000,
                      "sku": "com.xsolla.mp_credits"
                    }
                  ],
                  "condition": [
                    {
                      "sku": "com.xsolla.year_1_season_pass"
                    }
                  ],
                  "name": {
                    "de-DE": "Neujahrsbonus",
                    "en-US": "New Year Bonus"
                  },
                  "promotion_periods": [
                    {
                      "date_from": "2020-04-15T18:16:00+05:00",
                      "date_until": "2020-04-25T18:16:00+05:00"
                    }
                  ]
                }
              },
              "simple": {
                "value": {
                  "bonus": [
                    {
                      "quantity": 1,
                      "sku": "com.xsolla.elven_sword_1"
                    },
                    {
                      "quantity": 2,
                      "sku": "com.xsolla.elven_shield_1"
                    },
                    {
                      "quantity": 2,
                      "sku": "com.xsolla.elven_gloves_1"
                    }
                  ],
                  "condition": [
                    {
                      "sku": "com.xsolla.elven_boots_1"
                    },
                    {
                      "sku": "com.xsolla.elven_knife_1"
                    }
                  ],
                  "name": {
                    "de-DE": "Neujahrsbonus",
                    "en-US": "New Year Bonus"
                  },
                  "promotion_periods": [
                    {
                      "date_from": "2020-04-15T18:16:00+05:00",
                      "date_until": "2020-04-25T18:16:00+05:00"
                    },
                    {
                      "date_from": "2020-05-15T18:16:00+05:00",
                      "date_until": "2020-05-25T18:16:00+05:00"
                    }
                  ]
                }
              },
              "with excluded promotions": {
                "value": {
                  "bonus": [
                    {
                      "quantity": 50000,
                      "sku": "com.xsolla.mp_credits"
                    }
                  ],
                  "condition": [
                    {
                      "sku": "com.xsolla.year_1_season_pass"
                    }
                  ],
                  "excluded_promotions": [
                    12,
                    789
                  ],
                  "name": {
                    "de-DE": "Neujahrsbonus",
                    "en-US": "New Year Bonus"
                  },
                  "promotion_periods": [
                    {
                      "date_from": "2020-04-15T18:16:00+05:00",
                      "date_until": "2020-04-25T18:16:00+05:00"
                    }
                  ]
                }
              },
              "with price conditions": {
                "value": {
                  "bonus": [
                    {
                      "quantity": 1,
                      "sku": "com.xsolla.elven_sword_2"
                    },
                    {
                      "quantity": 2,
                      "sku": "com.xsolla.elven_shield_2"
                    },
                    {
                      "quantity": 2,
                      "sku": "com.xsolla.elven_gloves_2"
                    }
                  ],
                  "condition": [
                    {
                      "sku": "com.xsolla.elven_boots_2"
                    },
                    {
                      "sku": "com.xsolla.elven_knife_2"
                    }
                  ],
                  "name": {
                    "de-DE": "Neujahrsbonus",
                    "en-US": "New Year Bonus"
                  },
                  "price_conditions": [
                    {
                      "operator": "gt",
                      "value": "10.0000"
                    },
                    {
                      "operator": "lt",
                      "value": "20.0000"
                    }
                  ],
                  "promotion_periods": [
                    {
                      "date_from": "2020-04-15T18:16:00+05:00",
                      "date_until": "2020-04-25T18:16:00+05:00"
                    }
                  ]
                }
              }
            },
            "schema": {
              "properties": {
                "attribute_conditions": {
                  "$ref": "#/components/schemas/promotion_user-attribute_conditions_model-post"
                },
                "bonus": {
                  "items": {
                    "description": "Liste des objets qui seront ajoutés à l'achat de l'utilisateur en tant que bonus.",
                    "properties": {
                      "quantity": {
                        "default": 1,
                        "description": "Quantité de l'objet.",
                        "type": "number"
                      },
                      "sku": {
                        "default": "elven_shield",
                        "description": "UGS de l'objet.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": [
                    "array",
                    "null"
                  ]
                },
                "condition": {
                  "description": "Ensemble d'objets devant être inclus dans l'achat pour l'application d'une promotion. Si ce paramètre est défini sur `null`, la promotion s'applique à tous les achats effectués dans au sein du projet.",
                  "items": {
                    "properties": {
                      "sku": {
                        "default": "elven_sword",
                        "description": "UGS de l'objet.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": [
                    "array",
                    "null"
                  ]
                },
                "excluded_promotions": {
                  "$ref": "#/components/schemas/excluded_promotions"
                },
                "id": {
                  "description": "ID de la promotion. Identifiant unique de la promotion au sein du projet.",
                  "type": "integer"
                },
                "is_enabled": {
                  "$ref": "#/components/schemas/Promotions_is_enabled"
                },
                "limits": {
                  "$ref": "#/components/schemas/Promotions_promotion_limits"
                },
                "name": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Nom de la promotion. Doit comprendre des paires clé/valeur, où la clé est une région au format \"^[a-z]{2}-[A-Z]{2}$\", la valeur est une chaîne.",
                  "example": {
                    "de-DE": "Sommersaison Bonus",
                    "en-US": "Summer season bonus"
                  },
                  "type": "object"
                },
                "price_conditions": {
                  "$ref": "#/components/schemas/price_conditions_bonus"
                },
                "promotion_periods": {
                  "$ref": "#/components/schemas/promotion_periods"
                }
              },
              "required": [
                "condition",
                "bonus",
                "name"
              ],
              "type": "object"
            }
          }
        }
      },
      "Promotions_create-update-item-promotion": {
        "content": {
          "application/json": {
            "examples": {
              "personalized": {
                "value": {
                  "attribute_conditions": [
                    {
                      "attribute": "race",
                      "operator": "eq",
                      "type": "string",
                      "value": "ork"
                    },
                    {
                      "attribute": "level",
                      "can_be_missing": true,
                      "operator": "eq",
                      "type": "number",
                      "value": "10"
                    }
                  ],
                  "discount": {
                    "percent": "24.00"
                  },
                  "is_enabled": true,
                  "items": [],
                  "name": {
                    "en-US": "Ork set discount",
                    "ru-RU": "Скидка на набор для орка"
                  },
                  "promotion_periods": [
                    {
                      "date_from": "2020-04-15T18:16:00+05:00",
                      "date_until": "2020-04-25T18:16:00+05:00"
                    }
                  ]
                }
              },
              "simple": {
                "value": {
                  "discount": {
                    "percent": "10.00"
                  },
                  "is_enabled": true,
                  "items": [
                    {
                      "sku": "com.xsolla.elven_sword_1"
                    },
                    {
                      "sku": "com.xsolla.elven_helmet_1"
                    },
                    {
                      "sku": "com.xsolla.elven_armor_1"
                    }
                  ],
                  "name": {
                    "en-US": "Promotion",
                    "ru-RU": "Акция"
                  },
                  "promotion_periods": [
                    {
                      "date_from": "2020-04-15T18:16:00+05:00",
                      "date_until": "2020-04-25T18:16:00+05:00"
                    },
                    {
                      "date_from": "2020-05-16T18:16:00+05:00",
                      "date_until": "2020-05-25T18:16:00+05:00"
                    }
                  ]
                }
              },
              "with excluded promotions": {
                "value": {
                  "discount": {
                    "percent": "24.00"
                  },
                  "excluded_promotions": [
                    12,
                    789
                  ],
                  "is_enabled": true,
                  "items": [],
                  "name": {
                    "en-US": "Ork set discount",
                    "ru-RU": "Скидка на набор для орка"
                  },
                  "promotion_periods": [
                    {
                      "date_from": "2020-04-15T18:16:00+05:00",
                      "date_until": "2020-04-25T18:16:00+05:00"
                    }
                  ]
                }
              },
              "with price condition": {
                "value": {
                  "discount": {
                    "percent": "24.00"
                  },
                  "items": [],
                  "name": {
                    "en-US": "Ork set discount",
                    "ru-RU": "Скидка на набор для орка"
                  },
                  "price_conditions": [
                    {
                      "operator": "ge",
                      "value": "10.5000"
                    },
                    {
                      "operator": "lt",
                      "value": "20.5000"
                    }
                  ],
                  "promotion_periods": [
                    {
                      "date_from": "2020-04-15T18:16:00+05:00",
                      "date_until": "2020-04-25T18:16:00+05:00"
                    }
                  ]
                }
              }
            },
            "schema": {
              "properties": {
                "attribute_conditions": {
                  "$ref": "#/components/schemas/promotion_user-attribute_conditions_model-post"
                },
                "discount": {
                  "properties": {
                    "percent": {
                      "description": "Pourcentage de la remise.\nLe prix de l'objet sera réduit d'une valeur calculée à l'aide de ce pourcentage et arrondie à 2 décimales.",
                      "example": 10,
                      "type": "string"
                    }
                  },
                  "required": [
                    "percent"
                  ],
                  "type": "object"
                },
                "excluded_promotions": {
                  "$ref": "#/components/schemas/excluded_promotions"
                },
                "is_enabled": {
                  "$ref": "#/components/schemas/Promotions_is_enabled"
                },
                "items": {
                  "items": {
                    "description": "Liste des objets qui seront concernés par la remise.",
                    "properties": {
                      "sku": {
                        "default": "elven_sword",
                        "description": "UGS de l'objet.",
                        "type": "string"
                      }
                    },
                    "required": [
                      "sku"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "limits": {
                  "$ref": "#/components/schemas/Promotions_promotion_limits"
                },
                "name": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Nom de la promotion. Doit comprendre des paires clé/valeur,\noù la clé est une région au format \"^[a-z]{2}-[A-Z]{2}$\", la valeur est une chaîne.",
                  "example": {
                    "en-US": "Promotion",
                    "ru-RU": "Акция"
                  },
                  "type": "object"
                },
                "price_conditions": {
                  "$ref": "#/components/schemas/price_conditions_discount"
                },
                "promotion_periods": {
                  "$ref": "#/components/schemas/promotion_periods"
                }
              },
              "required": [
                "items",
                "discount",
                "name"
              ],
              "type": "object"
            }
          }
        },
        "description": "Objet contenant des données de la promotion.",
        "required": true
      },
      "Promotions_promocode-create": {
        "content": {
          "application/json": {
            "examples": {
              "personalized": {
                "value": {
                  "attribute_conditions": [
                    {
                      "attribute": "account_status",
                      "can_be_missing": false,
                      "operator": "eq",
                      "type": "string",
                      "value": "golden"
                    }
                  ],
                  "discount": {
                    "percent": "10.10"
                  },
                  "external_id": "coupon_external_id",
                  "name": {
                    "de-DE": "Neujahrsrabatt",
                    "en-US": "New Year Discount"
                  },
                  "promotion_periods": [
                    {
                      "date_from": "2020-04-15T18:16:00+05:00",
                      "date_until": "2020-04-25T18:16:00+05:00"
                    }
                  ],
                  "redeem_code_limit": 1,
                  "redeem_total_limit": 100,
                  "redeem_user_limit": 1
                }
              },
              "simple bonus": {
                "value": {
                  "bonus": [
                    {
                      "quantity": 1,
                      "sku": "com.xsolla.elven_sword_1"
                    },
                    {
                      "quantity": 2,
                      "sku": "com.xsolla.elven_shield_1"
                    },
                    {
                      "quantity": 2,
                      "sku": "com.xsolla.elven_gloves_1"
                    }
                  ],
                  "external_id": "promo_code_external_id",
                  "name": {
                    "de-DE": "Neujahrsbonus",
                    "en-US": "New Year Bonus"
                  },
                  "promotion_periods": [
                    {
                      "date_from": "2020-04-15T18:16:00+05:00",
                      "date_until": "2020-04-25T18:16:00+05:00"
                    },
                    {
                      "date_from": "2020-05-15T18:16:00+05:00",
                      "date_until": "2020-05-25T18:16:00+05:00"
                    }
                  ],
                  "redeem_code_limit": 1,
                  "redeem_total_limit": 100,
                  "redeem_user_limit": 1
                }
              },
              "simple discount": {
                "value": {
                  "discount": {
                    "percent": "10.10"
                  },
                  "external_id": "promo_code_external_id",
                  "name": {
                    "de-DE": "Neujahrsrabatt",
                    "en-US": "New Year Discount"
                  },
                  "promotion_periods": [
                    {
                      "date_from": "2020-04-15T18:16:00+05:00",
                      "date_until": "2020-04-25T18:16:00+05:00"
                    }
                  ],
                  "redeem_code_limit": 1,
                  "redeem_total_limit": 100,
                  "redeem_user_limit": 1
                }
              },
              "with excluded promotions": {
                "value": {
                  "discount": {
                    "percent": "10.10"
                  },
                  "excluded_promotions": [
                    12,
                    789
                  ],
                  "external_id": "coupon_external_id",
                  "name": {
                    "de-DE": "Neujahrsrabatt",
                    "en-US": "New Year Discount"
                  },
                  "promotion_periods": [
                    {
                      "date_from": "2020-04-15T18:16:00+05:00",
                      "date_until": "2020-04-25T18:16:00+05:00"
                    }
                  ],
                  "redeem_code_limit": 1,
                  "redeem_total_limit": 100,
                  "redeem_user_limit": 1
                }
              },
              "with item price conditions": {
                "value": {
                  "bonus": [
                    {
                      "quantity": 1,
                      "sku": "com.xsolla.elven_sword_3"
                    },
                    {
                      "quantity": 2,
                      "sku": "com.xsolla.elven_shield_3"
                    },
                    {
                      "quantity": 2,
                      "sku": "com.xsolla.elven_gloves_3"
                    }
                  ],
                  "discount": {
                    "percent": "10.10"
                  },
                  "external_id": "promo_code_external_id",
                  "item_price_conditions": [
                    {
                      "operator": "ge",
                      "value": "10.5000"
                    },
                    {
                      "operator": "lt",
                      "value": "50.0000"
                    }
                  ],
                  "name": {
                    "de-DE": "Neujahrsbonus",
                    "en-US": "New Year Bonus"
                  },
                  "promotion_periods": [
                    {
                      "date_from": "2020-04-15T18:16:00+05:00",
                      "date_until": "2020-04-25T18:16:00+05:00"
                    }
                  ],
                  "redeem_code_limit": 1,
                  "redeem_total_limit": 100,
                  "redeem_user_limit": 1
                }
              },
              "with price conditions": {
                "value": {
                  "bonus": [
                    {
                      "quantity": 1,
                      "sku": "com.xsolla.elven_sword_2"
                    },
                    {
                      "quantity": 2,
                      "sku": "com.xsolla.elven_shield_2"
                    },
                    {
                      "quantity": 2,
                      "sku": "com.xsolla.elven_gloves_2"
                    }
                  ],
                  "external_id": "promo_code_external_id",
                  "name": {
                    "de-DE": "Neujahrsbonus",
                    "en-US": "New Year Bonus"
                  },
                  "price_conditions": [
                    {
                      "operator": "ge",
                      "value": "10.5000"
                    },
                    {
                      "operator": "lt",
                      "value": "50.0000"
                    }
                  ],
                  "promotion_periods": [
                    {
                      "date_from": "2020-04-15T18:16:00+05:00",
                      "date_until": "2020-04-25T18:16:00+05:00"
                    }
                  ],
                  "redeem_code_limit": 1,
                  "redeem_total_limit": 100,
                  "redeem_user_limit": 1
                }
              }
            },
            "schema": {
              "properties": {
                "attribute_conditions": {
                  "$ref": "#/components/schemas/promotion_user-attribute_conditions_model-post"
                },
                "bonus": {
                  "$ref": "#/components/schemas/Promotions_coupon_bonus"
                },
                "discount": {
                  "example": {
                    "percent": "10.10"
                  },
                  "properties": {
                    "percent": {
                      "$ref": "#/components/schemas/Promotions_promotion_discount_percent"
                    }
                  },
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "discounted_items": {
                  "$ref": "#/components/schemas/Promotions_discounted_items"
                },
                "excluded_promotions": {
                  "$ref": "#/components/schemas/excluded_promotions"
                },
                "external_id": {
                  "$ref": "#/components/schemas/Promotions_coupon-external_id"
                },
                "item_price_conditions": {
                  "$ref": "#/components/schemas/item_price_conditions_promocode"
                },
                "name": {
                  "$ref": "#/components/schemas/Promotions_coupon_name"
                },
                "price_conditions": {
                  "$ref": "#/components/schemas/price_conditions_promocode"
                },
                "promotion_periods": {
                  "$ref": "#/components/schemas/promotion_periods"
                },
                "redeem_code_limit": {
                  "$ref": "#/components/schemas/Promotions_redeem_code_limit"
                },
                "redeem_total_limit": {
                  "$ref": "#/components/schemas/Promotions_coupon-redeem_total_limit"
                },
                "redeem_user_limit": {
                  "$ref": "#/components/schemas/Promotions_coupon-redeem_user_limit"
                }
              },
              "required": [
                "external_id",
                "name"
              ],
              "type": "object"
            }
          }
        }
      },
      "Promotions_promocode-update": {
        "content": {
          "application/json": {
            "examples": {
              "personalized": {
                "value": {
                  "attribute_conditions": [
                    {
                      "attribute": "account_status",
                      "can_be_missing": false,
                      "operator": "eq",
                      "type": "string",
                      "value": "golden"
                    }
                  ],
                  "discount": {
                    "percent": "10.10"
                  },
                  "name": {
                    "de-DE": "Neujahrsrabatt",
                    "en-US": "New Year Discount"
                  },
                  "promotion_periods": [
                    {
                      "date_from": "2020-04-15T18:16:00+05:00",
                      "date_until": "2020-04-25T18:16:00+05:00"
                    }
                  ],
                  "redeem_code_limit": 1,
                  "redeem_total_limit": 100,
                  "redeem_user_limit": 1
                }
              },
              "simple bonus": {
                "value": {
                  "bonus": [
                    {
                      "quantity": 1,
                      "sku": "com.xsolla.elven_sword_1"
                    },
                    {
                      "quantity": 2,
                      "sku": "com.xsolla.elven_shield_1"
                    },
                    {
                      "quantity": 2,
                      "sku": "com.xsolla.elven_gloves_1"
                    }
                  ],
                  "name": {
                    "de-DE": "Neujahrsbonus",
                    "en-US": "New Year Bonus"
                  },
                  "promotion_periods": [
                    {
                      "date_from": "2020-04-15T18:16:00+05:00",
                      "date_until": "2020-04-25T18:16:00+05:00"
                    },
                    {
                      "date_from": "2020-05-15T18:16:00+05:00",
                      "date_until": "2020-05-25T18:16:00+05:00"
                    }
                  ],
                  "redeem_code_limit": 1,
                  "redeem_total_limit": 100,
                  "redeem_user_limit": 1
                }
              },
              "simple discount": {
                "value": {
                  "discount": {
                    "percent": "10.10"
                  },
                  "name": {
                    "de-DE": "Neujahrsrabatt",
                    "en-US": "New Year Discount"
                  },
                  "promotion_periods": [
                    {
                      "date_from": "2020-04-15T18:16:00+05:00",
                      "date_until": "2020-04-25T18:16:00+05:00"
                    }
                  ],
                  "redeem_code_limit": 1,
                  "redeem_total_limit": 100,
                  "redeem_user_limit": 1
                }
              },
              "with excluded promotions": {
                "value": {
                  "discount": {
                    "percent": "10.10"
                  },
                  "excluded_promotions": [
                    12,
                    789
                  ],
                  "name": {
                    "de-DE": "Neujahrsrabatt",
                    "en-US": "New Year Discount"
                  },
                  "promotion_periods": [
                    {
                      "date_from": "2020-04-15T18:16:00+05:00",
                      "date_until": "2020-04-25T18:16:00+05:00"
                    }
                  ],
                  "redeem_code_limit": 1,
                  "redeem_total_limit": 100,
                  "redeem_user_limit": 1
                }
              },
              "with item price conditions": {
                "value": {
                  "bonus": [
                    {
                      "quantity": 1,
                      "sku": "com.xsolla.elven_sword_3"
                    },
                    {
                      "quantity": 2,
                      "sku": "com.xsolla.elven_shield_3"
                    },
                    {
                      "quantity": 2,
                      "sku": "com.xsolla.elven_gloves_3"
                    }
                  ],
                  "discount": {
                    "percent": "10.10"
                  },
                  "item_price_conditions": [
                    {
                      "operator": "gt",
                      "value": "10.5000"
                    },
                    {
                      "operator": "lt",
                      "value": "50.0000"
                    }
                  ],
                  "name": {
                    "de-DE": "Neujahrsbonus",
                    "en-US": "New Year Bonus"
                  },
                  "promotion_periods": [
                    {
                      "date_from": "2020-04-15T18:16:00+05:00",
                      "date_until": "2020-04-25T18:16:00+05:00"
                    }
                  ],
                  "redeem_code_limit": 1,
                  "redeem_total_limit": 100,
                  "redeem_user_limit": 1
                }
              },
              "with price conditions": {
                "value": {
                  "bonus": [
                    {
                      "quantity": 1,
                      "sku": "com.xsolla.elven_sword_2"
                    },
                    {
                      "quantity": 2,
                      "sku": "com.xsolla.elven_shield_2"
                    },
                    {
                      "quantity": 2,
                      "sku": "com.xsolla.elven_gloves_2"
                    }
                  ],
                  "name": {
                    "de-DE": "Neujahrsbonus",
                    "en-US": "New Year Bonus"
                  },
                  "price_conditions": [
                    {
                      "operator": "gt",
                      "value": "10.5000"
                    },
                    {
                      "operator": "lt",
                      "value": "50.0000"
                    }
                  ],
                  "promotion_periods": [
                    {
                      "date_from": "2020-04-15T18:16:00+05:00",
                      "date_until": "2020-04-25T18:16:00+05:00"
                    }
                  ],
                  "redeem_code_limit": 1,
                  "redeem_total_limit": 100,
                  "redeem_user_limit": 1
                }
              }
            },
            "schema": {
              "properties": {
                "attribute_conditions": {
                  "$ref": "#/components/schemas/promotion_user-attribute_conditions_model-post"
                },
                "bonus": {
                  "$ref": "#/components/schemas/Promotions_coupon_bonus"
                },
                "discount": {
                  "example": {
                    "percent": "10.10"
                  },
                  "properties": {
                    "percent": {
                      "$ref": "#/components/schemas/Promotions_promotion_discount_percent"
                    }
                  },
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "discounted_items": {
                  "$ref": "#/components/schemas/Promotions_discounted_items"
                },
                "excluded_promotions": {
                  "$ref": "#/components/schemas/excluded_promotions"
                },
                "item_price_conditions": {
                  "$ref": "#/components/schemas/item_price_conditions_promocode"
                },
                "name": {
                  "$ref": "#/components/schemas/Promotions_coupon_name"
                },
                "price_conditions": {
                  "$ref": "#/components/schemas/price_conditions_promocode"
                },
                "promotion_periods": {
                  "$ref": "#/components/schemas/promotion_periods"
                },
                "redeem_code_limit": {
                  "$ref": "#/components/schemas/Promotions_redeem_code_limit"
                },
                "redeem_total_limit": {
                  "$ref": "#/components/schemas/Promotions_coupon-redeem_total_limit"
                },
                "redeem_user_limit": {
                  "$ref": "#/components/schemas/Promotions_coupon-redeem_user_limit"
                }
              },
              "required": [
                "name"
              ],
              "type": "object"
            }
          }
        }
      },
      "Promotions_redeem-coupon-model": {
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "coupon_code": {
                  "default": "WINTER2021",
                  "description": "Code unique de coupon. Comprend des lettres et des chiffres.",
                  "example": "WINTER2021",
                  "maxLength": 128,
                  "minLength": 1,
                  "type": "string"
                },
                "selected_unit_items": {
                  "$ref": "#/components/schemas/Promotions_selected_unit_items"
                }
              },
              "type": "object"
            }
          }
        }
      },
      "Promotions_redeem-promo-code-model": {
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "cart": {
                  "properties": {
                    "id": {
                      "default": "current",
                      "description": "ID de panier.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "id"
                  ],
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "coupon_code": {
                  "default": "SUMMER2021",
                  "description": "Code unique du code promo. Comprend des lettres et des chiffres.",
                  "example": "SUMMER2021",
                  "maxLength": 128,
                  "minLength": 1,
                  "type": "string"
                },
                "selected_unit_items": {
                  "$ref": "#/components/schemas/Promotions_selected_unit_items"
                }
              },
              "type": "object"
            }
          }
        }
      },
      "Promotions_unique_catalog_offer-create": {
        "content": {
          "application/json": {
            "examples": {
              "limited": {
                "value": {
                  "date_end": "2020-04-25T18:16:00+05:00",
                  "date_start": "2020-04-15T18:16:00+05:00",
                  "external_id": "offer_external_id",
                  "items": [
                    "elven_sword",
                    "elven_boots"
                  ],
                  "name": {
                    "de-DE": "Neujahrsangebot",
                    "en-US": "New Year Offer"
                  },
                  "redeem_code_limit": 1,
                  "redeem_total_limit": 100,
                  "redeem_user_limit": 1
                }
              },
              "simple": {
                "value": {
                  "date_end": "2020-04-25T18:16:00+05:00",
                  "date_start": "2020-04-15T18:16:00+05:00",
                  "external_id": "offer_external_id",
                  "items": [
                    "elven_sword",
                    "elven_boots"
                  ],
                  "name": {
                    "de-DE": "Neujahrsangebot",
                    "en-US": "New Year Offer"
                  }
                }
              }
            },
            "schema": {
              "properties": {
                "date_end": {
                  "$ref": "#/components/schemas/Promotions_coupon_date_end"
                },
                "date_start": {
                  "$ref": "#/components/schemas/Promotions_coupon_date_start"
                },
                "external_id": {
                  "$ref": "#/components/schemas/Promotions_coupon-external_id"
                },
                "items": {
                  "$ref": "#/components/schemas/Promotions_unique_catalog_offer_items",
                  "type": "array"
                },
                "name": {
                  "$ref": "#/components/schemas/Promotions_coupon_name"
                },
                "redeem_code_limit": {
                  "$ref": "#/components/schemas/Promotions_redeem_code_limit"
                },
                "redeem_total_limit": {
                  "$ref": "#/components/schemas/Promotions_coupon-redeem_total_limit"
                },
                "redeem_user_limit": {
                  "$ref": "#/components/schemas/Promotions_coupon-redeem_user_limit"
                }
              },
              "required": [
                "external_id",
                "name"
              ],
              "type": "object"
            }
          }
        }
      },
      "Promotions_unique_catalog_offer-update": {
        "content": {
          "application/json": {
            "examples": {
              "limited": {
                "value": {
                  "items": [
                    "elven_sword",
                    "elven_boots"
                  ],
                  "name": {
                    "de-DE": "Neujahrsangebot",
                    "en-US": "New Year Offer"
                  },
                  "promotion_periods": [
                    {
                      "date_from": "2020-04-15T18:16:00+05:00",
                      "date_until": "2020-04-25T18:16:00+05:00"
                    }
                  ],
                  "redeem_code_limit": 1,
                  "redeem_total_limit": 100,
                  "redeem_user_limit": 1
                }
              },
              "simple": {
                "value": {
                  "items": [
                    "elven_sword",
                    "elven_boots"
                  ],
                  "name": {
                    "de-DE": "Neujahrsangebot",
                    "en-US": "New Year Offer"
                  },
                  "promotion_periods": [
                    {
                      "date_from": "2020-04-15T18:16:00+05:00",
                      "date_until": "2020-04-25T18:16:00+05:00"
                    },
                    {
                      "date_from": "2020-05-15T18:16:00+05:00",
                      "date_until": "2020-05-25T18:16:00+05:00"
                    }
                  ]
                }
              }
            },
            "schema": {
              "properties": {
                "items": {
                  "$ref": "#/components/schemas/Promotions_unique_catalog_offer_items"
                },
                "name": {
                  "$ref": "#/components/schemas/Promotions_coupon_name"
                },
                "promotion_periods": {
                  "$ref": "#/components/schemas/promotion_periods"
                },
                "redeem_code_limit": {
                  "$ref": "#/components/schemas/Promotions_redeem_code_limit"
                },
                "redeem_total_limit": {
                  "$ref": "#/components/schemas/Promotions_coupon-redeem_total_limit"
                },
                "redeem_user_limit": {
                  "$ref": "#/components/schemas/Promotions_coupon-redeem_user_limit"
                }
              },
              "required": [
                "name"
              ],
              "type": "object"
            }
          }
        }
      },
      "create-daily-chain": {
        "content": {
          "application/json": {
            "examples": {
              "calendar_hard": {
                "summary": "Récompense quotidienne de type `calendar_hard`",
                "value": {
                  "date_start": "2023-04-15T18:16:00+05:00",
                  "description": {
                    "en": "New daily reward short description"
                  },
                  "is_enabled": true,
                  "name": {
                    "en": "New daily reward",
                    "ru": "Новая ежедневная награда"
                  },
                  "order": 4,
                  "steps": [
                    {
                      "items": [
                        {
                          "quantity": 2,
                          "sku": "vg_enabled_shown_in_store_1"
                        }
                      ],
                      "step_number": 1
                    },
                    {
                      "items": [
                        {
                          "quantity": 2,
                          "sku": "bundle_enabled_shown_in_store_with_2_enabled_shown_in_store_vg"
                        }
                      ],
                      "step_number": 2
                    },
                    {
                      "items": [
                        {
                          "quantity": 2,
                          "sku": "vcp_enabled_shown_in_store_1_of_10_vc_enabled_shown_in_store_1"
                        }
                      ],
                      "step_number": 3
                    },
                    {
                      "items": [
                        {
                          "quantity": 1,
                          "sku": "vg_enabled_shown_in_store_1"
                        }
                      ],
                      "step_number": 4
                    },
                    {
                      "items": [
                        {
                          "quantity": 1,
                          "sku": "bundle_enabled_shown_in_store_with_2_enabled_shown_in_store_vg"
                        }
                      ],
                      "step_number": 5
                    },
                    {
                      "items": [
                        {
                          "quantity": 1,
                          "sku": "vcp_enabled_shown_in_store_1_of_10_vc_enabled_shown_in_store_1"
                        }
                      ],
                      "step_number": 6
                    }
                  ],
                  "type": "calendar_hard"
                }
              },
              "rolling_skippable": {
                "summary": "Récompense quotidienne de type `rolling_skippable`",
                "value": {
                  "date_end": "2023-05-31T10:00:00+05:00",
                  "date_start": "2023-05-01T10:00:00+05:00",
                  "description": {
                    "en": "New skippable login reward short description"
                  },
                  "is_enabled": true,
                  "is_recurrent": true,
                  "name": {
                    "en": "New skippable login reward"
                  },
                  "order": 1,
                  "steps": [
                    {
                      "items": [
                        {
                          "quantity": 1,
                          "sku": "monday_reward_item_one"
                        }
                      ],
                      "step_number": 1
                    },
                    {
                      "items": [
                        {
                          "quantity": 1,
                          "sku": "tuesday_reward_item_two"
                        }
                      ],
                      "step_number": 2
                    },
                    {
                      "items": [
                        {
                          "quantity": 1,
                          "sku": "wednesday_reward_item_three"
                        }
                      ],
                      "step_number": 3
                    },
                    {
                      "items": [
                        {
                          "quantity": 1,
                          "sku": "thursday_reward_item_four"
                        }
                      ],
                      "step_number": 4
                    },
                    {
                      "items": [
                        {
                          "quantity": 1,
                          "sku": "friday_reward_item_five"
                        }
                      ],
                      "step_number": 5
                    },
                    {
                      "items": [
                        {
                          "quantity": 1,
                          "sku": "saturday_reward_item_six"
                        }
                      ],
                      "step_number": 6
                    },
                    {
                      "items": [
                        {
                          "quantity": 1,
                          "sku": "sunday_reward_item_seven"
                        }
                      ],
                      "step_number": 7
                    }
                  ],
                  "type": "rolling_skippable"
                }
              },
              "rolling_unskippable": {
                "summary": "Récompense quotidienne de type `rolling_unskippable`",
                "value": {
                  "date_end": "2023-06-30T10:00:00+05:00",
                  "date_start": "2023-06-01T10:00:00+05:00",
                  "description": {
                    "en": "New unskippable login reward short description"
                  },
                  "is_enabled": true,
                  "is_recurrent": false,
                  "name": {
                    "en": "New unskippable login reward"
                  },
                  "order": 2,
                  "steps": [
                    {
                      "items": [
                        {
                          "quantity": 1,
                          "sku": "monday_reward_item_one"
                        }
                      ],
                      "step_number": 1
                    },
                    {
                      "items": [
                        {
                          "quantity": 1,
                          "sku": "tuesday_reward_item_two"
                        }
                      ],
                      "step_number": 2
                    },
                    {
                      "items": [
                        {
                          "quantity": 1,
                          "sku": "wednesday_reward_item_three"
                        }
                      ],
                      "step_number": 3
                    },
                    {
                      "items": [
                        {
                          "quantity": 1,
                          "sku": "thursday_reward_item_four"
                        }
                      ],
                      "step_number": 4
                    },
                    {
                      "items": [
                        {
                          "quantity": 1,
                          "sku": "friday_reward_item_five"
                        }
                      ],
                      "step_number": 5
                    }
                  ],
                  "type": "rolling_unskippable"
                }
              }
            },
            "schema": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/create-calendar-hard-daily-chain-model"
                },
                {
                  "$ref": "#/components/schemas/create-rolling-skippable-daily-chain-model"
                },
                {
                  "$ref": "#/components/schemas/create-rolling-unskippable-daily-chain-model"
                }
              ]
            }
          }
        }
      },
      "create-offer-chain": {
        "content": {
          "application/json": {
            "examples": {
              "default": {
                "summary": "Exemple de chaîne d'offres classique",
                "value": {
                  "date_end": null,
                  "date_start": "2023-04-15T18:16:00+05:00",
                  "description": {
                    "de": "Eine kurze Beschreibung einer regulären Angebotskette",
                    "en": "A short description of a regular offer chain",
                    "fr": "Une brève description d'une chaîne d'offres régulière",
                    "it": "Una breve descrizione di una catena di offerte regolare",
                    "ru": "Краткое описание обычной цепочки предложений"
                  },
                  "is_always_visible": true,
                  "is_enabled": true,
                  "name": {
                    "de": "Neue Angebotskette",
                    "en": "New offer chain",
                    "fr": "Nouvelle chaîne d'offres",
                    "it": "Nuova catena di offerte",
                    "ru": "Новая цепочка предложений"
                  },
                  "order": 4,
                  "recurrent_schedule": null,
                  "steps": [
                    {
                      "is_free": false,
                      "items": [
                        {
                          "quantity": 2,
                          "sku": "chain_step_1_paid_bundle_sku"
                        }
                      ],
                      "step_number": 1
                    },
                    {
                      "is_free": true,
                      "items": [
                        {
                          "quantity": 1,
                          "sku": "chain_step_2_free_virtual_good_sku"
                        }
                      ],
                      "step_number": 2
                    },
                    {
                      "is_free": false,
                      "items": [
                        {
                          "quantity": 5,
                          "sku": "chain_step_3_paid_virtual_currency_package_sku"
                        }
                      ],
                      "step_number": 3
                    },
                    {
                      "is_free": true,
                      "items": [
                        {
                          "quantity": 1,
                          "sku": "chain_step_4_free_bundle_sku"
                        }
                      ],
                      "step_number": 4
                    }
                  ]
                }
              },
              "personalized-default": {
                "summary": "Exemple de chaîne d'offres par défaut personnalisée",
                "value": {
                  "date_end": null,
                  "date_start": "2023-04-15T18:16:00+05:00",
                  "description": {
                    "de": "Standard-personalisierte Angebotskette für Benutzer, die die Bedingungen anderer personalisierter Ketten nicht erfüllen",
                    "en": "Default personalized offer chain for users that do not meet the conditions of other personalized chains",
                    "fr": "Chaîne d'offres personnalisée par défaut pour les utilisateurs qui ne répondent pas aux conditions des autres chaînes personnalisées",
                    "it": "Catena di offerte personalizzata predefinita per gli utenti che non soddisfano le condizioni di altre catene personalizzate",
                    "ru": "Персонализированная цепочка по умолчанию для пользователей, не подходящих под условия других персонализированных цепочек"
                  },
                  "is_always_visible": false,
                  "is_enabled": true,
                  "name": {
                    "de": "Neue personalisierte Standard-Angebotskette",
                    "en": "New personalized default offer chain",
                    "fr": "Nouvelle chaîne d'offres personnalisée par défaut",
                    "it": "Nuova catena di offerte personalizzata predefinita",
                    "ru": "Новая персонализированная цепочка предложений по умолчанию"
                  },
                  "order": 4,
                  "recurrent_schedule": null,
                  "steps": [
                    {
                      "is_free": false,
                      "items": [
                        {
                          "quantity": 1,
                          "sku": "chain_x_step_1_item_default"
                        }
                      ],
                      "step_number": 1
                    },
                    {
                      "is_free": false,
                      "items": [
                        {
                          "quantity": 2,
                          "sku": "chain_x_step_2_item_default"
                        }
                      ],
                      "step_number": 2
                    },
                    {
                      "is_free": true,
                      "items": [
                        {
                          "quantity": 1,
                          "sku": "chain_x_step_3_free_item_default"
                        }
                      ],
                      "step_number": 3
                    }
                  ]
                }
              },
              "personalized-with-conditions": {
                "summary": "Exemple de chaîne d'offres personnalisée selon les attributs utilisateur",
                "value": {
                  "attribute_conditions": [
                    {
                      "attribute": "race",
                      "can_be_missing": false,
                      "operator": "eq",
                      "type": "string",
                      "value": "elf"
                    },
                    {
                      "attribute": "level",
                      "can_be_missing": false,
                      "operator": "ge",
                      "type": "number",
                      "value": "10"
                    },
                    {
                      "attribute": "10_level_up_date",
                      "can_be_missing": false,
                      "operator": "le",
                      "type": "date",
                      "value": "2026-01-01T00:00:00"
                    }
                  ],
                  "date_end": null,
                  "date_start": "2023-04-15T18:16:00+05:00",
                  "description": {
                    "de": "Personalisierte Angebotskette mit Benutzerattributbedingungen - für Elfen der Stufe 10 und höher, die Stufe 10 spätestens am 2026-01-01 00:00:00 erreicht haben, einschließlich",
                    "en": "Personalized offer chain with user attribute conditions - for level 10 and above elves who reached level 10 no later than 2026-01-01 00:00:00, inclusive",
                    "fr": "Chaîne d'offres personnalisée avec des conditions d'attribut utilisateur - pour les elfes de niveau 10 et plus qui ont atteint le niveau 10 au plus tard le 2026-01-01 00:00:00, inclus",
                    "it": "Catena di offerte personalizzata con condizioni di attributo utente - per elfi di livello 10 e superiore che hanno raggiunto il livello 10 non più tardi del 2026-01-01 00:00:00, inclusi",
                    "ru": "Персонализированная цепочка предложений с условиями по атрибутам пользователя - для эльфов уровня 10 и выше, достигших 10 уровня не позднее 2026-01-01 00:00:00 включительно"
                  },
                  "is_always_visible": false,
                  "is_enabled": true,
                  "name": {
                    "de": "Neue personalisierte Angebotskette",
                    "en": "New personalized offer chain",
                    "fr": "Nouvelle chaîne d'offres personnalisée",
                    "it": "Nuova catena di offerte personalizzata",
                    "ru": "Новая персонализированная цепочка предложений"
                  },
                  "order": 4,
                  "recurrent_schedule": null,
                  "steps": [
                    {
                      "is_free": false,
                      "items": [
                        {
                          "quantity": 1,
                          "sku": "chain_x_step_1_item_for_elves_level_10_and_above"
                        }
                      ],
                      "step_number": 1
                    },
                    {
                      "is_free": false,
                      "items": [
                        {
                          "quantity": 2,
                          "sku": "chain_x_step_2_item_for_elves_level_10_and_above"
                        }
                      ],
                      "step_number": 2
                    },
                    {
                      "is_free": true,
                      "items": [
                        {
                          "quantity": 1,
                          "sku": "chain_x_step_3_free_item_for_elves_level_10_and_above"
                        }
                      ],
                      "step_number": 3
                    }
                  ]
                }
              },
              "recurrent": {
                "summary": "Exemple de chaîne d'offres récurrente",
                "value": {
                  "date_end": "2025-04-25T18:16:00+05:00",
                  "date_start": "2023-04-15T18:16:00+05:00",
                  "description": {
                    "de": "Eine wiederkehrende Angebotskette, die wöchentlich mittwochs um 07:00 Uhr GMT+3 zurückgesetzt wird",
                    "en": "A recurring offer chain that resets weekly on Wednesdays at 07:00 AM GMT+3",
                    "fr": "Une chaîne d'offres récurrente qui se réinitialise chaque semaine le mercredi à 07h00 GMT+3",
                    "it": "Una catena di offerte ricorrente che si resetta settimanalmente il mercoledì alle 07:00 GMT+3",
                    "ru": "Рекуррентная цепочка предложений, которая сбрасывается еженедельно по средам в 07:00 по GMT+3"
                  },
                  "is_always_visible": true,
                  "is_enabled": false,
                  "name": {
                    "de": "Neue wiederkehrende Angebotskette",
                    "en": "New recurrent offer chain",
                    "fr": "Nouvelle chaîne d'offres récurrente",
                    "it": "Nuova catena di offerte ricorrente",
                    "ru": "Новая рекуррентная цепочка предложений"
                  },
                  "order": 1,
                  "recurrent_schedule": {
                    "day_of_week": 3,
                    "interval_type": "weekly",
                    "time": "07:00:00+03:00"
                  },
                  "steps": [
                    {
                      "is_free": false,
                      "items": [
                        {
                          "quantity": 2,
                          "sku": "chain_step_1_paid_bundle_sku"
                        }
                      ],
                      "step_number": 1
                    },
                    {
                      "is_free": true,
                      "items": [
                        {
                          "quantity": 3,
                          "sku": "chain_step_2_free_virtual_good_sku"
                        }
                      ],
                      "step_number": 2
                    }
                  ]
                }
              }
            },
            "schema": {
              "$ref": "#/components/schemas/create-offer-chain-model"
            }
          }
        }
      },
      "create-reward-chain": {
        "content": {
          "application/json": {
            "examples": {
              "clan": {
                "summary": "Exemple de chaîne de récompenses de clan",
                "value": {
                  "clan_type": "guild",
                  "description": {
                    "en": "Clan reward chain description."
                  },
                  "image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png",
                  "is_enabled": true,
                  "long_description": {
                    "en": "Clan reward chain long description."
                  },
                  "name": {
                    "en": "Clan reward chain"
                  },
                  "order": 1,
                  "periods": [
                    {
                      "date_from": "2026-01-01T01:00:00+05:00",
                      "date_until": "2026-01-31T23:59:59+05:00"
                    },
                    {
                      "date_from": "2026-02-01T01:00:00+05:00",
                      "date_until": "2026-02-28T23:59:59+05:00"
                    }
                  ],
                  "popup_header": {
                    "en": "How to unlock rewards"
                  },
                  "popup_image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png",
                  "popup_instruction": {
                    "en": "You must be a clan member to get clan rewards. You join a clan when a clan member invites you to the clan, and you accept the invite. You can also create your own clan."
                  },
                  "recurrent_schedule": {
                    "day_of_week": 1,
                    "interval_type": "weekly",
                    "time": "01:00:00+08:00"
                  },
                  "steps": [
                    {
                      "image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png",
                      "name": {
                        "en": "First step of the reward chain"
                      },
                      "price": {
                        "amount": 10
                      },
                      "reward": [
                        {
                          "quantity": 5,
                          "sku": "com.xsolla.item_1"
                        },
                        {
                          "quantity": 1,
                          "sku": "com.xsolla.item_2"
                        }
                      ]
                    },
                    {
                      "image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png",
                      "name": {
                        "en": "Second step of the reward chain"
                      },
                      "price": {
                        "amount": 15
                      },
                      "reward": [
                        {
                          "quantity": 5,
                          "sku": "com.xsolla.item_3"
                        },
                        {
                          "quantity": 1,
                          "sku": "com.xsolla.item_4"
                        }
                      ]
                    }
                  ],
                  "value_point": {
                    "sku": "com.xsolla.clan_value_point_1"
                  }
                }
              },
              "default": {
                "summary": "Exemple de chaîne de récompenses",
                "value": {
                  "attribute_conditions": [
                    {
                      "attribute": "race",
                      "can_be_missing": false,
                      "operator": "eq",
                      "type": "string",
                      "value": "ork"
                    }
                  ],
                  "description": {
                    "en": "Reward chain description."
                  },
                  "image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png",
                  "is_always_visible": true,
                  "is_enabled": true,
                  "is_reset_after_end": true,
                  "long_description": {
                    "en": "Reward chain long description."
                  },
                  "name": {
                    "en": "Reward chain"
                  },
                  "order": 1,
                  "periods": [
                    {
                      "date_from": "2026-01-01T01:00:00+05:00",
                      "date_until": "2026-01-31T23:59:59+05:00"
                    },
                    {
                      "date_from": "2026-02-01T01:00:00+05:00",
                      "date_until": "2026-02-28T23:59:59+05:00"
                    }
                  ],
                  "recurrent_schedule": {
                    "day_of_week": 1,
                    "interval_type": "weekly",
                    "time": "01:00:00+08:00"
                  },
                  "steps": [
                    {
                      "image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png",
                      "name": {
                        "en": "First step of the reward chain"
                      },
                      "price": {
                        "amount": 10
                      },
                      "reward": [
                        {
                          "quantity": 5,
                          "sku": "com.xsolla.item_1"
                        },
                        {
                          "quantity": 1,
                          "sku": "com.xsolla.item_2"
                        }
                      ]
                    },
                    {
                      "image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png",
                      "name": {
                        "en": "Second step of the reward chain"
                      },
                      "price": {
                        "amount": 15
                      },
                      "reward": [
                        {
                          "quantity": 5,
                          "sku": "com.xsolla.item_3"
                        },
                        {
                          "quantity": 1,
                          "sku": "com.xsolla.item_4"
                        }
                      ]
                    }
                  ],
                  "value_point": {
                    "sku": "com.xsolla.value_point_1"
                  }
                }
              }
            },
            "schema": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/create-reward-chain-model"
                },
                {
                  "$ref": "#/components/schemas/create-clan-reward-chain-model"
                }
              ]
            }
          }
        }
      },
      "create-upsell": {
        "content": {
          "application/json": {
            "examples": {
              "fixed_list": {
                "summary": "Exemple de vente incitative avec une liste fixe d'objets",
                "value": {
                  "is_enabled": true,
                  "items": [
                    "game_sku_1",
                    "game_sku_2",
                    "game_sku_3"
                  ],
                  "type": "fixed_list"
                }
              },
              "special_type_most_sellable": {
                "summary": "Exemple de vente incitative avec les objets les plus vendus au cours des 30 derniers jours",
                "value": {
                  "is_enabled": true,
                  "items": [],
                  "type": "most_sellable"
                }
              },
              "special_type_promotions": {
                "summary": "Exemple de vente incitative avec des objets en promotion uniquement",
                "value": {
                  "is_enabled": true,
                  "items": [],
                  "type": "only_promotions"
                }
              }
            },
            "schema": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/Upsell-model"
                },
                {
                  "$ref": "#/components/schemas/Upsell-model-not-fixed-list"
                }
              ]
            }
          }
        }
      },
      "create-value-point": {
        "content": {
          "application/json": {
            "examples": {
              "clan": {
                "summary": "Point de valeur pour la chaîne de récompenses de clans",
                "value": {
                  "description": {
                    "en": "Value points for clan reward system."
                  },
                  "image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png",
                  "is_clan": true,
                  "is_enabled": true,
                  "long_description": {
                    "en": "Value points given to clans to get new rewards in a reward chain."
                  },
                  "media_list": [],
                  "name": {
                    "en": "Clan Reward VP 1"
                  },
                  "order": 3,
                  "sku": "com.xsolla.clan_value_point_1"
                }
              },
              "default": {
                "summary": "Point de valeur pour la chaîne de récompenses",
                "value": {
                  "description": {
                    "en": "Value points for reward system."
                  },
                  "image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png",
                  "is_enabled": true,
                  "long_description": {
                    "en": "Value points given to users to get new rewards in a reward chain."
                  },
                  "media_list": [],
                  "name": {
                    "en": "Reward VP 1"
                  },
                  "order": 1,
                  "sku": "com.xsolla.reward_vp_1"
                }
              }
            },
            "schema": {
              "$ref": "#/components/schemas/admin_value_points-create"
            }
          }
        }
      },
      "personalized-catalog_create-update-body": {
        "content": {
          "application/json": {
            "example": {
              "attribute_conditions": [
                {
                  "attribute": "race",
                  "can_be_missing": false,
                  "operator": "eq",
                  "type": "string",
                  "value": "ork"
                }
              ],
              "is_enabled": true,
              "is_satisfied_for_unauth": false,
              "items": [
                {
                  "item_id": 1
                }
              ],
              "name": "Ork race armor rule"
            },
            "schema": {
              "$ref": "#/components/schemas/user-attribute_personalized-catalog-body-required"
            }
          }
        }
      },
      "reset-user-limits": {
        "content": {
          "application/json": {
            "example": {
              "user": {
                "user_external_id": "d342dad2-9d59-11e9-a384-42010aa8003f"
              }
            },
            "schema": {
              "properties": {
                "user": {
                  "$ref": "#/components/schemas/User-limit_user"
                }
              },
              "required": [
                "user"
              ],
              "type": "object"
            }
          }
        }
      },
      "reset-user-limits-flexible": {
        "content": {
          "application/json": {
            "example": {
              "user": {
                "user_external_id": "d342dad2-9d59-11e9-a384-42010aa8003f"
              }
            },
            "schema": {
              "properties": {
                "user": {
                  "$ref": "#/components/schemas/User-limit_user_flexible"
                }
              },
              "required": [
                "user"
              ],
              "type": "object"
            }
          }
        }
      },
      "set-item-value-point-reward": {
        "content": {
          "application/json": {
            "example": [
              {
                "amount": 100,
                "sku": "com.xsolla.booster_1"
              },
              {
                "amount": 200,
                "sku": "com.xsolla.booster_mega"
              }
            ],
            "schema": {
              "$ref": "#/components/schemas/item-value-point-reward-set"
            }
          }
        }
      },
      "set-item-value-point-reward-for-patch": {
        "content": {
          "application/json": {
            "example": [
              {
                "amount": 100,
                "sku": "booster_1"
              },
              {
                "amount": 0,
                "sku": "booster_mega"
              }
            ],
            "schema": {
              "$ref": "#/components/schemas/item-value-point-reward-set-for-patch"
            }
          }
        }
      },
      "update-daily-chain": {
        "content": {
          "application/json": {
            "examples": {
              "calendar_hard": {
                "summary": "Récompense quotidienne de type `calendar_hard`",
                "value": {
                  "date_start": "2023-04-15T18:16:00+05:00",
                  "description": {
                    "en": "Updated daily reward description"
                  },
                  "is_enabled": true,
                  "name": {
                    "en": "Updated daily reward",
                    "ru": "Обновленная ежедневная награда"
                  },
                  "order": 4,
                  "steps": [
                    {
                      "items": [
                        {
                          "quantity": 1,
                          "sku": "vg_enabled_shown_in_store_1"
                        }
                      ],
                      "step_number": 1
                    },
                    {
                      "items": [
                        {
                          "quantity": 1,
                          "sku": "vg_enabled_shown_in_store_2"
                        }
                      ],
                      "step_number": 2
                    },
                    {
                      "items": [
                        {
                          "quantity": 1,
                          "sku": "vg_not_shown_in_store"
                        }
                      ],
                      "step_id": 10,
                      "step_number": 3
                    },
                    {
                      "items": [
                        {
                          "quantity": 1,
                          "sku": "bundle_enabled_shown_in_store_with_2_enabled_shown_in_store_vg"
                        }
                      ],
                      "step_id": 8,
                      "step_number": 4
                    },
                    {
                      "items": [
                        {
                          "quantity": 1,
                          "sku": "vcp_enabled_shown_in_store_1_of_10_vc_enabled_shown_in_store_1"
                        }
                      ],
                      "step_number": 5
                    }
                  ],
                  "type": "calendar_hard"
                }
              },
              "rolling_skippable": {
                "summary": "Récompense quotidienne de type `rolling_skippable`",
                "value": {
                  "date_end": "2023-08-31T10:00:00+05:00",
                  "date_start": "2023-08-01T10:00:00+05:00",
                  "description": {
                    "en": "Updated login reward description"
                  },
                  "is_enabled": true,
                  "name": {
                    "en": "Updated login reward"
                  },
                  "order": 4,
                  "steps": [
                    {
                      "items": [
                        {
                          "quantity": 1,
                          "sku": "monday_reward_item_one"
                        }
                      ],
                      "step_number": 1
                    },
                    {
                      "items": [
                        {
                          "quantity": 1,
                          "sku": "tuesday_reward_item_two"
                        }
                      ],
                      "step_number": 2
                    },
                    {
                      "items": [
                        {
                          "quantity": 1,
                          "sku": "wednesday_reward_item_three"
                        }
                      ],
                      "step_number": 3
                    },
                    {
                      "items": [
                        {
                          "quantity": 1,
                          "sku": "thursday_reward_item_four"
                        }
                      ],
                      "step_number": 4
                    },
                    {
                      "items": [
                        {
                          "quantity": 1,
                          "sku": "friday_reward_item_five"
                        }
                      ],
                      "step_number": 5
                    },
                    {
                      "items": [
                        {
                          "quantity": 1,
                          "sku": "saturday_reward_item_six"
                        }
                      ],
                      "step_number": 6
                    },
                    {
                      "items": [
                        {
                          "quantity": 1,
                          "sku": "sunday_reward_item_seven"
                        }
                      ],
                      "step_number": 7
                    }
                  ],
                  "type": "rolling_skippable"
                }
              },
              "rolling_unskippable": {
                "summary": "Récompense quotidienne de type `rolling_unskippable`",
                "value": {
                  "date_end": "2023-09-30T10:00:00+05:00",
                  "date_start": "2023-09-01T10:00:00+05:00",
                  "description": {
                    "en": "Updated unskippable login reward description"
                  },
                  "is_enabled": true,
                  "name": {
                    "en": "Updated unskippable login reward"
                  },
                  "order": 2,
                  "steps": [
                    {
                      "items": [
                        {
                          "quantity": 1,
                          "sku": "monday_reward_item_one"
                        }
                      ],
                      "step_number": 1
                    },
                    {
                      "items": [
                        {
                          "quantity": 1,
                          "sku": "tuesday_reward_item_two"
                        }
                      ],
                      "step_number": 2
                    },
                    {
                      "items": [
                        {
                          "quantity": 1,
                          "sku": "wednesday_reward_item_three"
                        }
                      ],
                      "step_number": 3
                    },
                    {
                      "items": [
                        {
                          "quantity": 1,
                          "sku": "thursday_reward_item_four"
                        }
                      ],
                      "step_number": 4
                    },
                    {
                      "items": [
                        {
                          "quantity": 1,
                          "sku": "friday_reward_item_five"
                        }
                      ],
                      "step_number": 5
                    }
                  ],
                  "type": "rolling_unskippable"
                }
              }
            },
            "schema": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/update-calendar-hard-daily-chain-model"
                },
                {
                  "$ref": "#/components/schemas/update-rolling-skippable-daily-chain-model"
                },
                {
                  "$ref": "#/components/schemas/update-rolling-unskippable-daily-chain-model"
                }
              ]
            }
          }
        }
      },
      "update-offer-chain": {
        "content": {
          "application/json": {
            "examples": {
              "default": {
                "summary": "Exemple par défaut",
                "value": {
                  "date_end": null,
                  "date_start": "2023-04-15T18:16:00+05:00",
                  "description": {
                    "de": "Eine kurze Beschreibung einer regulären Angebotskette",
                    "en": "A short description of a regular offer chain",
                    "fr": "Une brève description d'une chaîne d'offres régulière",
                    "it": "Una breve descrizione di una catena di offerte regolare",
                    "ru": "Краткое описание обычной цепочки предложений"
                  },
                  "is_always_visible": true,
                  "is_enabled": true,
                  "name": {
                    "de": "Aktualisierte Angebotskette",
                    "en": "Updated offer chain",
                    "fr": "Chaîne d'offres mise à jour",
                    "it": "Catena di offerte aggiornata",
                    "ru": "Обновляемая цепочка предложений"
                  },
                  "order": 4,
                  "recurrent_schedule": null,
                  "steps": [
                    {
                      "is_free": false,
                      "items": [
                        {
                          "quantity": 2,
                          "sku": "chain_step_1_paid_bundle_sku"
                        }
                      ],
                      "step_id": 10,
                      "step_number": 1
                    },
                    {
                      "is_free": true,
                      "items": [
                        {
                          "quantity": 1,
                          "sku": "chain_step_2_free_virtual_good_sku"
                        }
                      ],
                      "step_number": 2
                    },
                    {
                      "is_free": false,
                      "items": [
                        {
                          "quantity": 5,
                          "sku": "chain_step_3_paid_virtual_currency_package_sku"
                        }
                      ],
                      "step_number": 3
                    },
                    {
                      "is_free": true,
                      "items": [
                        {
                          "quantity": 1,
                          "sku": "chain_step_4_free_bundle_sku"
                        }
                      ],
                      "step_id": 9,
                      "step_number": 4
                    }
                  ]
                }
              },
              "personalized-default": {
                "summary": "Exemple de chaîne d'offres par défaut personnalisée",
                "value": {
                  "date_end": null,
                  "date_start": "2023-04-15T18:16:00+05:00",
                  "description": {
                    "de": "Standard-personalisierte Angebotskette für Benutzer, die die Bedingungen anderer personalisierter Ketten nicht erfüllen",
                    "en": "Default personalized offer chain for users that do not meet the conditions of other personalized chains",
                    "fr": "Chaîne d'offres personnalisée par défaut pour les utilisateurs qui ne répondent pas aux conditions des autres chaînes personnalisées",
                    "it": "Catena di offerte personalizzata predefinita per gli utenti che non soddisfano le condizioni di altre catene personalizzate",
                    "ru": "Персонализированная цепочка по умолчанию для пользователей, не подходящих под условия других персонализированных цепочек"
                  },
                  "is_always_visible": false,
                  "is_enabled": true,
                  "name": {
                    "de": "Neue personalisierte Standard-Angebotskette",
                    "en": "New personalized default offer chain",
                    "fr": "Nouvelle chaîne d'offres personnalisée par défaut",
                    "it": "Nuova catena di offerte personalizzata predefinita",
                    "ru": "Новая персонализированная цепочка предложений по умолчанию"
                  },
                  "order": 4,
                  "recurrent_schedule": null,
                  "steps": [
                    {
                      "is_free": false,
                      "items": [
                        {
                          "quantity": 1,
                          "sku": "chain_x_step_1_item_default"
                        }
                      ],
                      "step_id": 10,
                      "step_number": 1
                    },
                    {
                      "is_free": false,
                      "items": [
                        {
                          "quantity": 2,
                          "sku": "chain_x_step_2_item_default"
                        }
                      ],
                      "step_number": 2
                    },
                    {
                      "is_free": true,
                      "items": [
                        {
                          "quantity": 1,
                          "sku": "chain_x_step_3_free_item_default"
                        }
                      ],
                      "step_id": 9,
                      "step_number": 3
                    }
                  ]
                }
              },
              "personalized-with-conditions": {
                "summary": "Exemple de chaîne d'offres personnalisée selon les attributs utilisateur",
                "value": {
                  "attribute_conditions": [
                    {
                      "attribute": "race",
                      "can_be_missing": false,
                      "operator": "eq",
                      "type": "string",
                      "value": "elf"
                    },
                    {
                      "attribute": "level",
                      "can_be_missing": false,
                      "operator": "ge",
                      "type": "number",
                      "value": "10"
                    },
                    {
                      "attribute": "10_level_up_date",
                      "can_be_missing": false,
                      "operator": "le",
                      "type": "date",
                      "value": "2026-01-01T00:00:00"
                    }
                  ],
                  "date_end": null,
                  "date_start": "2023-04-15T18:16:00+05:00",
                  "description": {
                    "de": "Personalisierte Angebotskette mit Benutzerattributbedingungen - für Elfen der Stufe 10 und höher, die Stufe 10 spätestens am 2026-01-01 00:00:00 erreicht haben, einschließlich",
                    "en": "Personalized offer chain with user attribute conditions - for level 10 and above elves who reached level 10 no later than 2026-01-01 00:00:00, inclusive",
                    "fr": "Chaîne d'offres personnalisée avec des conditions d'attribut utilisateur - pour les elfes de niveau 10 et plus qui ont atteint le niveau 10 au plus tard le 2026-01-01 00:00:00, inclus",
                    "it": "Catena di offerte personalizzata con condizioni di attributo utente - per elfi di livello 10 e superiore che hanno raggiunto il livello 10 non più tardi del 2026-01-01 00:00:00, inclusi",
                    "ru": "Персонализированная цепочка предложений с условиями по атрибутам пользователя - для эльфов уровня 10 и выше, достигших 10 уровня не позднее 2026-01-01 00:00:00 включительно"
                  },
                  "is_always_visible": false,
                  "is_enabled": true,
                  "name": {
                    "de": "Neue personalisierte Angebotskette",
                    "en": "New personalized offer chain",
                    "fr": "Nouvelle chaîne d'offres personnalisée",
                    "it": "Nuova catena di offerte personalizzata",
                    "ru": "Новая персонализированная цепочка предложений"
                  },
                  "order": 4,
                  "recurrent_schedule": null,
                  "steps": [
                    {
                      "is_free": false,
                      "items": [
                        {
                          "quantity": 1,
                          "sku": "chain_x_step_1_item_for_elves_level_10_and_above"
                        }
                      ],
                      "step_id": 10,
                      "step_number": 1
                    },
                    {
                      "is_free": false,
                      "items": [
                        {
                          "quantity": 2,
                          "sku": "chain_x_step_2_item_for_elves_level_10_and_above"
                        }
                      ],
                      "step_id": 8,
                      "step_number": 2
                    },
                    {
                      "is_free": true,
                      "items": [
                        {
                          "quantity": 1,
                          "sku": "chain_x_step_3_free_item_for_elves_level_10_and_above"
                        }
                      ],
                      "step_number": 3
                    }
                  ]
                }
              },
              "recurrent": {
                "summary": "Exemple de chaîne d'offres récurrente",
                "value": {
                  "date_end": "2025-04-25T19:16:00+05:00",
                  "date_start": "2023-04-15T17:16:00+05:00",
                  "description": {
                    "de": "Aktualisierte Angebotskette, die wiederkehrend wird und monatlich am 2. Tag um 03:00 Uhr GMT+8 zurückgesetzt wird",
                    "en": "Updated offer chain that becomes recurrent and resets monthly on the 2nd day at 03:00 AM GMT+8",
                    "fr": "Chaîne d'offres mise à jour qui devient récurrente et se réinitialise mensuellement le 2e jour à 03h00 GMT+8",
                    "it": "Catena di offerte aggiornata che diventa ricorrente e si resetta mensilmente il 2° giorno alle 03:00 GMT+8",
                    "ru": "Обновляемая цепочка предложений, которая становится рекуррентной и сбрасывается ежемесячно во 2-й день в 03:00 по GMT+8"
                  },
                  "id": 1,
                  "is_enabled": true,
                  "name": {
                    "de": "Aktualisierte wiederkehrende Angebotskette",
                    "en": "Updated recurrent offer chain",
                    "fr": "Chaîne d'offres récurrente mise à jour",
                    "it": "Catena di offerte ricorrente aggiornata",
                    "ru": "Обновляемая рекуррентная цепочка предложений"
                  },
                  "order": 4,
                  "recurrent_schedule": {
                    "day_of_month": 2,
                    "interval_type": "monthly",
                    "time": "03:00:00+08:00"
                  },
                  "steps": [
                    {
                      "is_free": false,
                      "items": [
                        {
                          "quantity": 6,
                          "sku": "chain_bundle_sku"
                        }
                      ],
                      "step_number": 1
                    },
                    {
                      "is_free": true,
                      "items": [
                        {
                          "quantity": 2,
                          "sku": "chain_bundle_sku"
                        }
                      ],
                      "step_number": 1
                    }
                  ]
                }
              }
            },
            "schema": {
              "$ref": "#/components/schemas/modify-offer-chain-model"
            }
          }
        }
      },
      "update-reward-chain": {
        "content": {
          "application/json": {
            "examples": {
              "clan": {
                "summary": "Exemple de chaîne de récompenses de clan",
                "value": {
                  "clan_type": "guild",
                  "description": {
                    "en": "Clan reward chain description."
                  },
                  "image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png",
                  "is_enabled": true,
                  "long_description": {
                    "en": "Clan reward chain long description."
                  },
                  "name": {
                    "en": "Clan reward chain"
                  },
                  "order": 1,
                  "periods": [
                    {
                      "date_from": "2026-01-01T01:00:00+05:00",
                      "date_until": "2026-01-31T23:59:59+05:00"
                    },
                    {
                      "date_from": "2026-02-01T01:00:00+05:00",
                      "date_until": "2026-02-28T23:59:59+05:00"
                    }
                  ],
                  "popup_header": {
                    "en": "How to unlock rewards"
                  },
                  "popup_image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png",
                  "popup_instruction": {
                    "en": "You should be a clan member to get clan rewards. You join a clan when a clan member invited you to the clan, and you accepted the invite. You can create your own clan."
                  },
                  "recurrent_schedule": {
                    "day_of_week": 1,
                    "interval_type": "weekly",
                    "time": "01:00:00+08:00"
                  },
                  "steps": [
                    {
                      "image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png",
                      "name": {
                        "en": "First step of the reward chain"
                      },
                      "price": {
                        "amount": 10
                      },
                      "reward": [
                        {
                          "quantity": 5,
                          "sku": "com.xsolla.item_1"
                        },
                        {
                          "quantity": 1,
                          "sku": "com.xsolla.item_2"
                        }
                      ],
                      "step_id": 1
                    },
                    {
                      "image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png",
                      "name": {
                        "en": "Second step of the reward chain"
                      },
                      "price": {
                        "amount": 15
                      },
                      "reward": [
                        {
                          "quantity": 5,
                          "sku": "com.xsolla.item_3"
                        },
                        {
                          "quantity": 1,
                          "sku": "com.xsolla.item_4"
                        }
                      ],
                      "step_id": 2
                    }
                  ]
                }
              },
              "default": {
                "summary": "Exemple de chaîne de récompenses",
                "value": {
                  "attribute_conditions": [
                    {
                      "attribute": "race",
                      "can_be_missing": false,
                      "operator": "eq",
                      "type": "string",
                      "value": "ork"
                    }
                  ],
                  "description": {
                    "en": "Reward chain description."
                  },
                  "image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png",
                  "is_always_visible": true,
                  "is_enabled": true,
                  "is_reset_after_end": true,
                  "long_description": {
                    "en": "Reward chain long description."
                  },
                  "name": {
                    "en": "Reward chain"
                  },
                  "order": 1,
                  "periods": [
                    {
                      "date_from": "2026-01-01T01:00:00+05:00",
                      "date_until": "2026-01-31T23:59:59+05:00"
                    },
                    {
                      "date_from": "2026-02-01T01:00:00+05:00",
                      "date_until": "2026-02-28T23:59:59+05:00"
                    }
                  ],
                  "recurrent_schedule": {
                    "day_of_week": 1,
                    "interval_type": "weekly",
                    "time": "01:00:00+08:00"
                  },
                  "steps": [
                    {
                      "image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png",
                      "name": {
                        "en": "First step of the reward chain"
                      },
                      "price": {
                        "amount": 10
                      },
                      "reward": [
                        {
                          "quantity": 5,
                          "sku": "com.xsolla.item_1"
                        },
                        {
                          "quantity": 1,
                          "sku": "com.xsolla.item_2"
                        }
                      ],
                      "step_id": 1
                    },
                    {
                      "image_url": "https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png",
                      "name": {
                        "en": "Second step of the reward chain"
                      },
                      "price": {
                        "amount": 15
                      },
                      "reward": [
                        {
                          "quantity": 5,
                          "sku": "com.xsolla.item_3"
                        },
                        {
                          "quantity": 1,
                          "sku": "com.xsolla.item_4"
                        }
                      ],
                      "step_id": 2
                    }
                  ]
                }
              }
            },
            "schema": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/update-reward-chain-model"
                },
                {
                  "$ref": "#/components/schemas/update-clan-reward-chain-model"
                }
              ]
            }
          }
        }
      },
      "update-upsell": {
        "content": {
          "application/json": {
            "examples": {
              "fixed_list": {
                "summary": "Exemple de vente incitative avec une liste fixe d'objets",
                "value": {
                  "is_enabled": true,
                  "items": [
                    "game_sku_1",
                    "game_sku_2",
                    "game_sku_3"
                  ],
                  "type": "fixed_list"
                }
              },
              "special_type_most_sellable": {
                "summary": "Exemple de vente incitative avec les objets les plus vendus au cours des 30 derniers jours",
                "value": {
                  "is_enabled": true,
                  "items": [],
                  "type": "most_sellable"
                }
              },
              "special_type_promotions": {
                "summary": "Exemple de vente incitative avec des objets en promotion uniquement",
                "value": {
                  "is_enabled": true,
                  "items": [],
                  "type": "only_promotions"
                }
              }
            },
            "schema": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/Upsell-model"
                },
                {
                  "$ref": "#/components/schemas/Upsell-model-not-fixed-list"
                }
              ]
            }
          }
        }
      },
      "update-user-limits-flexible": {
        "content": {
          "application/json": {
            "example": {
              "available": 0,
              "user": {
                "user_external_id": "d342dad2-9d59-11e9-a384-42010aa8003f"
              }
            },
            "schema": {
              "properties": {
                "available": {
                  "$ref": "#/components/schemas/User-limit_available_flexible"
                },
                "user": {
                  "$ref": "#/components/schemas/User-limit_user"
                }
              },
              "required": [
                "user",
                "available"
              ],
              "type": "object"
            }
          }
        }
      },
      "update-user-limits-strict": {
        "content": {
          "application/json": {
            "example": {
              "available": 1,
              "user": {
                "user_external_id": "d342dad2-9d59-11e9-a384-42010aa8003f"
              }
            },
            "schema": {
              "properties": {
                "available": {
                  "$ref": "#/components/schemas/User-limit_available"
                },
                "user": {
                  "$ref": "#/components/schemas/User-limit_user"
                }
              },
              "required": [
                "user",
                "available"
              ],
              "type": "object"
            }
          }
        }
      }
    },
    "responses": {
      "200-admin-get-code-coupon-limits": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "$ref": "#/components/examples/code-limit"
              }
            },
            "schema": {
              "properties": {
                "has_more": {
                  "description": "S'il existe une autre page avec des codes.",
                  "type": "boolean"
                },
                "items": {
                  "items": {
                    "$ref": "#/components/schemas/Code-limit-promo-code"
                  },
                  "type": "array"
                },
                "promotion_id": {
                  "description": "ID de la promotion. Identifiant unique de la promotion au sein du projet.",
                  "type": "integer"
                },
                "total_items_count": {
                  "description": "Nombre total de codes.",
                  "type": "number"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "Les limites du coupon ont été reçues avec succès pour le code."
      },
      "200-admin-get-code-promo-code-limits": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "$ref": "#/components/examples/code-limit"
              }
            },
            "schema": {
              "properties": {
                "has_more": {
                  "description": "S'il existe une autre page avec des codes.",
                  "type": "boolean"
                },
                "items": {
                  "items": {
                    "$ref": "#/components/schemas/Code-limit-promo-code"
                  },
                  "type": "array"
                },
                "promotion_id": {
                  "description": "ID de la promotion. Identifiant unique de la promotion au sein du projet.",
                  "type": "integer"
                },
                "total_items_count": {
                  "description": "Nombre total de codes.",
                  "type": "number"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "Les limites du code promo ont été reçues avec succès pour le code."
      },
      "200-admin-get-daily-chain": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "$ref": "#/components/examples/200-admin-daily-chain"
              }
            },
            "schema": {
              "$ref": "#/components/schemas/admin-daily-chain-long-model"
            }
          }
        },
        "description": "Données de la récompense quotidienne récupérées avec succès."
      },
      "200-admin-get-list-daily-chains": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "$ref": "#/components/examples/200-admin-daily-chain-list"
              }
            },
            "schema": {
              "properties": {
                "has_more": {
                  "$ref": "#/components/schemas/Pagination_has-more"
                },
                "items": {
                  "items": {
                    "$ref": "#/components/schemas/admin-daily-chain-short-model"
                  },
                  "type": "array"
                },
                "total_items_count": {
                  "description": "Nombre total de récompenses quotidiennes.",
                  "example": 3,
                  "type": "integer"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "Liste des récompenses quotidiennes récupérée avec succès."
      },
      "200-admin-get-list-offer-chains": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "$ref": "#/components/examples/200-admin-offer-chain-list"
              }
            },
            "schema": {
              "properties": {
                "has_more": {
                  "$ref": "#/components/schemas/Pagination_has-more"
                },
                "items": {
                  "items": {
                    "$ref": "#/components/schemas/admin-offer-chain-short-model"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "Liste de chaînes d'offres récupérée avec succès."
      },
      "200-admin-get-list-reward-chains": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "$ref": "#/components/examples/200-reward-chain-list"
              }
            },
            "schema": {
              "properties": {
                "has_more": {
                  "$ref": "#/components/schemas/Pagination_has-more"
                },
                "items": {
                  "items": {
                    "oneOf": [
                      {
                        "$ref": "#/components/schemas/admin-get-reward-chain-item-basic-model"
                      },
                      {
                        "$ref": "#/components/schemas/admin-get-reward-chain-item-clan-basic-model"
                      }
                    ]
                  },
                  "type": "array"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "La liste des chaînes de récompenses a été reçue avec succès."
      },
      "200-admin-get-list-value-point-rewards": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "$ref": "#/components/examples/200-value-points-rewards-list"
              }
            },
            "schema": {
              "properties": {
                "items": {
                  "items": {
                    "$ref": "#/components/schemas/admin-item-value-point-reward"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "La liste des objets avec des récompenses en points de valeur a été reçue avec succès."
      },
      "200-admin-get-offer-chain": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "$ref": "#/components/examples/200-admin-offer-chain"
              }
            },
            "schema": {
              "$ref": "#/components/schemas/admin-offer-chain-long-model"
            }
          }
        },
        "description": "Données de la chaîne d'offres récupérées avec succès."
      },
      "200-admin-get-redeemable-by-code": {
        "content": {
          "application/json": {
            "examples": {
              "Coupon Response": {
                "value": {
                  "bonus": [
                    {
                      "quantity": 3,
                      "sku": "epic_fall_hammer_1"
                    }
                  ],
                  "external_id": "coupon_fall_hammer_2",
                  "is_enabled": true,
                  "name": {
                    "en": "This is a Coupon code for Epic Fall Hammer",
                    "ru": "Eto kod kupona на Epic Fall Hammer"
                  },
                  "promotion_periods": [
                    {
                      "date_from": "2023-04-15T01:00:00+05:00",
                      "date_until": "2023-04-30T23:59:59+05:00"
                    },
                    {
                      "date_from": "2023-05-15T01:00:00+05:00",
                      "date_until": "2023-05-30T23:59:59+05:00"
                    }
                  ],
                  "redeem_code_limit": null,
                  "redeem_total_limit": 99,
                  "redeem_user_limit": 1
                }
              },
              "Promo Code Response": {
                "value": {
                  "bonus": [],
                  "discount": {
                    "percent": null
                  },
                  "discounted_items": [
                    {
                      "discount": {
                        "percent": "20.00"
                      },
                      "sku": "epic_fall_hammer_1"
                    }
                  ],
                  "external_id": "falls2023",
                  "is_enabled": true,
                  "name": {
                    "en": "Promo Code discount for Epic Fall Hammer",
                    "ru": "Скидка по промокоду на Epic Fall Hammer"
                  },
                  "promotion_periods": [
                    {
                      "date_from": "2023-05-01T01:00:00+05:00",
                      "date_until": "2023-05-31T23:59:59+05:00"
                    },
                    {
                      "date_from": "2023-06-01T01:00:00+05:00",
                      "date_until": "2023-06-30T23:59:59+05:00"
                    }
                  ],
                  "redeem_code_limit": null,
                  "redeem_total_limit": 2,
                  "redeem_user_limit": 3,
                  "total_limit_state": {
                    "available": 1,
                    "reserved": 1,
                    "used": 0
                  }
                }
              }
            },
            "schema": {
              "$ref": "#/components/schemas/admin-promotions_200-get-redeemable-coupon-promotion-model"
            }
          }
        },
        "description": "La promotion a été reçue avec succès."
      },
      "200-admin-get-reward-chain": {
        "content": {
          "application/json": {
            "examples": {
              "clan": {
                "$ref": "#/components/examples/200-clan-reward-chain"
              },
              "common": {
                "$ref": "#/components/examples/200-reward-chain"
              }
            },
            "schema": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/admin-get-reward-chain-item-full-model"
                },
                {
                  "$ref": "#/components/schemas/admin-get-reward-chain-item-clan-full-model"
                }
              ]
            }
          }
        },
        "description": "La chaîne de récompenses spécifiée a été reçue avec succès."
      },
      "200-admin-get-user-coupon-limits": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "value": {
                  "per_user": {
                    "available": 9,
                    "total": 10
                  }
                }
              }
            },
            "schema": {
              "$ref": "#/components/schemas/User-limit-coupon"
            }
          }
        },
        "description": "Les limites du coupon pour un utilisateur ont été reçues avec succès."
      },
      "200-admin-get-user-promo-code-limits": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "value": {
                  "per_user": {
                    "available": 9,
                    "total": 10
                  }
                }
              }
            },
            "schema": {
              "$ref": "#/components/schemas/User-limit-promo-code"
            }
          }
        },
        "description": "Les limites du code promo pour un utilisateur ont été reçues avec succès."
      },
      "200-admin-get-user-promotion-limits": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "value": {
                  "per_user": {
                    "available": 9,
                    "total": 10
                  }
                }
              }
            },
            "schema": {
              "$ref": "#/components/schemas/User-limit-promotion"
            }
          }
        },
        "description": "Les limites de la promotion pour un utilisateur ont été reçues avec succès."
      },
      "200-admin-get-value-point": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "$ref": "#/components/examples/200-value-points-reward-chain_admin_get-value-point"
              }
            },
            "schema": {
              "$ref": "#/components/schemas/Value-point-item-model"
            }
          }
        },
        "description": "Le point de valeur spécifié a été reçu avec succès."
      },
      "200-admin-get-value-points": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "$ref": "#/components/examples/200-value-points-reward-chain_admin_get-value-point-list"
              }
            },
            "schema": {
              "properties": {
                "items": {
                  "items": {
                    "$ref": "#/components/schemas/Value-points-item-model"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "La liste des points de valeur a été reçue avec succès."
      },
      "200-client-get-daily-chains-list": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "$ref": "#/components/examples/200-client-daily-chain-list"
              }
            },
            "schema": {
              "properties": {
                "has_more": {
                  "description": "Utilisé pour indiquer qu'il y a plus de pages.",
                  "example": true,
                  "type": "boolean"
                },
                "items": {
                  "items": {
                    "$ref": "#/components/schemas/client-daily-chain-model"
                  },
                  "type": "array"
                },
                "total_items_count": {
                  "description": "Nombre total de récompenses quotidiennes.",
                  "example": 3,
                  "type": "integer"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "Récompenses quotidiennes de l'utilisateur récupérées avec succès."
      },
      "200-client-get-offer-chains-list": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "$ref": "#/components/examples/200-client-offer-chain-list"
              }
            },
            "schema": {
              "properties": {
                "has_more": {
                  "description": "Indique si d'autres pages sont disponibles.",
                  "example": true,
                  "type": "boolean"
                },
                "items": {
                  "items": {
                    "$ref": "#/components/schemas/client-offer-chain-model"
                  },
                  "type": "array"
                },
                "total_items_count": {
                  "description": "Nombre total de chaînes d'offres disponibles.",
                  "example": 10,
                  "type": "integer"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "Liste de chaînes d'offres reçue avec succès."
      },
      "200-client-get-reward-chains-list": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "$ref": "#/components/examples/200-client-get-reward-chains-list"
              }
            },
            "schema": {
              "properties": {
                "has_more": {
                  "description": "Utilisé pour indiquer qu'il y a plus de pages.",
                  "example": true,
                  "type": "boolean"
                },
                "items": {
                  "items": {
                    "$ref": "#/components/schemas/client-reward-chain-item-model"
                  },
                  "type": "array"
                },
                "total_items_count": {
                  "description": "Nombre total de chaînes de récompenses dans le système.",
                  "example": 10,
                  "type": "integer"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "La chaîne de récompenses de l'utilisateur a été récupérée avec succès."
      },
      "200-client-get-user-reward-chain-balance": {
        "content": {
          "application/json": {
            "examples": {
              "clan": {
                "$ref": "#/components/examples/200-client-get-user-clan-reward-chain-balance"
              },
              "common": {
                "$ref": "#/components/examples/200-client-get-user-reward-chain-balance"
              }
            },
            "schema": {
              "properties": {
                "amount": {
                  "description": "Quantité de points de valeur.",
                  "type": "integer"
                },
                "description": {
                  "$ref": "#/components/schemas/value-point-description"
                },
                "image_url": {
                  "$ref": "#/components/schemas/Common_admin-image_url"
                },
                "is_clan": {
                  "$ref": "#/components/schemas/is_clan"
                },
                "long_description": {
                  "$ref": "#/components/schemas/value-point-long-description"
                },
                "name": {
                  "$ref": "#/components/schemas/value-point-name"
                },
                "sku": {
                  "$ref": "#/components/schemas/value-point-sku"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "Le solde de points de valeur de l'utilisateur a été récupéré avec succès."
      },
      "200-client-update-user-clan": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "$ref": "#/components/examples/200-client-update-user-clan"
              }
            },
            "schema": {
              "properties": {
                "reward": {
                  "items": {
                    "properties": {
                      "bundle_type": {
                        "description": "Type de lot. Renvoyé si le type d'objet est un lot.",
                        "enum": [
                          "standard",
                          "virtual_currency_package"
                        ],
                        "type": "string"
                      },
                      "description": {
                        "description": "Description de l'objet.",
                        "example": "Super box with items",
                        "type": "string"
                      },
                      "image_url": {
                        "$ref": "#/components/schemas/Common_admin-image_url"
                      },
                      "name": {
                        "description": "Nom de l'objet.",
                        "example": "Super box",
                        "type": "string"
                      },
                      "quantity": {
                        "description": "Quantité de l'objet.",
                        "example": 2,
                        "type": "integer"
                      },
                      "sku": {
                        "$ref": "#/components/schemas/sku"
                      },
                      "type": {
                        "description": "Type d'objet.",
                        "example": "bundle",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "Le clan de l'utilisateur a été mis à jour avec succès."
      },
      "201-admin-create-daily-chain": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "value": {
                  "daily_chain_id": 10
                }
              }
            },
            "schema": {
              "properties": {
                "daily_chain_id": {
                  "example": 10,
                  "type": "integer"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "Récompense quotidienne créée avec succès."
      },
      "201-admin-create-offer-chain": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "value": {
                  "offer_chain_id": 10
                }
              }
            },
            "schema": {
              "properties": {
                "offer_chain_id": {
                  "example": 10,
                  "type": "integer"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "Chaîne d'offres créée avec succès."
      },
      "201-admin-create-reward-chain": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "value": {
                  "reward_chain_id": 10
                }
              }
            },
            "schema": {
              "properties": {
                "reward_chain_id": {
                  "example": 10,
                  "type": "integer"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "La chaîne de récompenses a été créée avec succès."
      },
      "201-admin-create-value-point": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "value": {
                  "item_id": 10,
                  "sku": "com.xsolla.item_new"
                }
              }
            },
            "schema": {
              "properties": {
                "item_id": {
                  "example": 10,
                  "type": "integer"
                },
                "sku": {
                  "example": "new-sku",
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "Le point de valeur a été créé avec succès."
      },
      "204-admin-delete-reward-chain": {
        "content": {},
        "description": "La chaîne de récompenses a été supprimée avec succès."
      },
      "204-admin-reset-reward-chain": {
        "content": {},
        "description": "La chaîne des récompenses a été réinitialisée."
      },
      "204-admin-toggle-reward-chain": {
        "content": {},
        "description": "La chaîne de récompenses a été désactivée/activée."
      },
      "204-admin-update-reward-chain": {
        "content": {},
        "description": "La chaîne de récompenses a été mise à jour avec succès."
      },
      "401-client-auth-error": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "value": {
                  "errorCode": 1501,
                  "errorMessage": "[0401-1501]: Authorization failed: Provide authorization",
                  "statusCode": 401
                }
              }
            },
            "schema": {
              "properties": {
                "errorCode": {
                  "example": 1501,
                  "type": "integer"
                },
                "errorMessage": {
                  "example": "[0401-1501]: Authorization failed: Provide authorization",
                  "type": "string"
                },
                "statusCode": {
                  "example": 401,
                  "type": "integer"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "L'authentification n'a pas été passée ou est incorrecte."
      },
      "401-invalid-basic-auth": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "value": {
                  "errorCode": 1020,
                  "errorMessage": "[0401-1020]: Error in Authentication method occurred",
                  "statusCode": 401
                }
              }
            },
            "schema": {
              "properties": {
                "errorCode": {
                  "example": 1020,
                  "type": "integer"
                },
                "errorMessage": {
                  "example": "[0401-1020]: Error in Authentication method occurred",
                  "type": "string"
                },
                "statusCode": {
                  "example": 401,
                  "type": "integer"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "L'authentification de base n'a pas été passée ou est incorrecte. Vérifiez que vous avez utilisé l'authentification de base ou des informations d'identification correctes."
      },
      "403-auth-header-not-sent": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "value": {
                  "errorCode": 0,
                  "errorMessage": "Authorization header not sent",
                  "statusCode": 403
                }
              }
            },
            "schema": {
              "properties": {
                "errorCode": {
                  "example": 0,
                  "type": "integer"
                },
                "errorMessage": {
                  "example": "Authorization header not sent.",
                  "type": "string"
                },
                "statusCode": {
                  "example": 403,
                  "type": "integer"
                },
                "transactionId": {
                  "example": "x-x-x-x-transactionId-mock-x-x-x",
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "L'en-tête d'autorisation n'a pas été passé."
      },
      "404-admin-reward-chain-not-found": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "value": {
                  "errorCode": 9901,
                  "errorMessage": "[0401-4001]: Reward chain not found",
                  "statusCode": 404
                }
              }
            },
            "schema": {
              "properties": {
                "errorCode": {
                  "example": 4001,
                  "type": "integer"
                },
                "errorMessage": {
                  "example": "[0401-4001]: Reward chain not found",
                  "type": "string"
                },
                "statusCode": {
                  "example": 404,
                  "type": "integer"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "Chaîne de récompenses introuvable."
      },
      "404-code-not-found": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "value": {
                  "errorCode": 9811,
                  "errorMessage": "[0401-9811]: Code not found.",
                  "statusCode": 404
                }
              }
            },
            "schema": {
              "properties": {
                "errorCode": {
                  "example": 9811,
                  "type": "integer"
                },
                "errorMessage": {
                  "example": "[0401-9811]: Code not found.",
                  "type": "string"
                },
                "statusCode": {
                  "example": 404,
                  "type": "integer"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "Code utilisable non trouvé. Assurez-vous que la valeur du code fourni est correcte."
      },
      "404-daily-chain-not-found": {
        "content": {
          "application/json": {
            "examples": {
              "not-found": {
                "$ref": "#/components/examples/404-daily-chain-not-found"
              }
            },
            "schema": {
              "$ref": "#/components/schemas/daily-chain-error-model"
            }
          }
        },
        "description": "Récompense quotidienne non trouvée."
      },
      "404-daily-chain-step-not-found": {
        "content": {
          "application/json": {
            "examples": {
              "not-found": {
                "$ref": "#/components/examples/404-daily-chain-step-not-found"
              }
            },
            "schema": {
              "$ref": "#/components/schemas/daily-chain-error-model"
            }
          }
        },
        "description": "Récompense quotidienne ou étape de récompense quotidienne non trouvée."
      },
      "404-offer-chain-not-found": {
        "content": {
          "application/json": {
            "examples": {
              "not-found": {
                "$ref": "#/components/examples/404-offer-chain-not-found"
              }
            },
            "schema": {
              "$ref": "#/components/schemas/offer-chain-error-model"
            }
          }
        },
        "description": "Chaîne d'offres non trouvée."
      },
      "404-offer-chain-step-not-found": {
        "content": {
          "application/json": {
            "examples": {
              "not-found": {
                "$ref": "#/components/examples/404-offer-chain-step-not-found"
              }
            },
            "schema": {
              "$ref": "#/components/schemas/offer-chain-error-model"
            }
          }
        },
        "description": "Chaîne d'offres ou étape non trouvée."
      },
      "404-reward-chain-step-not-found": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "value": {
                  "errorCode": 9911,
                  "errorMessage": "[0401-9911]: Reward chain step not found.",
                  "statusCode": 404
                }
              }
            },
            "schema": {
              "properties": {
                "errorCode": {
                  "example": 9911,
                  "type": "integer"
                },
                "errorMessage": {
                  "example": "[0401-9911]: Reward chain step not found.",
                  "type": "string"
                },
                "statusCode": {
                  "example": 404,
                  "type": "integer"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "Étape de chaîne de récompenses introuvable."
      },
      "405-method-not-found": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "value": {
                  "errorCode": 0,
                  "errorMessage": "Method is not allowed. Method must be one of: OPTIONS",
                  "statusCode": 405
                }
              }
            },
            "schema": {
              "properties": {
                "errorCode": {
                  "example": 0,
                  "type": "integer"
                },
                "errorMessage": {
                  "example": "Method is not allowed. Method must be one of: OPTIONS",
                  "type": "string"
                },
                "statusCode": {
                  "example": 405,
                  "type": "integer"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "Format de code utilisable incorrect. Le code ne peut comprendre que des lettres et des chiffres."
      },
      "422-admin-create-error-list": {
        "content": {
          "application/json": {
            "examples": {
              "incorrect-items": {
                "$ref": "#/components/examples/422-admin-daily-chain-error-incorrect-items"
              },
              "incorrect-period": {
                "$ref": "#/components/examples/422-admin-daily-chain-error-incorrect-period"
              },
              "incorrect-steps-order-error": {
                "$ref": "#/components/examples/422-admin-daily-chain-error-incorrect-steps-order"
              },
              "invalid-dates": {
                "$ref": "#/components/examples/422-admin-daily-chain-error-invalid-dates"
              },
              "item-limit-exceeded": {
                "$ref": "#/components/examples/422-admin-daily-chain-error-item-limit-exceeded"
              },
              "too-many-steps-error": {
                "$ref": "#/components/examples/422-admin-daily-chain-error-too-many-steps"
              }
            },
            "schema": {
              "$ref": "#/components/schemas/daily-chain-error-model"
            }
          }
        },
        "description": "Erreurs de configuration de la récompense quotidienne."
      },
      "422-admin-create-update-rc-vp-invalid-request": {
        "content": {
          "application/json": {
            "examples": {
              "The property `sku` is required": {
                "$ref": "#/components/examples/422-property-sku-is-required"
              }
            },
            "schema": {
              "$ref": "#/components/schemas/422-rc-vp-invalid-request"
            }
          }
        },
        "description": "Demande non valide."
      },
      "422-admin-update-error-list": {
        "content": {
          "application/json": {
            "examples": {
              "active-daily-chain": {
                "$ref": "#/components/examples/422-admin-daily-chain-error-activated"
              },
              "chain-id-mismatch": {
                "$ref": "#/components/examples/422-admin-daily-chain-error-chain-id-mismatch"
              },
              "chain-step-ids-duplication": {
                "$ref": "#/components/examples/422-admin-daily-chain-error-duplicate-step-ids"
              },
              "incorrect-items": {
                "$ref": "#/components/examples/422-admin-daily-chain-error-incorrect-items"
              },
              "incorrect-period": {
                "$ref": "#/components/examples/422-admin-daily-chain-error-incorrect-period"
              },
              "incorrect-steps-order-error": {
                "$ref": "#/components/examples/422-admin-daily-chain-error-incorrect-steps-order"
              },
              "invalid-chain-step-ids": {
                "$ref": "#/components/examples/422-admin-daily-chain-error-invalid-chain-step-ids"
              },
              "invalid-dates": {
                "$ref": "#/components/examples/422-admin-daily-chain-error-invalid-dates"
              },
              "item-limit-exceeded": {
                "$ref": "#/components/examples/422-admin-daily-chain-error-item-limit-exceeded"
              },
              "too-many-steps-error": {
                "$ref": "#/components/examples/422-admin-daily-chain-error-too-many-steps"
              }
            },
            "schema": {
              "$ref": "#/components/schemas/daily-chain-error-model"
            }
          }
        },
        "description": "Erreurs de configuration de la récompense quotidienne."
      },
      "422-create-error-list": {
        "content": {
          "application/json": {
            "examples": {
              "incorrect-items": {
                "$ref": "#/components/examples/422-admin-offer-chain-error-incorrect-items"
              },
              "incorrect-period": {
                "$ref": "#/components/examples/422-admin-offer-chain-error-incorrect-period"
              },
              "incorrect-steps-order-error": {
                "$ref": "#/components/examples/422-admin-offer-chain-error-incorrect-steps-order"
              },
              "invalid-dates": {
                "$ref": "#/components/examples/422-admin-offer-chain-error-invalid-dates"
              },
              "item-limit-exceeded": {
                "$ref": "#/components/examples/422-admin-offer-chain-error-item-limit-exceeded"
              },
              "too-many-steps-error": {
                "$ref": "#/components/examples/422-admin-offer-chain-error-too-many-steps"
              }
            },
            "schema": {
              "$ref": "#/components/schemas/offer-chain-error-model"
            }
          }
        },
        "description": "Configuration de la chaîne d'offres non valide."
      },
      "422-reward-chain-step-reward-can-not-claimed": {
        "content": {
          "application/json": {
            "examples": {
              "Not enough VP to claim reward chain step reward": {
                "value": {
                  "errorCode": 9913,
                  "errorMessage": "[0401-9913]: Not enough value points to claim step reward.",
                  "statusCode": 422
                }
              },
              "Reward chain step reward already claimed": {
                "value": {
                  "errorCode": 9912,
                  "errorMessage": "[0401-9912]: Reward already claimed.",
                  "statusCode": 422
                }
              }
            },
            "schema": {
              "properties": {
                "errorCode": {
                  "example": 9912,
                  "type": "integer"
                },
                "errorMessage": {
                  "example": "[0401-9912]: Can't claim the step reward.",
                  "type": "string"
                },
                "statusCode": {
                  "example": 422,
                  "type": "integer"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "Impossible de réclamer la récompense de l'étape."
      },
      "422-update-error-list": {
        "content": {
          "application/json": {
            "examples": {
              "active-offer-chain": {
                "$ref": "#/components/examples/422-admin-offer-chain-error-activated"
              },
              "chain-id-mismatch": {
                "$ref": "#/components/examples/422-admin-offer-chain-error-chain-id-mismatch"
              },
              "chain-step-ids-duplication": {
                "$ref": "#/components/examples/422-admin-offer-chain-error-duplicate-step-ids"
              },
              "incorrect-items": {
                "$ref": "#/components/examples/422-admin-offer-chain-error-incorrect-items"
              },
              "incorrect-period": {
                "$ref": "#/components/examples/422-admin-offer-chain-error-incorrect-period"
              },
              "incorrect-steps-order-error": {
                "$ref": "#/components/examples/422-admin-offer-chain-error-incorrect-steps-order"
              },
              "invalid-chain-step-ids": {
                "$ref": "#/components/examples/422-admin-offer-chain-error-invalid-chain-step-ids"
              },
              "invalid-dates": {
                "$ref": "#/components/examples/422-admin-offer-chain-error-invalid-dates"
              },
              "item-limit-exceeded": {
                "$ref": "#/components/examples/422-admin-offer-chain-error-item-limit-exceeded"
              },
              "too-many-steps-error": {
                "$ref": "#/components/examples/422-admin-offer-chain-error-too-many-steps"
              }
            },
            "schema": {
              "$ref": "#/components/schemas/offer-chain-error-model"
            }
          }
        },
        "description": "Configuration de la chaîne d'offres non valide."
      },
      "Cart-Payment_200-order-created": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "value": {
                  "order_id": 641,
                  "token": "f4puMEFFDZcx9nv5HoNHIkPe9qghvBQo"
                }
              }
            },
            "schema": {
              "properties": {
                "order_id": {
                  "description": "ID de commande.",
                  "type": "integer"
                },
                "token": {
                  "description": "Jeton de paiement.",
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "La commande a été créée avec succès."
      },
      "Common_401-complex": {
        "content": {
          "application/json": {
            "examples": {
              "Authorization header not sent": {
                "$ref": "#/components/examples/401-complex-auth-header-not-found"
              },
              "Incorrect credentials": {
                "$ref": "#/components/examples/401-complex-auth-incorrect-credentials"
              }
            },
            "schema": {
              "properties": {
                "errorCode": {
                  "example": 1501,
                  "type": "integer"
                },
                "errorMessage": {
                  "example": "[0401-1501]: Authorization failed: Authorization header not sent",
                  "type": "string"
                },
                "statusCode": {
                  "example": 401,
                  "type": "integer"
                },
                "transactionId": {
                  "example": "x-x-x-x-transactionId-mock-x-x-x",
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "L'authentification n'a pas été passée ou est incorrecte. Vérifiez que vous avez utilisé l'authentification ou des informations d'identification correctes."
      },
      "Common_401-invalid-basic-auth": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "value": {
                  "errorCode": 1020,
                  "errorMessage": "[0401-1020]: Error in Authentication method occurred",
                  "statusCode": 401
                }
              }
            },
            "schema": {
              "properties": {
                "errorCode": {
                  "example": 1020,
                  "type": "integer"
                },
                "errorMessage": {
                  "example": "[0401-1020]: Error in Authentication method occurred",
                  "type": "string"
                },
                "statusCode": {
                  "example": 401,
                  "type": "integer"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "L'authentification de base n'a pas été passée ou est incorrecte. Vérifiez que vous avez utilisé l'authentification de base ou des informations d'identification correctes."
      },
      "Common_422-body-validation": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "value": {
                  "errorCode": 1102,
                  "errorMessage": "[0401-1102]: Unprocessable Entity. The property `name` is required",
                  "statusCode": 422,
                  "transactionId": "da145238620011eb8e24fe6913ff226a"
                }
              }
            },
            "schema": {
              "$ref": "#/components/schemas/422-invalid-request"
            }
          }
        },
        "description": "Erreur de validation de la requête."
      },
      "Promotions_200-admin-get-bonus-promotion": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "value": {
                  "bonus": [
                    {
                      "quantity": 1,
                      "sku": "com.xsolla.elven_sword_1"
                    },
                    {
                      "quantity": 2,
                      "sku": "com.xsolla.elven_shield_1"
                    },
                    {
                      "quantity": 2,
                      "sku": "com.xsolla.elven_gloves_1"
                    }
                  ],
                  "condition": [
                    {
                      "sku": "com.xsolla.elven_boots_1"
                    },
                    {
                      "sku": "com.xsolla.elven_knife_1"
                    }
                  ],
                  "excluded_promotions": [
                    23,
                    45
                  ],
                  "id": 1,
                  "is_enabled": true,
                  "limits": {
                    "per_item": null,
                    "per_user": {
                      "total": 10
                    },
                    "recurrent_schedule": {
                      "per_user": {
                        "displayable_reset_next_date": "2023-02-28T11:00:00+08:00",
                        "displayable_reset_start_date": "2023-02-28T11:00:00+08:00",
                        "interval_type": "daily",
                        "reset_next_date": 1677553200,
                        "time": "11:00:00+08:00"
                      }
                    }
                  },
                  "name": {
                    "de-DE": "Neujahrsbonus",
                    "en-US": "New Year Bonus"
                  },
                  "price_conditions": [
                    {
                      "operator": "gt",
                      "value": "10.0000"
                    },
                    {
                      "operator": "lt",
                      "value": "50.0000"
                    }
                  ],
                  "promotion_periods": [
                    {
                      "date_from": "2020-04-15T18:16:00+05:00",
                      "date_until": "2020-04-25T18:16:00+05:00"
                    }
                  ]
                }
              }
            },
            "schema": {
              "$ref": "#/components/schemas/Promotions_200-get-bonus-promotion-model"
            }
          }
        },
        "description": "La promotion par bonus a été reçue avec succès."
      },
      "Promotions_200-coupon-code-list": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "$ref": "#/components/examples/Promotions_200-coupon-code-list"
              }
            },
            "schema": {
              "properties": {
                "codes": {
                  "items": {
                    "properties": {
                      "code": {
                        "$ref": "#/components/schemas/Promotions_coupon_code"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "total_count": {
                  "description": "Nombre total de codes de coupon.",
                  "type": "number"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "La liste des codes pour un coupon a été reçue avec succès."
      },
      "Promotions_200-coupon-redeemed": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "value": {
                  "items": [
                    {
                      "attributes": [],
                      "description": "Take it, take it all! All of Xsolla's riches in one Mega Booster.",
                      "groups": [
                        {
                          "external_id": "powerups",
                          "name": "Power Ups"
                        }
                      ],
                      "image_url": "https://cdn.xsolla.net/img/misc/images/e9f2f4a634bc96ea03b5d5ceadd7c55f.png",
                      "is_free": true,
                      "name": "Xsolla Booster Mega",
                      "price": null,
                      "quantity": 1,
                      "sku": "com.xsolla.booster_mega_1",
                      "type": "virtual_good",
                      "virtual_item_type": "consumable",
                      "virtual_prices": []
                    }
                  ]
                }
              }
            },
            "schema": {
              "properties": {
                "items": {
                  "example": [
                    {
                      "attributes": [],
                      "description": "Take it, take it all! All of Xsolla's riches in one Mega Booster.",
                      "groups": [
                        {
                          "external_id": "powerups",
                          "name": "Power Ups"
                        }
                      ],
                      "image_url": "https://cdn.xsolla.net/img/misc/images/e9f2f4a634bc96ea03b5d5ceadd7c55f.png",
                      "is_free": false,
                      "name": "Xsolla Booster Mega",
                      "price": {
                        "amount": "50.0000000000000000",
                        "amount_without_discount": "100.0000000000000000",
                        "currency": "USD"
                      },
                      "quantity": 1,
                      "sku": "com.xsolla.booster_mega_1",
                      "type": "virtual_good",
                      "virtual_item_type": "consumable",
                      "virtual_prices": []
                    }
                  ],
                  "items": {
                    "properties": {
                      "attributes": {
                        "type": "array"
                      },
                      "description": {
                        "type": "string"
                      },
                      "groups": {
                        "items": {
                          "properties": {
                            "external_id": {
                              "type": "string"
                            },
                            "name": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "image_url": {
                        "type": "string"
                      },
                      "is_free": {
                        "type": "boolean"
                      },
                      "name": {
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "price": {
                        "description": "Prix de l'objet.",
                        "properties": {
                          "amount": {
                            "description": "Prix de l'objet avec remise.",
                            "example": "2.9900",
                            "type": "string"
                          },
                          "amount_without_discount": {
                            "description": "Prix de l'objet.",
                            "example": "2.9900",
                            "type": "string"
                          },
                          "currency": {
                            "description": "Devise du prix de l'article. Code à trois lettres selon [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217).",
                            "example": "USD",
                            "type": "string"
                          }
                        },
                        "type": [
                          "object",
                          "null"
                        ]
                      },
                      "quantity": {
                        "type": "integer"
                      },
                      "sku": {
                        "type": "string"
                      },
                      "type": {
                        "type": "string"
                      },
                      "virtual_item_type": {
                        "description": "Type of virtual item.\n\nPossible values:\n- `consumable` — An item that disappears from the inventory after use (e.g., ammo).\n- `non_consumable` — An item that stays in the inventory for an unlimited period of time.\n- `non_renewing_subscription` — Time-limited item that can represent access to services or content for a limited period of time.",
                        "enum": [
                          "consumable",
                          "non_consumable",
                          "non_renewing_subscription"
                        ],
                        "example": "non-consumable",
                        "type": "string"
                      },
                      "virtual_prices": {
                        "type": "array"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "Le coupon a été échangé avec succès."
      },
      "Promotions_200-coupon-rewards": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "$ref": "#/components/examples/Promotions_200-get-coupon-rewards"
              }
            },
            "schema": {
              "properties": {
                "bonus": {
                  "items": {
                    "$ref": "#/components/schemas/Promotions_200-coupon-bonus-reward"
                  },
                  "type": "array"
                },
                "discount": {
                  "$ref": "#/components/schemas/Promotions_200-coupon-discount-reward"
                },
                "is_selectable": {
                  "description": "Si `true`, l'utilisateur doit choisir le bonus avant d'échanger un coupon.",
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "La liste des récompenses associées au coupon a été reçue avec succès."
      },
      "Promotions_200-get-bonus-promotions": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "value": {
                  "active_promotions_count": 2,
                  "inactive_promotions_count": 0,
                  "promotions": [
                    {
                      "bonus": [
                        {
                          "quantity": 1,
                          "sku": "com.xsolla.elven_sword_1"
                        },
                        {
                          "quantity": 2,
                          "sku": "com.xsolla.elven_shield_1"
                        },
                        {
                          "quantity": 2,
                          "sku": "com.xsolla.elven_gloves_1"
                        }
                      ],
                      "condition": [
                        {
                          "sku": "com.xsolla.elven_boots_1"
                        },
                        {
                          "sku": "com.xsolla.elven_knife_1"
                        }
                      ],
                      "id": 1,
                      "is_enabled": true,
                      "limits": {
                        "per_item": null,
                        "per_user": null,
                        "recurrent_schedule": null
                      },
                      "name": {
                        "de-DE": "Neujahrsbonus",
                        "en-US": "New Year Bonus"
                      },
                      "promotion_periods": [
                        {
                          "date_from": "2020-04-15T18:16:00+05:00",
                          "date_until": "2020-04-25T18:16:00+05:00"
                        },
                        {
                          "date_from": "2020-05-15T18:16:00+05:00",
                          "date_until": "2020-05-25T18:16:00+05:00"
                        }
                      ]
                    },
                    {
                      "bonus": [
                        {
                          "quantity": 100,
                          "sku": "com.xsolla.diamonds_1"
                        }
                      ],
                      "condition": null,
                      "excluded_promotions": [
                        1
                      ],
                      "id": 2,
                      "is_enabled": true,
                      "limits": {
                        "per_item": null,
                        "per_user": {
                          "total": 10
                        },
                        "recurrent_schedule": {
                          "per_user": {
                            "displayable_reset_next_date": "2023-02-28T11:00:00+08:00",
                            "displayable_reset_start_date": "2023-02-28T11:00:00+08:00",
                            "interval_type": "daily",
                            "reset_next_date": 1677553200,
                            "time": "11:00:00+08:00"
                          }
                        }
                      },
                      "name": {
                        "de-DE": "Sommersaison Bonus",
                        "en-US": "Summer season bonus"
                      },
                      "price_conditions": [
                        {
                          "operator": "gt",
                          "value": "10.0000"
                        },
                        {
                          "operator": "lt",
                          "value": "50.0000"
                        }
                      ],
                      "promotion_periods": [
                        {
                          "date_from": "2020-04-15T18:16:00+05:00",
                          "date_until": "2020-04-25T18:16:00+05:00"
                        }
                      ]
                    }
                  ],
                  "total_promotions_count": 2
                }
              }
            },
            "schema": {
              "properties": {
                "active_promotions_count": {
                  "$ref": "#/components/schemas/active_promotions_count"
                },
                "inactive_promotions_count": {
                  "$ref": "#/components/schemas/inactive_promotions_count"
                },
                "promotions": {
                  "items": {
                    "$ref": "#/components/schemas/Promotions_200-get-bonus-promotion-model"
                  },
                  "type": "array"
                },
                "total_promotions_count": {
                  "$ref": "#/components/schemas/total_promotions_count"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "La liste des promotions par bonus a été reçue avec succès."
      },
      "Promotions_200-get-coupons": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "$ref": "#/components/examples/Promotions_200-admin-coupons"
              }
            },
            "schema": {
              "properties": {
                "active_promotions_count": {
                  "$ref": "#/components/schemas/active_promotions_count"
                },
                "inactive_promotions_count": {
                  "$ref": "#/components/schemas/inactive_promotions_count"
                },
                "items": {
                  "items": {
                    "$ref": "#/components/schemas/admin-promotions_200-get-coupon-promotion-model"
                  },
                  "type": "array"
                },
                "total_promotions_count": {
                  "$ref": "#/components/schemas/total_promotions_count"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "La liste des coupons a été reçue avec succès."
      },
      "Promotions_200-get-item-promotions": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "value": {
                  "active_promotions_count": 4,
                  "inactive_promotions_count": 0,
                  "promotions": [
                    {
                      "discount": {
                        "percent": "20.00"
                      },
                      "id": 1,
                      "is_enabled": true,
                      "items": [
                        {
                          "sku": "com.xsolla.elven_sword_1"
                        }
                      ],
                      "limits": {
                        "per_item": null,
                        "per_user": null,
                        "recurrent_schedule": null
                      },
                      "name": {
                        "en-US": "Promotion",
                        "ru-RU": "Акция"
                      },
                      "promotion_periods": [
                        {
                          "date_from": "2020-04-15T18:16:00+05:00",
                          "date_until": "2020-04-25T18:16:00+05:00"
                        },
                        {
                          "date_from": "2020-05-15T18:16:00+05:00",
                          "date_until": "2020-05-25T18:16:00+05:00"
                        }
                      ]
                    },
                    {
                      "discount": {
                        "percent": "10.00"
                      },
                      "excluded_promotions": [
                        1,
                        3
                      ],
                      "id": 2,
                      "is_enabled": true,
                      "items": [
                        {
                          "sku": "com.xsolla.elven_helmet_1"
                        },
                        {
                          "sku": "com.xsolla.elven_armor_1"
                        }
                      ],
                      "limits": {
                        "per_item": null,
                        "per_user": {
                          "total": 10
                        },
                        "recurrent_schedule": {
                          "per_user": {
                            "displayable_reset_next_date": "2023-02-28T11:00:00+08:00",
                            "displayable_reset_start_date": "2023-02-28T11:00:00+08:00",
                            "interval_type": "daily",
                            "reset_next_date": 1677553200,
                            "time": "11:00:00+08:00"
                          }
                        }
                      },
                      "name": {
                        "en-US": "Promotion",
                        "ru-RU": "Акция"
                      },
                      "promotion_periods": [
                        {
                          "date_from": "2020-04-15T18:16:00+05:00",
                          "date_until": "2020-04-25T18:16:00+05:00"
                        }
                      ]
                    },
                    {
                      "discount": {
                        "percent": "10.00"
                      },
                      "id": 3,
                      "is_enabled": true,
                      "items": [
                        {
                          "sku": "com.xsolla.elven_helmet_2"
                        },
                        {
                          "sku": "com.xsolla.elven_armor_2"
                        }
                      ],
                      "limits": {
                        "per_item": null,
                        "per_user": {
                          "total": 10
                        },
                        "recurrent_schedule": {
                          "per_user": {
                            "displayable_reset_next_date": "2023-02-28T11:00:00+08:00",
                            "displayable_reset_start_date": "2023-02-28T11:00:00+08:00",
                            "interval_type": "daily",
                            "reset_next_date": 1677553200,
                            "time": "11:00:00+08:00"
                          }
                        }
                      },
                      "name": {
                        "en-US": "Promotion",
                        "ru-RU": "Акция"
                      },
                      "price_conditions": [
                        {
                          "operator": "gt",
                          "value": "10.0000"
                        },
                        {
                          "operator": "lt",
                          "value": "20.0000"
                        }
                      ],
                      "promotion_periods": [
                        {
                          "date_from": "2020-04-15T18:16:00+05:00",
                          "date_until": "2020-04-25T18:16:00+05:00"
                        }
                      ]
                    },
                    {
                      "discount": {
                        "percent": "10.00"
                      },
                      "id": 4,
                      "is_enabled": true,
                      "items": null,
                      "limits": {
                        "per_item": null,
                        "per_user": {
                          "total": 10
                        },
                        "recurrent_schedule": {
                          "per_user": {
                            "displayable_reset_next_date": "2023-02-28T11:00:00+08:00",
                            "displayable_reset_start_date": "2023-02-28T11:00:00+08:00",
                            "interval_type": "daily",
                            "reset_next_date": 1677553200,
                            "time": "11:00:00+08:00"
                          }
                        }
                      },
                      "name": {
                        "en-US": "Promotion",
                        "ru-RU": "Акция"
                      },
                      "price_conditions": [
                        {
                          "operator": "lt",
                          "value": "20.0000"
                        }
                      ],
                      "promotion_periods": [
                        {
                          "date_from": "2020-04-15T18:16:00+05:00",
                          "date_until": "2020-04-25T18:16:00+05:00"
                        }
                      ]
                    }
                  ],
                  "total_promotions_count": 4
                }
              }
            },
            "schema": {
              "properties": {
                "active_promotions_count": {
                  "$ref": "#/components/schemas/active_promotions_count"
                },
                "inactive_promotions_count": {
                  "$ref": "#/components/schemas/inactive_promotions_count"
                },
                "promotions": {
                  "items": {
                    "properties": {
                      "attribute_conditions": {
                        "$ref": "#/components/schemas/promotion_user-attribute_conditions_model-get"
                      },
                      "discount": {
                        "properties": {
                          "percent": {
                            "default": "10.00",
                            "description": "Pourcentage de la remise.\nLe prix de l'objet sera diminué d'une valeur calculée à l'aide de ce pourcentage.",
                            "type": [
                              "string",
                              "null"
                            ]
                          }
                        },
                        "type": "object"
                      },
                      "excluded_promotions": {
                        "$ref": "#/components/schemas/excluded_promotions"
                      },
                      "id": {
                        "description": "ID de la promotion. Identifiant unique de la promotion au sein du projet.",
                        "type": "integer"
                      },
                      "is_enabled": {
                        "$ref": "#/components/schemas/Promotions_is_enabled"
                      },
                      "items": {
                        "items": {
                          "description": "Liste des objets qui seront concernés par la remise.",
                          "properties": {
                            "sku": {
                              "default": "elven_sword",
                              "description": "UGS de l'objet.",
                              "type": [
                                "string",
                                "null"
                              ]
                            }
                          },
                          "type": "object"
                        },
                        "type": [
                          "array",
                          "null"
                        ]
                      },
                      "limits": {
                        "$ref": "#/components/schemas/Promotions_promotion_limits_response"
                      },
                      "name": {
                        "additionalProperties": {
                          "type": "string"
                        },
                        "description": "Nom de la promotion. Doit comprendre des paires clé/valeur, où la clé est une région au format \"^[a-z]{2}-[A-Z]{2}$\", la valeur est une chaîne.",
                        "example": {
                          "en-US": "Promotion",
                          "ru-RU": "Акция"
                        },
                        "type": "object"
                      },
                      "price_conditions": {
                        "$ref": "#/components/schemas/price_conditions_discount"
                      },
                      "promotion_periods": {
                        "$ref": "#/components/schemas/promotion_periods"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "total_promotions_count": {
                  "$ref": "#/components/schemas/total_promotions_count"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "La liste des promotions sur des objets a été reçue avec succès."
      },
      "Promotions_200-get-promocodes": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "$ref": "#/components/examples/Promotions_200-admin-promocodes"
              }
            },
            "schema": {
              "properties": {
                "active_promotions_count": {
                  "$ref": "#/components/schemas/active_promotions_count"
                },
                "inactive_promotions_count": {
                  "$ref": "#/components/schemas/inactive_promotions_count"
                },
                "items": {
                  "items": {
                    "$ref": "#/components/schemas/Promotions_200-get-promocode-promotion-model"
                  },
                  "type": "array"
                },
                "total_promotions_count": {
                  "$ref": "#/components/schemas/total_promotions_count"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "La liste des codes promo a été reçue avec succès."
      },
      "Promotions_200-get-promotions": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "$ref": "#/components/examples/Promotions_200-admin-promotions"
              }
            },
            "schema": {
              "properties": {
                "active_promotions_count": {
                  "$ref": "#/components/schemas/active_promotions_count"
                },
                "inactive_promotions_count": {
                  "$ref": "#/components/schemas/inactive_promotions_count"
                },
                "promotions": {
                  "items": {
                    "$ref": "#/components/schemas/Promotions_200-get-promotion-model"
                  },
                  "type": "array"
                },
                "total_promotions_count": {
                  "$ref": "#/components/schemas/total_promotions_count"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "La liste des promotions a été reçue avec succès."
      },
      "Promotions_200-get-unique-catalog-offers": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "$ref": "#/components/examples/Promotions_200-admin-unique-catalog-offers"
              }
            },
            "schema": {
              "properties": {
                "active_promotions_count": {
                  "$ref": "#/components/schemas/active_promotions_count"
                },
                "inactive_promotions_count": {
                  "$ref": "#/components/schemas/inactive_promotions_count"
                },
                "items": {
                  "items": {
                    "$ref": "#/components/schemas/Promotions_200-get-unique-catalog-offer-promotion-model"
                  },
                  "type": "array"
                },
                "total_promotions_count": {
                  "$ref": "#/components/schemas/total_promotions_count"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "La liste des coupons a été reçue avec succès."
      },
      "Promotions_200-promo-code-canceled": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "value": {
                  "cart_id": "cart_id",
                  "is_free": false,
                  "items": [
                    {
                      "attributes": [],
                      "can_be_bought": true,
                      "description": "Take it, take it all! All of Xsolla's riches in one Mega Booster.",
                      "groups": [
                        {
                          "external_id": "powerups",
                          "name": "Power Ups"
                        }
                      ],
                      "image_url": "https://cdn.xsolla.net/img/misc/images/e9f2f4a634bc96ea03b5d5ceadd7c55f.png",
                      "is_free": false,
                      "limits": {
                        "per_user": {
                          "available": 3,
                          "recurrent_schedule": {
                            "interval_type": "weekly",
                            "reset_next_date": 1746057600
                          },
                          "total": 5
                        }
                      },
                      "name": "Xsolla Booster Mega",
                      "periods": [
                        {
                          "date_from": "2020-08-11T10:00:00+03:00",
                          "date_until": "2020-08-11T20:00:00+03:00"
                        }
                      ],
                      "price": {
                        "amount": "50.0000000000000000",
                        "amount_without_discount": "100.0000000000000000",
                        "currency": "USD"
                      },
                      "promotions": [
                        {
                          "bonus": [
                            {
                              "image_url": "https://cdn.xsolla.net/img/misc/images/2fc5c491a47413a8e8000447889093c2.png",
                              "name": "Xsolla Minigun",
                              "quantity": 1,
                              "sku": "com.xsolla.minigun_1",
                              "type": "virtual_good"
                            }
                          ],
                          "date_end": "2026-04-15T16:16:00+03:00",
                          "date_start": "2020-04-15T16:16:00+03:00",
                          "discount": {
                            "percent": "50.00"
                          },
                          "name": "Bonus promotion"
                        }
                      ],
                      "quantity": 123,
                      "sku": "com.xsolla.booster_mega_1",
                      "type": "virtual_good",
                      "virtual_item_type": "consumable",
                      "virtual_prices": [],
                      "vp_rewards": [
                        {
                          "amount": 130,
                          "image_url": "https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg",
                          "item_id": 175232,
                          "name": "Value point",
                          "sku": "com.xsolla.value_point_1"
                        },
                        {
                          "amount": 50,
                          "image_url": "https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg",
                          "is_clan": true,
                          "item_id": 186321,
                          "name": "Clan Reward VP 1",
                          "sku": "com.xsolla.clan_value_point_1"
                        }
                      ]
                    }
                  ],
                  "price": {
                    "amount": "6150.0000000000000000",
                    "amount_without_discount": "6150.0000000000000000",
                    "currency": "USD"
                  }
                }
              }
            },
            "schema": {
              "properties": {
                "cart_id": {
                  "description": "ID de panier.",
                  "example": "cart_id",
                  "type": "string"
                },
                "is_free": {
                  "$ref": "#/components/schemas/value-is_free"
                },
                "items": {
                  "example": [
                    {
                      "attributes": [],
                      "can_be_bought": true,
                      "description": "Take it, take it all! All of Xsolla's riches in one Mega Booster.",
                      "groups": [
                        {
                          "external_id": "powerups",
                          "name": "Power Ups"
                        }
                      ],
                      "image_url": "https://cdn.xsolla.net/img/misc/images/e9f2f4a634bc96ea03b5d5ceadd7c55f.png",
                      "is_free": false,
                      "limits": {
                        "per_user": {
                          "available": 3,
                          "recurrent_schedule": {
                            "interval_type": "weekly",
                            "reset_next_date": 1746057600
                          },
                          "total": 5
                        }
                      },
                      "name": "Xsolla Booster Mega",
                      "periods": [
                        {
                          "date_from": "2020-08-11T10:00:00+03:00",
                          "date_until": "2020-08-11T20:00:00+03:00"
                        }
                      ],
                      "price": {
                        "amount": "50.0000000000000000",
                        "amount_without_discount": "100.0000000000000000",
                        "currency": "USD"
                      },
                      "promotions": [
                        {
                          "bonus": [
                            {
                              "image_url": "https://cdn.xsolla.net/img/misc/images/2fc5c491a47413a8e8000447889093c2.png",
                              "name": "Xsolla Minigun",
                              "quantity": 1,
                              "sku": "com.xsolla.minigun_1",
                              "type": "virtual_good"
                            }
                          ],
                          "date_end": "2026-04-15T16:16:00+03:00",
                          "date_start": "2020-04-15T16:16:00+03:00",
                          "discount": {
                            "percent": "50.00"
                          },
                          "name": "Bonus promotion"
                        }
                      ],
                      "quantity": 123,
                      "sku": "com.xsolla.booster_mega_1",
                      "type": "virtual_good",
                      "virtual_item_type": "consumable",
                      "virtual_prices": [],
                      "vp_rewards": [
                        {
                          "amount": 130,
                          "image_url": "https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg",
                          "item_id": 175232,
                          "name": "Value point",
                          "sku": "com.xsolla.value_point_1"
                        },
                        {
                          "amount": 50,
                          "image_url": "https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg",
                          "is_clan": true,
                          "item_id": 186321,
                          "name": "Clan Reward VP 1",
                          "sku": "com.xsolla.clan_value_point_1"
                        }
                      ]
                    }
                  ],
                  "items": {
                    "properties": {
                      "attributes": {
                        "$ref": "#/components/schemas/client-attributes"
                      },
                      "can_be_bought": {
                        "$ref": "#/components/schemas/Can_be_bought"
                      },
                      "description": {
                        "type": "string"
                      },
                      "groups": {
                        "items": {
                          "properties": {
                            "external_id": {
                              "type": "string"
                            },
                            "name": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "image_url": {
                        "type": "string"
                      },
                      "is_free": {
                        "$ref": "#/components/schemas/value-is_free"
                      },
                      "limits": {
                        "$ref": "#/components/schemas/Catalog_item_limits"
                      },
                      "name": {
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "periods": {
                        "$ref": "#/components/schemas/item-periods"
                      },
                      "price": {
                        "description": "Prix de l'objet.",
                        "properties": {
                          "amount": {
                            "description": "Prix de l'objet avec remise.",
                            "example": "2.9900",
                            "type": "string"
                          },
                          "amount_without_discount": {
                            "description": "Prix de l'objet.",
                            "example": "2.9900",
                            "type": "string"
                          },
                          "currency": {
                            "description": "Devise du prix de l'article. Code à trois lettres selon [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217).",
                            "example": "USD",
                            "type": "string"
                          }
                        },
                        "type": [
                          "object",
                          "null"
                        ]
                      },
                      "promotions": {
                        "$ref": "#/components/schemas/Catalog_item_promotions"
                      },
                      "quantity": {
                        "type": "integer"
                      },
                      "sku": {
                        "type": "string"
                      },
                      "type": {
                        "type": "string"
                      },
                      "virtual_item_type": {
                        "description": "Type of virtual item.\n\nPossible values:\n- `consumable` — An item that disappears from the inventory after use (e.g., ammo).\n- `non_consumable` — An item that stays in the inventory for an unlimited period of time.\n- `non_renewing_subscription` — Time-limited item that can represent access to services or content for a limited period of time.",
                        "enum": [
                          "consumable",
                          "non_consumable",
                          "non_renewing_subscription"
                        ],
                        "example": "non-consumable",
                        "type": "string"
                      },
                      "virtual_prices": {
                        "type": "array"
                      },
                      "vp_rewards": {
                        "$ref": "#/components/schemas/client-item-value-point-reward"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "price": {
                  "description": "Prix du panier.",
                  "example": {
                    "amount": "6150.0000000000000000",
                    "amount_without_discount": "6150.0000000000000000",
                    "currency": "USD"
                  },
                  "properties": {
                    "amount": {
                      "default": "50.0000000000000000",
                      "type": "string"
                    },
                    "amount_without_discount": {
                      "default": "100.0000000000000000",
                      "type": "string"
                    },
                    "currency": {
                      "default": "USD",
                      "type": "string"
                    }
                  },
                  "type": [
                    "object",
                    "null"
                  ]
                }
              },
              "type": "object"
            }
          }
        },
        "description": "Le code promo est annulé avec succès."
      },
      "Promotions_200-promo-code-redeemed": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "value": {
                  "cart_id": "cart_id",
                  "is_free": false,
                  "items": [
                    {
                      "attributes": [],
                      "can_be_bought": true,
                      "description": "Take it, take it all! All of Xsolla's riches in one Mega Booster.",
                      "groups": [
                        {
                          "external_id": "powerups",
                          "name": "Power Ups"
                        }
                      ],
                      "image_url": "https://cdn.xsolla.net/img/misc/images/e9f2f4a634bc96ea03b5d5ceadd7c55f.png",
                      "is_free": false,
                      "limits": {
                        "per_user": {
                          "available": 3,
                          "recurrent_schedule": {
                            "interval_type": "weekly",
                            "reset_next_date": 1746057600
                          },
                          "total": 5
                        }
                      },
                      "name": "Xsolla Booster Mega",
                      "periods": [
                        {
                          "date_from": "2020-08-11T10:00:00+03:00",
                          "date_until": "2020-08-11T20:00:00+03:00"
                        }
                      ],
                      "price": {
                        "amount": "50.0000000000000000",
                        "amount_without_discount": "100.0000000000000000",
                        "currency": "USD"
                      },
                      "promotions": [
                        {
                          "bonus": [
                            {
                              "image_url": "https://cdn.xsolla.net/img/misc/images/2fc5c491a47413a8e8000447889093c2.png",
                              "name": "Xsolla Minigun",
                              "quantity": 1,
                              "sku": "com.xsolla.minigun_1",
                              "type": "virtual_good"
                            }
                          ],
                          "date_end": "2026-04-15T16:16:00+03:00",
                          "date_start": "2020-04-15T16:16:00+03:00",
                          "discount": {
                            "percent": "50.00"
                          },
                          "name": "Bonus promotion"
                        }
                      ],
                      "quantity": 123,
                      "sku": "com.xsolla.booster_mega_1",
                      "type": "virtual_good",
                      "virtual_item_type": "consumable",
                      "virtual_prices": [],
                      "vp_rewards": [
                        {
                          "amount": 130,
                          "image_url": "https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg",
                          "is_clan": false,
                          "item_id": 175232,
                          "name": "Value point",
                          "sku": "com.xsolla.value_point_1"
                        },
                        {
                          "amount": 50,
                          "image_url": "https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg",
                          "is_clan": true,
                          "item_id": 186321,
                          "name": "Clan Reward VP 1",
                          "sku": "com.xsolla.clan_value_point_1"
                        }
                      ]
                    },
                    {
                      "attributes": [],
                      "can_be_bought": true,
                      "description": "Honshu Boshin Wakizashi - Modern Tactical Samurai / Ninja Sword - Hand Forged 1060 Carbon Steel - Full Tang, Fully Functional, Battle Ready - Black TPR, Steel Guard and Pommel.",
                      "groups": [],
                      "image_url": "https://cdn.xsolla.net/img/misc/images/e9f2f4a634bc96ea03b5d5ceadd7c55f.png",
                      "is_free": true,
                      "limits": {
                        "per_user": {
                          "available": 3,
                          "recurrent_schedule": {
                            "interval_type": "weekly",
                            "reset_next_date": 1746057600
                          },
                          "total": 5
                        }
                      },
                      "name": "Sword Xsolla Skin",
                      "periods": [
                        {
                          "date_from": "2020-08-11T10:00:00+03:00",
                          "date_until": "2020-08-11T20:00:00+03:00"
                        }
                      ],
                      "price": [],
                      "promotions": [
                        {
                          "bonus": [
                            {
                              "image_url": "https://cdn.xsolla.net/img/misc/images/2fc5c491a47413a8e8000447889093c2.png",
                              "name": "Xsolla Minigun",
                              "quantity": 1,
                              "sku": "com.xsolla.minigun_1",
                              "type": "virtual_good"
                            }
                          ],
                          "date_end": "2026-04-15T16:16:00+03:00",
                          "date_start": "2020-04-15T16:16:00+03:00",
                          "discount": {
                            "percent": "50.00"
                          },
                          "name": "Bonus promotion"
                        }
                      ],
                      "quantity": 1,
                      "sku": "com.xsolla.swords_1",
                      "type": "virtual_good",
                      "virtual_item_type": "non_consumable",
                      "virtual_prices": [],
                      "vp_rewards": [
                        {
                          "amount": 130,
                          "image_url": "https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg",
                          "item_id": 175232,
                          "name": "Value point",
                          "sku": "com.xsolla.value_point_1"
                        },
                        {
                          "amount": 50,
                          "image_url": "https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg",
                          "is_clan": true,
                          "item_id": 186321,
                          "name": "Clan Reward VP 1",
                          "sku": "com.xsolla.clan_value_point_1"
                        }
                      ]
                    }
                  ],
                  "price": {
                    "amount": "6150.0000000000000000",
                    "amount_without_discount": "12300.0000000000000000",
                    "currency": "USD"
                  },
                  "rewards": {
                    "bonus": [
                      {
                        "item": {
                          "description": "Honshu Boshin Wakizashi - Modern Tactical Samurai / Ninja Sword - Hand Forged 1060 Carbon Steel - Full Tang, Fully Functional, Battle Ready - Black TPR, Steel Guard and Pommel.",
                          "image_url": "https://cdn.xsolla.net/img/misc/images/e9f2f4a634bc96ea03b5d5ceadd7c55f.png",
                          "name": "Sword Xsolla Skin",
                          "sku": "com.xsolla.swords_1",
                          "type": "virtual_good",
                          "virtual_item_type": "non_consumable"
                        },
                        "quantity": 1
                      }
                    ],
                    "discount": {
                      "percent": null
                    },
                    "discounted_items": [
                      {
                        "discount": {
                          "percent": "50.00"
                        },
                        "sku": "com.xsolla.booster_mega_1"
                      }
                    ],
                    "is_selectable": false
                  }
                }
              }
            },
            "schema": {
              "properties": {
                "cart_id": {
                  "description": "ID de panier.",
                  "example": "cart_id",
                  "type": "string"
                },
                "is_free": {
                  "$ref": "#/components/schemas/value-is_free"
                },
                "items": {
                  "example": [
                    {
                      "attributes": [],
                      "can_be_bought": true,
                      "description": "Take it, take it all! All of Xsolla's riches in one Mega Booster.",
                      "groups": [
                        {
                          "external_id": "powerups",
                          "name": "Power Ups"
                        }
                      ],
                      "image_url": "https://cdn.xsolla.net/img/misc/images/e9f2f4a634bc96ea03b5d5ceadd7c55f.png",
                      "is_free": false,
                      "limits": {
                        "per_user": {
                          "available": 3,
                          "recurrent_schedule": {
                            "interval_type": "weekly",
                            "reset_next_date": 1746057600
                          },
                          "total": 5
                        }
                      },
                      "name": "Xsolla Booster Mega",
                      "periods": [
                        {
                          "date_from": "2020-08-11T10:00:00+03:00",
                          "date_until": "2020-08-11T20:00:00+03:00"
                        }
                      ],
                      "price": {
                        "amount": "50.0000000000000000",
                        "amount_without_discount": "100.0000000000000000",
                        "currency": "USD"
                      },
                      "promotions": [
                        {
                          "bonus": [
                            {
                              "image_url": "https://cdn.xsolla.net/img/misc/images/2fc5c491a47413a8e8000447889093c2.png",
                              "name": "Xsolla Minigun",
                              "quantity": 1,
                              "sku": "com.xsolla.minigun_1",
                              "type": "virtual_good"
                            }
                          ],
                          "date_end": "2026-04-15T16:16:00+03:00",
                          "date_start": "2020-04-15T16:16:00+03:00",
                          "discount": {
                            "percent": "50.00"
                          },
                          "name": "Bonus promotion"
                        }
                      ],
                      "quantity": 123,
                      "sku": "com.xsolla.booster_mega_1",
                      "type": "virtual_good",
                      "virtual_item_type": "consumable",
                      "virtual_prices": [],
                      "vp_rewards": [
                        {
                          "amount": 130,
                          "image_url": "https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg",
                          "is_clan": false,
                          "item_id": 175232,
                          "name": "Value point",
                          "sku": "com.xsolla.value_point_1"
                        },
                        {
                          "amount": 50,
                          "image_url": "https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg",
                          "is_clan": true,
                          "item_id": 186321,
                          "name": "Clan Reward VP 1",
                          "sku": "com.xsolla.clan_value_point_1"
                        }
                      ]
                    }
                  ],
                  "items": {
                    "properties": {
                      "can_be_bought": {
                        "$ref": "#/components/schemas/Can_be_bought"
                      },
                      "description": {
                        "type": "string"
                      },
                      "groups": {
                        "items": {
                          "properties": {
                            "external_id": {
                              "type": "string"
                            },
                            "name": {
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "image_url": {
                        "type": "string"
                      },
                      "is_free": {
                        "$ref": "#/components/schemas/value-is_free"
                      },
                      "limits": {
                        "$ref": "#/components/schemas/Catalog_item_limits"
                      },
                      "name": {
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "periods": {
                        "$ref": "#/components/schemas/item-periods"
                      },
                      "promotions": {
                        "$ref": "#/components/schemas/Catalog_item_promotions"
                      },
                      "quantity": {
                        "type": "integer"
                      },
                      "sku": {
                        "type": "string"
                      },
                      "type": {
                        "type": "string"
                      },
                      "vp_rewards": {
                        "$ref": "#/components/schemas/client-item-value-point-reward"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "price": {
                  "description": "Prix du panier.",
                  "example": {
                    "amount": "6150.0000000000000000",
                    "amount_without_discount": "6150.0000000000000000",
                    "currency": "USD"
                  },
                  "properties": {
                    "amount": {
                      "example": "50.0000000000000000",
                      "type": "string"
                    },
                    "amount_without_discount": {
                      "example": "100.0000000000000000",
                      "type": "string"
                    },
                    "currency": {
                      "example": "USD",
                      "type": "string"
                    }
                  },
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "rewards": {
                  "$ref": "#/components/schemas/Promo_code_rewards"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "Le code promo a été utilisé avec succès."
      },
      "Promotions_200-promocode-code-list": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "$ref": "#/components/examples/Promotions_200-coupon-code-list"
              }
            },
            "schema": {
              "properties": {
                "codes": {
                  "items": {
                    "properties": {
                      "code": {
                        "$ref": "#/components/schemas/Promotions_coupon_code"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "total_count": {
                  "description": "Nombre total de codes pour un code promo.",
                  "type": "number"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "La liste des codes pour un code promo a été reçue avec succès."
      },
      "Promotions_200-promocode-rewards": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "$ref": "#/components/examples/Promotions_200-get-promocode-rewards"
              }
            },
            "schema": {
              "$ref": "#/components/schemas/Promo_code_rewards"
            }
          }
        },
        "description": "La liste des récompenses associées au code promo a été reçue avec succès."
      },
      "Promotions_200-unique-catalog-offer-code-list": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "$ref": "#/components/examples/Promotions_200-coupon-code-list"
              }
            },
            "schema": {
              "properties": {
                "codes": {
                  "items": {
                    "properties": {
                      "code": {
                        "$ref": "#/components/schemas/Promotions_coupon_code"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "total_count": {
                  "description": "Nombre total de codes d'offres uniques dans le catalogue.",
                  "type": "number"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "La liste des codes d'offres uniques dans le catalogue a été reçue avec succès."
      },
      "Promotions_200-verify-promo-code": {
        "content": {
          "application/json": {
            "examples": {
              "coupon info": {
                "value": {
                  "code": "WINTER2023",
                  "rewards": {
                    "bonus": [
                      {
                        "item": {
                          "description": "Game description",
                          "image_url": "https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png",
                          "name": "Game name",
                          "sku": "com.xsolla.game_1",
                          "type": "unit",
                          "unit_items": [
                            {
                              "drm_name": "Steam",
                              "drm_sku": "steam_key_1",
                              "is_free": false,
                              "name": "Game name",
                              "sku": "com.xsolla.game_key_01",
                              "type": "game_key"
                            },
                            {
                              "drm_name": "Origin",
                              "drm_sku": "origin_key_1",
                              "name": "Game name",
                              "sku": "com.xsolla.game_key_02",
                              "type": "game_key"
                            }
                          ]
                        },
                        "quantity": 1
                      },
                      {
                        "item": {
                          "description": "Game description",
                          "image_url": "https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png",
                          "name": "Game name",
                          "sku": "com.xsolla.game_2",
                          "type": "unit",
                          "unit_items": [
                            {
                              "drm_name": "Steam",
                              "drm_sku": "steam_key_1",
                              "name": "Game name",
                              "sku": "com.xsolla.game_key_01",
                              "type": "game_key"
                            }
                          ]
                        },
                        "quantity": 2
                      }
                    ],
                    "is_selectable": true
                  },
                  "type": "coupon"
                }
              },
              "promocode info": {
                "value": {
                  "code": "SUMMER2023",
                  "rewards": {
                    "bonus": [
                      {
                        "item": {
                          "description": "Game description",
                          "image_url": "https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png",
                          "name": "Game name",
                          "sku": "com.xsolla.game_2",
                          "type": "unit",
                          "unit_items": [
                            {
                              "drm_name": "Steam",
                              "drm_sku": "steam_key_1",
                              "name": "Game name",
                              "sku": "com.xsolla.game_key_01",
                              "type": "game_key"
                            }
                          ]
                        },
                        "quantity": 2
                      }
                    ],
                    "discount": {
                      "percent": "10.00"
                    },
                    "discounted_items": [
                      {
                        "description": "sword",
                        "discount": {
                          "percent": "10.00"
                        },
                        "image_url": null,
                        "name": "Elven sword",
                        "sku": "com.xsolla.elven_sword_1",
                        "type": "virtual_good"
                      }
                    ],
                    "is_selectable": true
                  },
                  "type": "promocode"
                }
              }
            },
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/Promotions_coupon_code"
                },
                "rewards": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/Coupon_rewards"
                    },
                    {
                      "$ref": "#/components/schemas/Promo_code_rewards_verify"
                    }
                  ]
                },
                "type": {
                  "description": "Type de code : `promocode`/`coupon`.",
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "Informations sur le code."
      },
      "Promotions_201-coupon-promocode-code-created": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "value": {
                  "code": "WINTER2021"
                }
              }
            },
            "schema": {
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/Promotions_coupon_code"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "Le code a été créé avec succès."
      },
      "Promotions_201-create-promotion": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "value": {
                  "promotion_id": 2384756
                }
              }
            },
            "schema": {
              "properties": {
                "promotion_id": {
                  "description": "ID de la promotion. Identifiant unique de la promotion au sein du projet.",
                  "type": "integer"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "La promotion a été créée avec succès."
      },
      "Promotions_401-invalid-basic-auth": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "value": {
                  "errorCode": 1020,
                  "errorMessage": "[0401-1020]: Error in Authentication method occurred",
                  "statusCode": 401
                }
              }
            },
            "schema": {
              "properties": {
                "errorCode": {
                  "example": 1020,
                  "type": "integer"
                },
                "errorMessage": {
                  "example": "[0401-1020]: Error in Authentication method occurred",
                  "type": "string"
                },
                "statusCode": {
                  "example": 401,
                  "type": "integer"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "L'authentification de base n'a pas été passée ou est incorrecte. Vérifiez que vous avez utilisé l'authentification de base ou des informations d'identification correctes."
      },
      "Promotions_401-invalid-client-auth": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "value": {
                  "errorCode": 1501,
                  "errorMessage": "[0401-1501]: Authorization failed: Provide authorization",
                  "statusCode": 401
                }
              }
            },
            "schema": {
              "properties": {
                "errorCode": {
                  "example": 1501,
                  "type": "integer"
                },
                "errorMessage": {
                  "example": "[0401-1501]: Authorization failed: Provide authorization",
                  "type": "string"
                },
                "statusCode": {
                  "example": 401,
                  "type": "integer"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "L'authentification n'a pas été passée ou est incorrecte."
      },
      "Promotions_403-auth-header": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "value": {
                  "errorCode": 0,
                  "errorMessage": "Authorization header not sent",
                  "statusCode": 403
                }
              }
            },
            "schema": {
              "properties": {
                "errorCode": {
                  "example": 0,
                  "type": "integer"
                },
                "errorMessage": {
                  "example": "Authorization header not sent.",
                  "type": "string"
                },
                "statusCode": {
                  "example": 403,
                  "type": "integer"
                },
                "transactionId": {
                  "example": "x-x-x-x-transactionId-mock-x-x-x",
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "L'en-tête d'autorisation n'a pas été passé."
      },
      "Promotions_404-admin-coupon": {
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "errorCode": {
                  "example": 4001,
                  "type": "integer"
                },
                "errorMessage": {
                  "example": "[0401-9802]: Coupon not found",
                  "type": "string"
                },
                "statusCode": {
                  "example": 404,
                  "type": "integer"
                },
                "transactionId": {
                  "example": "x-x-x-x-transactionId-mock-x-x-x",
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "Coupon non trouvé. Assurez-vous que le paramètre `external_id` est correct."
      },
      "Promotions_404-admin-promocode": {
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "errorCode": {
                  "example": 4001,
                  "type": "integer"
                },
                "errorMessage": {
                  "example": "[0401-9802]: Promocode not found",
                  "type": "string"
                },
                "statusCode": {
                  "example": 404,
                  "type": "integer"
                },
                "transactionId": {
                  "example": "x-x-x-x-transactionId-mock-x-x-x",
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "Code promo non trouvé. Assurez-vous que le paramètre `external_id` est correct."
      },
      "Promotions_404-admin-promotion": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "value": {
                  "errorCode": 9502,
                  "errorMessage": "[0401-9502]: Can not find promotion with ID = 111425 in project 59080",
                  "statusCode": 404
                }
              }
            },
            "schema": {
              "properties": {
                "errorCode": {
                  "example": 9502,
                  "type": "integer"
                },
                "errorMessage": {
                  "example": "[0401-9502]: Can not find promotion with ID = 111425 in project 59080",
                  "type": "string"
                },
                "statusCode": {
                  "example": 404,
                  "type": "integer"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "Promotion non trouvée. Assurez-vous que le paramètre `promotion_id` est correct."
      },
      "Promotions_404-coupon": {
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "errorCode": {
                  "example": 4001,
                  "type": "integer"
                },
                "errorMessage": {
                  "example": "[0401-9807]: Enter valid coupon code.",
                  "type": "string"
                },
                "statusCode": {
                  "example": 404,
                  "type": "integer"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "Entrez un code de coupon valide."
      },
      "Promotions_404-promo-code": {
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "errorCode": {
                  "example": 4001,
                  "type": "integer"
                },
                "errorMessage": {
                  "example": "[0401-9807]: Enter valid promo code.",
                  "type": "string"
                },
                "statusCode": {
                  "example": 404,
                  "type": "integer"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "Entrez un code promo valide."
      },
      "Promotions_404-verify-promo-code": {
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "errorCode": {
                  "example": 9811,
                  "type": "integer"
                },
                "errorMessage": {
                  "example": "[0401-9811]: Code not found.",
                  "type": "string"
                },
                "statusCode": {
                  "example": 404,
                  "type": "integer"
                },
                "transactionId": {
                  "example": "x-x-x-x-transactionId-mock-x-x-x",
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "Code non trouvé. Assurez-vous que la valeur de `code` est correcte."
      },
      "Promotions_422-activate-deactivate-promotion": {
        "content": {
          "application/json": {
            "examples": {
              "Error was occurred": {
                "$ref": "#/components/examples/422-activate-deactivate-promotion"
              }
            },
            "schema": {
              "properties": {
                "errorCode": {
                  "example": 1102,
                  "type": "integer"
                },
                "errorMessage": {
                  "example": "[0401-9505]: Error was occurred while promotion was being updated",
                  "type": "string"
                },
                "statusCode": {
                  "example": 422,
                  "type": "integer"
                },
                "transactionId": {
                  "example": "da145238620011eb8e24fe6913ff226a",
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "Demande non valide."
      },
      "Promotions_422-admin-promotion-error": {
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "errorCode": {
                  "example": 9502,
                  "type": "integer"
                },
                "errorMessage": {
                  "example": "[0401-9502]: Error occurred while receiving the promotion from the promotion service",
                  "type": "string"
                },
                "statusCode": {
                  "example": 422,
                  "type": "integer"
                },
                "transactionId": {
                  "example": "x-x-x-x-transactionId-mock-x-x-x",
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "Une erreur s'est produite lors de la réception de la promotion par le service de promotion."
      },
      "Promotions_422-admin-promotion-missed-bonus-property": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "value": {
                  "errorCode": 1102,
                  "errorMessage": "[0401-1102]: Unprocessable Entity. The property `bonus` is required",
                  "statusCode": 422,
                  "transactionId": "x-x-x-x-transactionId-mock-x-x-x"
                }
              }
            },
            "schema": {
              "properties": {
                "errorCode": {
                  "example": 1102,
                  "type": "integer"
                },
                "errorMessage": {
                  "example": "[0401-1102]:  Unprocessable Entity. The property `bonus` is required",
                  "type": "string"
                },
                "statusCode": {
                  "example": 422,
                  "type": "integer"
                },
                "transactionId": {
                  "example": "x-x-x-x-transactionId-mock-x-x-x",
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "Demande non valide."
      },
      "Promotions_422-admin-promotion-missed-items-property": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "value": {
                  "errorCode": 1102,
                  "errorMessage": "[0401-1102]: Unprocessable Entity. The property `items` is required",
                  "statusCode": 422,
                  "transactionId": "x-x-x-x-transactionId-mock-x-x-x"
                }
              }
            },
            "schema": {
              "properties": {
                "errorCode": {
                  "example": 1102,
                  "type": "integer"
                },
                "errorMessage": {
                  "example": "[0401-1102]:  Unprocessable Entity. The property `items` is required",
                  "type": "string"
                },
                "statusCode": {
                  "example": 422,
                  "type": "integer"
                },
                "transactionId": {
                  "example": "x-x-x-x-transactionId-mock-x-x-x",
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "Demande non valide."
      },
      "Promotions_422-cancel-promo-code": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "value": {
                  "errorCode": 1102,
                  "errorMessage": "[0401-1102]: Unprocessable Entity. The property `id` is required",
                  "statusCode": 422
                }
              }
            },
            "schema": {
              "properties": {
                "errorCode": {
                  "example": 1102,
                  "type": "integer"
                },
                "errorMessage": {
                  "example": "[0401-1102]: Unprocessable Entity. The property `id` is required",
                  "type": "string"
                },
                "statusCode": {
                  "example": 422,
                  "type": "integer"
                },
                "transactionId": {
                  "example": "x-x-x-x-transactionId-mock-x-x-x",
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "Demande non valide."
      },
      "Promotions_422-coupon-promocode-same-code-exists": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "value": {
                  "errorCode": 9803,
                  "errorMessage": "[0401-9803]: The code already exists.",
                  "statusCode": 422,
                  "transactionId": "x-x-x-x-transactionId-mock-x-x-x"
                }
              }
            },
            "schema": {
              "properties": {
                "errorCode": {
                  "example": 9803,
                  "type": "integer"
                },
                "errorMessage": {
                  "example": "[0401-9803]: The code already exists.",
                  "type": "string"
                },
                "statusCode": {
                  "example": 422,
                  "type": "integer"
                },
                "transactionId": {
                  "example": "x-x-x-x-transactionId-mock-x-x-x",
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "Requête non valide. Le code existe déjà."
      },
      "Promotions_422-invalid-coupon": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "value": {
                  "errorCode": 1102,
                  "errorMessage": "[0401-1102]: Unprocessable Entity. The property `external_id` is required",
                  "statusCode": 422
                }
              }
            },
            "schema": {
              "properties": {
                "errorCode": {
                  "example": 1102,
                  "type": "integer"
                },
                "errorMessage": {
                  "example": "[0401-1102]: Unprocessable Entity. The property `external_id` is required",
                  "type": "string"
                },
                "statusCode": {
                  "example": 422,
                  "type": "integer"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "Demande non valide."
      },
      "Promotions_422-redeem-coupon": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "value": {
                  "errorCode": 1102,
                  "errorMessage": "[0401-1102]: Unprocessable Entity. The property `coupon_code` is required",
                  "statusCode": 422
                }
              }
            },
            "schema": {
              "properties": {
                "errorCode": {
                  "example": 1102,
                  "type": "integer"
                },
                "errorMessage": {
                  "example": "[0401-1102]: Unprocessable Entity. The property `coupon_code` is required",
                  "type": "string"
                },
                "statusCode": {
                  "example": 422,
                  "type": "integer"
                },
                "transactionId": {
                  "example": "x-x-x-x-transactionId-mock-x-x-x",
                  "type": "string"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "Demande non valide."
      },
      "Promotions_422-rewards": {
        "content": {
          "application/json": {
            "schema": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/Promotions_422_limit_error"
                },
                {
                  "$ref": "#/components/schemas/Promotions_422_reglock_error"
                }
              ]
            }
          }
        },
        "description": "Demande non valide."
      },
      "Promotions_422-verify-promo-code": {
        "content": {
          "application/json": {
            "examples": {
              "code redemption limit": {
                "value": {
                  "errorCode": 9804,
                  "errorMessage": "[0401-9804]: You have reached the coupon redemption limit.",
                  "statusCode": 422
                }
              },
              "regionally restricted": {
                "value": {
                  "errorCode": 9808,
                  "errorMessage": "[0401-9808]: Coupon is not available in your region.",
                  "statusCode": 422
                }
              }
            },
            "schema": {
              "properties": {
                "errorCode": {
                  "type": "integer"
                },
                "errorMessage": {
                  "type": "string"
                },
                "statusCode": {
                  "type": "integer"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "Code promo non valide."
      },
      "Upsell-200-get-client-list": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "value": {
                  "has_more": true,
                  "items": [
                    {
                      "attributes": [
                        {
                          "external_id": "stack_size",
                          "name": {
                            "en": "Quantity of items in the upsell set"
                          },
                          "values": [
                            {
                              "external_id": "size_e3364991f92e751689a68b96598a5a5a84010b85",
                              "value": "5"
                            }
                          ]
                        }
                      ],
                      "can_be_bought": true,
                      "custom_attributes": {
                        "attr": "value",
                        "purchased": 0
                      },
                      "description": "Big Rocket - description",
                      "groups": [
                        {
                          "external_id": "accessory",
                          "name": {
                            "en": "accessory"
                          }
                        }
                      ],
                      "image_url": "https://popmedia.blob.core.windows.net/popyourself/male/outfit/male_armor_white_a-01.png",
                      "is_free": false,
                      "limits": {
                        "per_user": {
                          "available": 3,
                          "limit_exceeded_visibility": "show",
                          "recurrent_schedule": {
                            "interval_type": "weekly",
                            "reset_next_date": 1746057600
                          },
                          "total": 5
                        }
                      },
                      "name": "Big Rocket",
                      "periods": [
                        {
                          "date_from": "2020-08-11T10:00:00+03:00",
                          "date_until": "2020-08-11T20:00:00+03:00"
                        }
                      ],
                      "price": {
                        "amount": "100.99",
                        "amount_without_discount": "100.99",
                        "currency": "USD"
                      },
                      "promotions": [
                        {
                          "bonus": [
                            {
                              "image_url": "https://cdn.xsolla.net/img/misc/images/2fc5c491a47413a8e8000447889093c2.png",
                              "name": "Xsolla Minigun",
                              "quantity": 1,
                              "sku": "com.xsolla.minigun_1",
                              "type": "virtual_good"
                            },
                            {
                              "quantity": 1,
                              "sku": "com.xsolla.phys_good_1",
                              "type": "physical_good"
                            },
                            {
                              "bundle_type": "standard",
                              "image_url": "https://cdn.xsolla.net/img/misc/images/9676f06265375087e607cb79c5283688.png",
                              "name": "Super Lootbox with items",
                              "quantity": 1,
                              "sku": "com.xsolla.SuperLootboxBundle_1",
                              "type": "bundle"
                            }
                          ],
                          "date_end": "2026-04-15T16:16:00+03:00",
                          "date_start": "2020-04-15T16:16:00+03:00",
                          "discount": null,
                          "name": "Bonus promotion"
                        }
                      ],
                      "sku": "com.xsolla.big_rocket_1",
                      "type": "virtual_good",
                      "virtual_item_type": "non_renewing_subscription",
                      "virtual_prices": [
                        {
                          "amount": 100,
                          "amount_without_discount": 100,
                          "description": "description",
                          "image_url": "http://image.png",
                          "is_default": true,
                          "name": "SHOTGUN FOR TRUE RAIDERS",
                          "sku": "com.xsolla.vc_1",
                          "type": "virtual_currency"
                        }
                      ],
                      "vp_rewards": []
                    },
                    {
                      "attributes": [
                        {
                          "external_id": "stack_size",
                          "name": {
                            "en": "Quantity of items in the upsell set"
                          },
                          "values": [
                            {
                              "external_id": "size_e3364991f92e751689a68b96598a5a5a84010b85",
                              "value": "5"
                            }
                          ]
                        },
                        {
                          "external_id": "rating",
                          "name": {
                            "en": "Items rating"
                          },
                          "values": [
                            {
                              "external_id": "rating_e3364991f92e751689a68b96598a5a5a84010b85",
                              "value": "3.9"
                            }
                          ]
                        }
                      ],
                      "can_be_bought": true,
                      "description": "description",
                      "groups": [
                        {
                          "external_id": "weapons",
                          "name": {
                            "en": "Weapons"
                          }
                        }
                      ],
                      "image_url": "http://image.png",
                      "is_free": false,
                      "limits": null,
                      "name": "SHOTGUN FOR TRUE RAIDERS",
                      "periods": [
                        {
                          "date_from": "2020-08-11T20:00:00+03:00",
                          "date_until": null
                        }
                      ],
                      "price": {
                        "amount": "101.0",
                        "amount_without_discount": "101.0",
                        "currency": "USD"
                      },
                      "promotions": [],
                      "sku": "com.xsolla.shotgun_raider_1",
                      "type": "virtual_good",
                      "virtual_item_type": "non_renewing_subscription",
                      "virtual_prices": [
                        {
                          "amount": 100,
                          "amount_without_discount": 100,
                          "description": "description",
                          "image_url": "http://image.png",
                          "is_default": true,
                          "name": "SHOTGUN FOR TRUE RAIDERS",
                          "sku": "com.xsolla.vc_2",
                          "type": "virtual_currency"
                        },
                        {
                          "amount": 200,
                          "amount_without_discount": 200,
                          "description": "description",
                          "image_url": "http://image.png",
                          "is_default": false,
                          "name": "SHOTGUN FOR TRUE RAIDERS",
                          "sku": "com.xsolla.vc_3",
                          "type": "virtual_currency"
                        }
                      ],
                      "vp_rewards": []
                    },
                    {
                      "attributes": [],
                      "can_be_bought": true,
                      "description": "description",
                      "groups": [],
                      "image_url": "http://image.png",
                      "is_free": true,
                      "limits": null,
                      "name": "SHOTGUN FOR TRUE RAIDERS",
                      "periods": [],
                      "price": null,
                      "promotions": [],
                      "sku": "com.xsolla.shotgun_raider_2",
                      "type": "virtual_good",
                      "virtual_item_type": "non_renewing_subscription",
                      "virtual_prices": [],
                      "vp_rewards": []
                    }
                  ]
                }
              }
            },
            "schema": {
              "$ref": "#/components/schemas/Upsell_item-list"
            }
          }
        },
        "description": "Liste des objets de vente incitative reçue avec succès."
      },
      "Upsell-404-item-not-found": {
        "content": {
          "application/json": {
            "examples": {
              "response": {
                "value": {
                  "errorCode": 9901,
                  "errorMessage": "[0401-4001]: Items weren't found: sku1, sku2",
                  "statusCode": 404
                }
              }
            },
            "schema": {
              "properties": {
                "errorCode": {
                  "example": 4001,
                  "type": "integer"
                },
                "errorMessage": {
                  "example": "[0401-4001]: Items weren't found: sku1, sku2",
                  "type": "string"
                },
                "statusCode": {
                  "example": 404,
                  "type": "integer"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "Objet non trouvé."
      },
      "Upsell-422-invalid-request": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Upsell-422-invalid-request"
            }
          }
        },
        "description": "Demande non valide."
      },
      "sellable-item-by-sku_404": {
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "errorCode": {
                  "example": 4001,
                  "type": "integer"
                },
                "errorMessage": {
                  "example": "[0401-4001]: Item with sku = 'electric_shiel' not found",
                  "type": "string"
                },
                "statusCode": {
                  "example": 404,
                  "type": "integer"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "Objet non trouvé. Assurez-vous que les paramètres `project_id` et `sku` sont corrects."
      }
    },
    "schemas": {
      "422-invalid-request": {
        "properties": {
          "errorCode": {
            "description": "Code d'erreur.",
            "example": 1102,
            "type": "number"
          },
          "errorMessage": {
            "description": "Message d'erreur lisible.",
            "example": "[0401-1102]: Unprocessable Entity. The property `external_id` is required",
            "type": "string"
          },
          "statusCode": {
            "description": "Code d'état de la réponse.",
            "example": 422,
            "type": "number"
          },
          "transactionId": {
            "description": "ID unique de la demande.",
            "example": "da145238620011eb8e24fe6913ff226a",
            "type": "string"
          }
        },
        "type": "object"
      },
      "422-rc-vp-invalid-request": {
        "properties": {
          "errorCode": {
            "example": 1102,
            "type": "integer"
          },
          "errorMessage": {
            "example": "[0401-1102]: Unprocessable Entity. The property `property_name` is required",
            "type": "string"
          },
          "statusCode": {
            "example": 422,
            "type": "integer"
          },
          "transactionId": {
            "example": "x-x-x-x-transactionId-mock-x-x-x",
            "type": "string"
          }
        },
        "type": "object"
      },
      "Can_be_bought": {
        "description": "Si `true`, l'utilisateur peut acheter l'objet.",
        "example": true,
        "type": "boolean"
      },
      "Catalog_item_limits": {
        "description": "Limites d'objets.",
        "properties": {
          "per_item": {
            "description": "Informations sur les limites pour un objet.",
            "properties": {
              "available": {
                "description": "Nombre d'objets restants que tous les utilisateurs peuvent acheter.",
                "example": 3,
                "type": "integer"
              },
              "total": {
                "description": "Nombre maximal d'objets que tous les utilisateurs peuvent acheter.",
                "example": 5,
                "type": "integer"
              }
            },
            "type": [
              "object",
              "null"
            ]
          },
          "per_user": {
            "description": "Limites d'objets pour un utilisateur.",
            "properties": {
              "available": {
                "description": "Nombre d'objets restants que l'utilisateur actuel peut acheter.",
                "example": 3,
                "type": "integer"
              },
              "limit_exceeded_visibility": {
                "$ref": "#/components/schemas/limit_exceeded_visibility"
              },
              "recurrent_schedule": {
                "$ref": "#/components/schemas/catalog_recurrent_schedule_client_response"
              },
              "total": {
                "description": "Nombre maximal d'objets qu'un utilisateur unique peut acheter.",
                "example": 5,
                "type": "integer"
              }
            },
            "type": [
              "object",
              "null"
            ]
          }
        },
        "type": [
          "object",
          "null"
        ]
      },
      "Catalog_item_promotions": {
        "description": "Promotions appliquées à des objets spécifiques du panier. Le tableau est renvoyé dans les cas suivants :\n\n* Une promotion par réduction est configurée pour un objet spécifique.\n\n* Un code promo avec le paramètre **Discount on selected items** est appliqué.\n\nSi aucune promotion de ce type n'est appliquée, un tableau vide est renvoyé.",
        "items": {
          "properties": {
            "bonus": {
              "items": {
                "properties": {
                  "bundle_type": {
                    "description": "Type de lot bonus. Disponible uniquement pour le type d'objet `bundle`.",
                    "enum": [
                      "standard",
                      "virtual_currency_package"
                    ],
                    "type": "string"
                  },
                  "image_url": {
                    "description": "URL de l'image de l'objet bonus. Non disponible pour le type d'objet bonus `physical_good`.",
                    "type": "string"
                  },
                  "name": {
                    "description": "Nom de l'objet bonus. Non disponible pour le type d'objet bonus `physical_good`.",
                    "type": "string"
                  },
                  "quantity": {
                    "type": "integer"
                  },
                  "sku": {
                    "type": "string"
                  },
                  "type": {
                    "description": "Type d'objet bonus.",
                    "enum": [
                      "virtual_good",
                      "virtual_currency",
                      "bundle",
                      "physical_good",
                      "game_key",
                      "nft"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            },
            "date_end": {
              "format": "date-time",
              "type": [
                "string",
                "null"
              ]
            },
            "date_start": {
              "format": "date-time",
              "type": [
                "string",
                "null"
              ]
            },
            "discount": {
              "properties": {
                "percent": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "value": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "type": [
                "object",
                "null"
              ]
            },
            "limits": {
              "properties": {
                "per_user": {
                  "properties": {
                    "available": {
                      "type": "integer"
                    },
                    "total": {
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            },
            "name": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "Code-limit-promo-code": {
        "properties": {
          "code": {
            "$ref": "#/components/schemas/Promotions_coupon_code"
          },
          "per_code": {
            "properties": {
              "available": {
                "description": "Nombre restant de fois qu'un code promo peut être utilisé.",
                "type": "integer"
              },
              "reserved": {
                "description": "Nombre de fois qu'un code promo est réservé.",
                "type": "integer"
              },
              "total": {
                "description": "Nombre maximum de fois qu'un code promo peut être utilisé.",
                "type": "integer"
              },
              "used": {
                "description": "Nombre de fois qu'un code promo est utilisé.",
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "Common_admin-image_url": {
        "description": "URL de l'image.",
        "example": "https://image.example.com",
        "type": "string"
      },
      "Coupon_rewards": {
        "properties": {
          "bonus": {
            "items": {
              "$ref": "#/components/schemas/Promotions_200-coupon-bonus-reward"
            },
            "type": "array"
          },
          "is_selectable": {
            "description": "Si `true`, l'utilisateur doit choisir le bonus avant d'échanger un coupon.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "Pagination_has-more": {
        "description": "Utilisé pour indiquer qu'il y a plus de pages.",
        "example": true,
        "type": "boolean"
      },
      "Promo_code_rewards": {
        "properties": {
          "bonus": {
            "items": {
              "$ref": "#/components/schemas/Promotions_200-promo-code-bonus-reward"
            },
            "type": "array"
          },
          "discount": {
            "$ref": "#/components/schemas/Promotions_200-coupon-discount-reward"
          },
          "discounted_items": {
            "$ref": "#/components/schemas/Promotions_discounted_items"
          },
          "is_selectable": {
            "description": "Si `true`, l'utilisateur doit choisir le bonus avant d'échanger un code promo.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "Promo_code_rewards_verify": {
        "properties": {
          "bonus": {
            "items": {
              "$ref": "#/components/schemas/Promotions_200-promo-code-bonus-reward"
            },
            "type": "array"
          },
          "discount": {
            "$ref": "#/components/schemas/Promotions_200-coupon-discount-reward"
          },
          "discounted_items": {
            "$ref": "#/components/schemas/Promotions_discounted_items_verify"
          },
          "is_selectable": {
            "description": "Si `true`, l'utilisateur doit choisir le bonus avant d'échanger un code promo.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "Promotions_200-coupon-bonus-reward": {
        "properties": {
          "item": {
            "properties": {
              "bundle_type": {
                "description": "Type de lot. Renvoyé si le type d'objet est un lot.",
                "enum": [
                  "standard",
                  "virtual_currency_package"
                ],
                "type": "string"
              },
              "content": {
                "type": "array"
              },
              "description": {
                "description": "Description de l'objet.",
                "example": "Game description",
                "type": [
                  "string",
                  "null"
                ]
              },
              "image_url": {
                "description": "URL de l'image.",
                "example": "https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png",
                "type": [
                  "string",
                  "null"
                ]
              },
              "name": {
                "description": "Nom de l'objet.",
                "example": {
                  "en": "Game name"
                },
                "type": "object"
              },
              "sku": {
                "description": "ID unique de l'objet. L'UGS ne peut comprendre que des caractères alphanumériques latins minuscules et majuscules, des points, des tirets et des traits bas.",
                "example": "game_01",
                "type": "string"
              },
              "type": {
                "description": "Type d'objet : `virtual_good`/`virtual_currency`/`bundle`/`physical_good`/`unit`.",
                "example": "unit",
                "type": "string"
              },
              "unit_items": {
                "description": "Si l'objet est de type unit, il inclut tous les objets dans l'unité. Dans la plupart des cas, l'utilisateur doit en choisir un comme bonus de coupon.",
                "items": {
                  "properties": {
                    "drm_name": {
                      "description": "Nom du DRM.",
                      "example": "Steam",
                      "type": "string"
                    },
                    "drm_sku": {
                      "description": "ID unique du DRM. L'UGS ne peut comprendre que des caractères alphanumériques latins minuscules et majuscules, des points, des tirets et des traits bas.",
                      "example": "steam",
                      "type": "string"
                    },
                    "is_free": {
                      "type": "boolean"
                    },
                    "name": {
                      "description": "Nom de l'objet.",
                      "example": "Game name",
                      "type": "string"
                    },
                    "sku": {
                      "description": "ID unique de l'objet. L'UGS ne peut comprendre que des caractères alphanumériques latins minuscules et majuscules, des points, des tirets et des traits bas.",
                      "example": "game_01",
                      "type": "string"
                    },
                    "type": {
                      "description": "Type d'objet : `game_key`.",
                      "example": "game_key",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "quantity": {
            "default": 1,
            "description": "Quantité de l'objet.",
            "type": "number"
          }
        },
        "type": "object"
      },
      "Promotions_200-coupon-discount-reward": {
        "description": "Pourcentage de la remise.\nLe prix du panier sera réduit d'une valeur calculée à l'aide de ce pourcentage et arrondie à 2 décimales.",
        "properties": {
          "percent": {
            "example": "10.00",
            "type": "string"
          }
        },
        "type": [
          "object",
          "null"
        ]
      },
      "Promotions_200-get-bonus-promotion-model": {
        "properties": {
          "attribute_conditions": {
            "$ref": "#/components/schemas/promotion_user-attribute_conditions_model-get"
          },
          "bonus": {
            "items": {
              "description": "Liste des objets qui seront ajoutés à l'achat de l'utilisateur en tant que bonus.",
              "properties": {
                "quantity": {
                  "default": 1,
                  "description": "Quantité de l'objet.",
                  "type": "number"
                },
                "sku": {
                  "default": "elven_shield",
                  "description": "UGS de l'objet.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "condition": {
            "description": "Ensemble d'objets devant être inclus dans l'achat pour l'application d'une promotion. Si ce paramètre est défini sur `null`, la promotion s'applique à tous les achats effectués dans au sein du projet.",
            "items": {
              "properties": {
                "sku": {
                  "default": "elven_sword",
                  "description": "UGS de l'objet.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "excluded_promotions": {
            "$ref": "#/components/schemas/excluded_promotions"
          },
          "id": {
            "description": "ID de la promotion. Identifiant unique de la promotion au sein du projet.",
            "type": "integer"
          },
          "is_enabled": {
            "default": true,
            "type": "boolean"
          },
          "limits": {
            "$ref": "#/components/schemas/Promotions_promotion_limits_response"
          },
          "name": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Nom de la promotion. Doit comprendre des paires clé/valeur\noù la clé est une région au format \"^[a-z]{2}-[A-Z]{2}$\", la valeur est une chaîne.",
            "example": {
              "de-DE": "Sommersaison Bonus",
              "en-US": "Summer season bonus"
            },
            "type": "object"
          },
          "price_conditions": {
            "$ref": "#/components/schemas/price_conditions_bonus"
          },
          "promotion_periods": {
            "$ref": "#/components/schemas/promotion_periods"
          }
        },
        "type": "object"
      },
      "Promotions_200-get-promocode-promotion-model": {
        "properties": {
          "attribute_conditions": {
            "$ref": "#/components/schemas/promotion_user-attribute_conditions_model-get"
          },
          "bonus": {
            "$ref": "#/components/schemas/Promotions_coupon_bonus"
          },
          "discount": {
            "example": {
              "discount": {
                "percent": "10.99"
              }
            },
            "properties": {
              "percent": {
                "$ref": "#/components/schemas/Promotions_promotion_discount_percent"
              }
            },
            "type": [
              "object",
              "null"
            ]
          },
          "discounted_items": {
            "$ref": "#/components/schemas/Promotions_discounted_items"
          },
          "excluded_promotions": {
            "$ref": "#/components/schemas/excluded_promotions"
          },
          "external_id": {
            "$ref": "#/components/schemas/Promotions_coupon-external_id"
          },
          "is_enabled": {
            "$ref": "#/components/schemas/Promotions_coupon-is_enabled"
          },
          "item_price_conditions": {
            "$ref": "#/components/schemas/item_price_conditions_promocode"
          },
          "name": {
            "$ref": "#/components/schemas/Promotions_coupon_name"
          },
          "price_conditions": {
            "$ref": "#/components/schemas/price_conditions_promocode"
          },
          "promotion_periods": {
            "$ref": "#/components/schemas/promotion_periods"
          },
          "redeem_code_limit": {
            "$ref": "#/components/schemas/Promotions_redeem_code_limit"
          },
          "redeem_total_limit": {
            "$ref": "#/components/schemas/Promotions_coupon-redeem_total_limit"
          },
          "redeem_user_limit": {
            "$ref": "#/components/schemas/Promotions_coupon-redeem_user_limit"
          },
          "total_limit_state": {
            "$ref": "#/components/schemas/Promotions_promocode_total_limit_state"
          }
        },
        "type": "object"
      },
      "Promotions_200-get-promotion-model": {
        "properties": {
          "bonus": {
            "items": {
              "$ref": "#/components/schemas/Promotions_200-coupon-bonus-reward"
            },
            "type": "array"
          },
          "condition": {
            "$ref": "#/components/schemas/Promotions_promotion_condition"
          },
          "discount": {
            "example": {
              "discount": {
                "percent": "10.99"
              }
            },
            "properties": {
              "percent": {
                "$ref": "#/components/schemas/Promotions_promotion_discount_percent"
              }
            },
            "type": [
              "object",
              "null"
            ]
          },
          "id": {
            "$ref": "#/components/schemas/Promotions_promotion_id"
          },
          "is_enabled": {
            "$ref": "#/components/schemas/Promotions_coupon-is_enabled"
          },
          "limits": {
            "$ref": "#/components/schemas/Promotions_promotion_limits_response"
          },
          "name": {
            "$ref": "#/components/schemas/Promotions_coupon_name"
          },
          "promotion_periods": {
            "$ref": "#/components/schemas/promotion_periods"
          },
          "type": {
            "$ref": "#/components/schemas/Promotions_promotion_type"
          }
        },
        "type": "object"
      },
      "Promotions_200-get-unique-catalog-offer-promotion-model": {
        "properties": {
          "external_id": {
            "$ref": "#/components/schemas/Promotions_coupon-external_id"
          },
          "is_enabled": {
            "$ref": "#/components/schemas/Promotions_coupon-is_enabled"
          },
          "items": {
            "$ref": "#/components/schemas/Promotions_unique_catalog_offer_items"
          },
          "name": {
            "$ref": "#/components/schemas/Promotions_coupon_name"
          },
          "promotion_periods": {
            "$ref": "#/components/schemas/promotion_periods"
          },
          "redeem_code_limit": {
            "$ref": "#/components/schemas/Promotions_redeem_code_limit"
          },
          "redeem_total_limit": {
            "$ref": "#/components/schemas/Promotions_coupon-redeem_total_limit"
          },
          "redeem_user_limit": {
            "$ref": "#/components/schemas/Promotions_coupon-redeem_user_limit"
          },
          "total_limit_state": {
            "$ref": "#/components/schemas/Promotions_coupon_total_limit_state"
          }
        },
        "type": "object"
      },
      "Promotions_200-promo-code-bonus-reward": {
        "properties": {
          "item": {
            "properties": {
              "description": {
                "description": "Description de l'objet.",
                "example": "Game description",
                "type": "string"
              },
              "image_url": {
                "description": "URL de l'image.",
                "example": "https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png",
                "type": "string"
              },
              "name": {
                "description": "Nom de l'objet.",
                "example": "Game name",
                "type": "string"
              },
              "sku": {
                "description": "ID unique de l'objet. L'UGS ne peut comprendre que des caractères alphanumériques latins minuscules et majuscules, des points, des tirets et des traits bas.",
                "example": "game_01",
                "type": "string"
              },
              "type": {
                "description": "Type d'objet : `virtual_good`/`virtual_currency`/`bundle`/`physical_good`/`unit`.",
                "example": "unit",
                "type": "string"
              },
              "unit_items": {
                "description": "Si l'objet est de type unit, il inclut tous les objets dans l'unité. Dans la plupart des cas, l'utilisateur doit en choisir un comme bonus de code promo.",
                "items": {
                  "properties": {
                    "drm_name": {
                      "description": "Nom du DRM.",
                      "example": "Steam",
                      "type": "string"
                    },
                    "drm_sku": {
                      "description": "ID unique du DRM. L'UGS ne peut comprendre que des caractères alphanumériques latins minuscules et majuscules, des points, des tirets et des traits bas.",
                      "example": "steam",
                      "type": "string"
                    },
                    "is_free": {
                      "$ref": "#/components/schemas/value-is_free"
                    },
                    "name": {
                      "description": "Nom de l'objet.",
                      "example": "Game name",
                      "type": "string"
                    },
                    "sku": {
                      "description": "ID unique de l'objet. L'UGS ne peut comprendre que des caractères alphanumériques latins minuscules et majuscules, des points, des tirets et des traits bas.",
                      "example": "game_01",
                      "type": "string"
                    },
                    "type": {
                      "description": "Type d'objet : `game_key`.",
                      "example": "game_key",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "quantity": {
            "default": 1,
            "description": "Quantité de l'objet.",
            "type": "number"
          }
        },
        "type": "object"
      },
      "Promotions_422_limit_error": {
        "description": "La limite des échanges est atteinte.",
        "example": {
          "errorCode": 9804,
          "errorMessage": "[0401-9804]: You have reached the coupon redemption limit.",
          "statusCode": 422
        },
        "properties": {
          "errorCode": {
            "example": 9804,
            "type": "integer"
          },
          "errorMessage": {
            "example": "[0401-9804]: You have reached the coupon redemption limit.",
            "type": "string"
          },
          "statusCode": {
            "example": 422,
            "type": "integer"
          },
          "transactionId": {
            "example": "x-x-x-x-transactionId-mock-x-x-x",
            "type": "string"
          }
        },
        "type": "object"
      },
      "Promotions_422_reglock_error": {
        "description": "Le coupon n'est pas disponible dans la région de l'utilisateur.",
        "example": {
          "errorCode": 9804,
          "errorMessage": "[0401-9804]: You have reached the coupon redemption limit.",
          "statusCode": 422
        },
        "properties": {
          "errorCode": {
            "example": 9808,
            "type": "integer"
          },
          "errorMessage": {
            "example": "[0401-9808]: Coupon is not available in your region.",
            "type": "string"
          },
          "statusCode": {
            "example": 422,
            "type": "integer"
          },
          "transactionId": {
            "example": "x-x-x-x-transactionId-mock-x-x-x",
            "type": "string"
          }
        },
        "type": "object"
      },
      "Promotions_cart_item_discount": {
        "default": "10.00",
        "description": "Pourcentage de la remise.\n\nLe prix du panier sera réduit d'une valeur\ncalculée à l'aide de ce pourcentage et arrondie\nà 2 décimales.",
        "example": "10.00",
        "nullable": false,
        "type": "string"
      },
      "Promotions_coupon-external_id": {
        "default": "coupon_external_id",
        "description": "ID unique de la promotion. Le `external_id` ne peut comprendre que des caractères alphanumériques latins minuscules et majuscules, des points, des tirets et des traits bas.",
        "example": "coupon_external_id",
        "type": "string"
      },
      "Promotions_coupon-generate-count": {
        "example": 10,
        "maximum": 100000,
        "minimum": 1,
        "type": "integer"
      },
      "Promotions_coupon-is_enabled": {
        "default": true,
        "type": "boolean"
      },
      "Promotions_coupon-redeem_total_limit": {
        "default": 10,
        "description": "Limite le nombre total de coupons.",
        "example": 10,
        "type": [
          "integer",
          "null"
        ]
      },
      "Promotions_coupon-redeem_user_limit": {
        "default": 10,
        "description": "Limite le nombre total de coupons pouvant être échangés par un seul utilisateur.",
        "example": 10,
        "type": [
          "integer",
          "null"
        ]
      },
      "Promotions_coupon_bonus": {
        "items": {
          "description": "Liste des objets qui seront ajoutés à l'achat de l'utilisateur en tant que bonus.",
          "properties": {
            "quantity": {
              "default": 1,
              "description": "Quantité de l'objet.",
              "type": "number"
            },
            "sku": {
              "default": "elven_shield",
              "description": "UGS de l'objet.",
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": [
          "array",
          "null"
        ]
      },
      "Promotions_coupon_code": {
        "default": "WINTER2021",
        "description": "Code unique sensible à la casse. Comprend des lettres et des chiffres.",
        "example": "WINTER2021",
        "maxLength": 128,
        "minLength": 1,
        "pattern": "^[a-zA-Z0-9]+$",
        "type": "string"
      },
      "Promotions_coupon_date_end": {
        "default": "2020-04-15T18:16:00+05:00",
        "description": "Date de fin de la promotion. Peut prendre la valeur `null`. Si `date_end` est défini sur `null`, la promotion sera illimitée dans le temps.",
        "format": "date-time",
        "type": [
          "string",
          "null"
        ]
      },
      "Promotions_coupon_date_start": {
        "default": "2020-04-15T18:16:00+05:00",
        "description": "Date de début de la promotion.",
        "format": "date-time",
        "type": [
          "string",
          "null"
        ]
      },
      "Promotions_coupon_name": {
        "additionalProperties": {
          "type": "string"
        },
        "default": {
          "de-DE": "Gutscheintitel",
          "en-US": "Coupon title"
        },
        "description": "Nom de la promotion. Doit comprendre des paires clé/valeur\noù la clé est une région au format \"^[a-z]{2}-[A-Z]{2}$\", la valeur est une chaîne.",
        "example": {
          "de-DE": "Gutscheintitel",
          "en-US": "Coupon title"
        },
        "type": "object"
      },
      "Promotions_coupon_total_limit_state": {
        "description": "Limites pour chaque code de coupon unique.",
        "properties": {
          "available": {
            "description": "Nombre restant de fois qu'un coupon peut être utilisé.",
            "example": 3,
            "type": "integer"
          },
          "reserved": {
            "description": "Numéro réservé d'un coupon.",
            "example": 3,
            "type": "integer"
          },
          "used": {
            "description": "Nombre de fois qu'un coupon est utilisé.",
            "example": 5,
            "type": "integer"
          }
        },
        "type": [
          "object",
          "null"
        ]
      },
      "Promotions_discounted_items": {
        "description": "Liste des objets bénéficiant d'une remise grâce à un code promo.",
        "items": {
          "description": "Remise pour des objets spécifiques du panier.",
          "minItems": 1,
          "properties": {
            "discount": {
              "nullable": false,
              "properties": {
                "percent": {
                  "$ref": "#/components/schemas/Promotions_cart_item_discount"
                }
              },
              "required": [
                "percent"
              ],
              "type": "object"
            },
            "sku": {
              "default": "elven_shield",
              "description": "UGS de l'objet.",
              "type": "string"
            }
          },
          "required": [
            "sku",
            "discount"
          ],
          "type": "object"
        },
        "type": [
          "array",
          "null"
        ]
      },
      "Promotions_discounted_items_verify": {
        "description": "Liste des objets bénéficiant d'une remise grâce à un code promo.",
        "items": {
          "description": "Remise pour des objets spécifiques.",
          "properties": {
            "description": {
              "description": "Description de l'objet.",
              "example": "Game description",
              "type": "string"
            },
            "discount": {
              "nullable": false,
              "properties": {
                "percent": {
                  "$ref": "#/components/schemas/Promotions_cart_item_discount"
                }
              },
              "type": "object"
            },
            "image_url": {
              "description": "URL de l'image.",
              "example": "https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png",
              "type": "string"
            },
            "name": {
              "description": "Nom de l'objet.",
              "example": "Game name",
              "type": "string"
            },
            "sku": {
              "description": "ID unique de l'objet. L'UGS ne peut comprendre que des caractères alphanumériques latins minuscules et majuscules, des points, des tirets et des traits bas.",
              "example": "game_01",
              "type": "string"
            },
            "type": {
              "description": "Type d'objet : `virtual_good`/`virtual_currency`/`bundle`/`physical_good`/`unit`.",
              "example": "unit",
              "type": "string"
            },
            "unit_items": {
              "description": "Si l'objet est de type unit, il inclut tous les objets dans l'unité. Dans la plupart des cas, l'utilisateur doit en choisir un comme bonus de code promo.",
              "items": {
                "properties": {
                  "drm_name": {
                    "description": "Nom du DRM.",
                    "example": "Steam",
                    "type": "string"
                  },
                  "drm_sku": {
                    "description": "ID unique du DRM. L'UGS ne peut comprendre que des caractères alphanumériques latins minuscules et majuscules, des points, des tirets et des traits bas.",
                    "example": "steam",
                    "type": "string"
                  },
                  "name": {
                    "description": "Nom de l'objet.",
                    "example": "Game name",
                    "type": "string"
                  },
                  "sku": {
                    "description": "ID unique de l'objet. L'UGS ne peut comprendre que des caractères alphanumériques latins minuscules et majuscules, des points, des tirets et des traits bas.",
                    "example": "game_01",
                    "type": "string"
                  },
                  "type": {
                    "description": "Type d'objet : `game_key`.",
                    "example": "game_key",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "type": [
          "array",
          "null"
        ]
      },
      "Promotions_is_enabled": {
        "description": "Si la promotion est activée ou non.",
        "example": true,
        "type": "boolean"
      },
      "Promotions_name": {
        "additionalProperties": {
          "type": "string"
        },
        "default": {
          "de-DE": "Artikeltitel",
          "en-US": "Item title"
        },
        "description": "Nom de l'objet. Doit comprendre des paires clé/valeur\noù la clé est une région au format \"^[a-z]{2}-[A-Z]{2}$\", la valeur est une chaîne.",
        "example": {
          "de-DE": "Artikeltitel",
          "en-US": "Item title"
        },
        "type": "object"
      },
      "Promotions_promocode_total_limit_state": {
        "description": "Limites pour chaque code promo unique.",
        "properties": {
          "available": {
            "description": "Nombre restant de fois qu'un code promo peut être utilisé.",
            "example": 3,
            "type": "integer"
          },
          "reserved": {
            "description": "Numéro réservé d'un code promo.",
            "example": 3,
            "type": "integer"
          },
          "used": {
            "description": "Nombre de fois qu'un code promo est utilisé.",
            "example": 5,
            "type": "integer"
          }
        },
        "type": [
          "object",
          "null"
        ]
      },
      "Promotions_promotion_condition": {
        "items": {
          "description": "Liste des objets pour lesquels l'utilisateur a reçu un bonus.",
          "properties": {
            "item": {
              "properties": {
                "description": {
                  "description": "Description de l'objet.",
                  "example": "Game description",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "external_id": {
                  "description": "External ID de la promotion. Identifiant unique de la promotion au sein du projet.",
                  "maxLength": 255,
                  "minLength": 1,
                  "pattern": "^[-_.\\d\\w]+$",
                  "type": "string"
                },
                "image_url": {
                  "description": "URL de l'image.",
                  "example": "https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "is_enabled": {
                  "type": "boolean"
                },
                "name": {
                  "$ref": "#/components/schemas/Promotions_name"
                },
                "redeem_code_limit": {
                  "$ref": "#/components/schemas/Promotions_redeem_code_limit"
                },
                "redeem_total_limit": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "redeem_user_limit": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "sku": {
                  "$ref": "#/components/schemas/Promotions_sku"
                },
                "type": {
                  "$ref": "#/components/schemas/Promotions_type"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": [
          "array",
          "null"
        ]
      },
      "Promotions_promotion_discount_percent": {
        "default": "10.00",
        "description": "Pourcentage de la remise.\nLe prix du panier sera réduit d'une valeur calculée à l'aide de ce pourcentage et arrondie à 2 décimales.",
        "example": "10.00",
        "type": [
          "string",
          "null"
        ]
      },
      "Promotions_promotion_id": {
        "description": "ID de la promotion. Identifiant unique de la promotion au sein du projet.",
        "example": 1,
        "type": "integer"
      },
      "Promotions_promotion_limits": {
        "description": "Limites de la promotion.",
        "properties": {
          "per_user": {
            "description": "Limites de la promotion pour un utilisateur spécifique.",
            "type": [
              "integer",
              "null"
            ]
          },
          "recurrent_schedule": {
            "$ref": "#/components/schemas/promotion_recurrent_schedule_response"
          }
        },
        "type": "object"
      },
      "Promotions_promotion_limits_response": {
        "description": "Limites de la promotion.",
        "properties": {
          "per_item": {
            "description": "Limites globales d'objets.",
            "example": 10,
            "type": [
              "integer",
              "null"
            ]
          },
          "per_user": {
            "description": "Limites de la promotion pour un utilisateur spécifique.",
            "properties": {
              "total": {
                "description": "Nombre total d'objets qu'un utilisateur peut acheter. Définissez ce nombre dans le Compte éditeur ou utilisez les endpoints administrateur pour les entités de Store (objet contenant des limites).",
                "example": 5,
                "type": "integer"
              }
            },
            "type": [
              "object",
              "null"
            ]
          },
          "recurrent_schedule": {
            "$ref": "#/components/schemas/promotion_recurrent_schedule_response"
          }
        },
        "type": "object"
      },
      "Promotions_promotion_type": {
        "description": "Type de promotion.",
        "example": "item_discount",
        "type": "string"
      },
      "Promotions_redeem_code_limit": {
        "default": 10,
        "description": "Nombre d'échanges par code.",
        "example": 10,
        "type": [
          "integer",
          "null"
        ]
      },
      "Promotions_selected_unit_items": {
        "additionalProperties": {
          "type": "string"
        },
        "description": "Récompense sélectionnée par l'utilisateur.\nLa clé d'objet est l'UGS d'une unité et la valeur est l'UGS de l'un des objets de l'unité.",
        "example": {
          "game_1": "game_1_steam",
          "game_2": "game_2_playstation"
        },
        "type": "object"
      },
      "Promotions_sku": {
        "description": "ID unique de l'objet. L'UGS ne peut comprendre que des caractères alphanumériques latins minuscules et majuscules, des points, des tirets et des traits bas.",
        "example": "booster_mega_1",
        "type": "string"
      },
      "Promotions_type": {
        "description": "Type d'objet : `virtual_good`/`virtual_currency`/`bundle`/`physical_good`/`unit`.",
        "type": "string"
      },
      "Promotions_unique_catalog_offer_items": {
        "description": "Liste d'UGS des objets qui sont disponibles après avoir utilisé une offre unique du catalogue.",
        "items": {
          "$ref": "#/components/schemas/sku"
        },
        "type": "array"
      },
      "Upsell-422-invalid-request": {
        "properties": {
          "errorCode": {
            "example": 1102,
            "type": "integer"
          },
          "errorMessage": {
            "example": "[0401-1102]: Unprocessable entity. The property `is_enabled` is required",
            "type": "string"
          },
          "statusCode": {
            "example": 422,
            "type": "integer"
          },
          "transactionId": {
            "example": "x-x-x-x-transactionId-mock-x-x-x",
            "type": "string"
          }
        },
        "type": "object"
      },
      "Upsell-model": {
        "description": "Type de vente incitative.",
        "properties": {
          "is_enabled": {
            "$ref": "#/components/schemas/is_enabled"
          },
          "items": {
            "default": null,
            "description": "Tableau des UGS d'objets.",
            "example": [
              "game_sku"
            ],
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "type": {
            "enum": [
              "fixed_list"
            ],
            "example": true,
            "type": "string"
          }
        },
        "required": [
          "is_enabled",
          "type",
          "items"
        ],
        "type": "object"
      },
      "Upsell-model-not-fixed-list": {
        "description": "Type de vente incitative.",
        "properties": {
          "is_enabled": {
            "$ref": "#/components/schemas/is_enabled"
          },
          "items": {
            "default": null,
            "description": "Tableau vide des UGS d'objets",
            "example": [
              null
            ],
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "type": {
            "enum": [
              "most_sellable",
              "only_promotions"
            ],
            "example": true,
            "type": "string"
          }
        },
        "required": [
          "is_enabled",
          "type"
        ],
        "type": "object"
      },
      "Upsell_item": {
        "properties": {
          "attributes": {
            "$ref": "#/components/schemas/Virtual-Items-Currency_client-attributes"
          },
          "can_be_bought": {
            "$ref": "#/components/schemas/Can_be_bought"
          },
          "custom_attributes": {
            "$ref": "#/components/schemas/item-custom-attributes-response"
          },
          "description": {
            "description": "Description de l'objet.",
            "example": "Big Rocket - description",
            "type": "string"
          },
          "groups": {
            "$ref": "#/components/schemas/Virtual-Items-Currency_admin-groups-response"
          },
          "image_url": {
            "description": "URL de l'image.",
            "example": "https://popmedia.blob.core.windows.net/popyourself/male/outfit/male_armor_white_a-01.png",
            "type": "string"
          },
          "is_free": {
            "$ref": "#/components/schemas/value-is_free"
          },
          "limits": {
            "$ref": "#/components/schemas/Catalog_item_limits"
          },
          "name": {
            "description": "Nom de l'objet.",
            "example": "Big Rocket",
            "type": "string"
          },
          "periods": {
            "$ref": "#/components/schemas/item-periods-response"
          },
          "price": {
            "description": "Prix de l'objet.",
            "properties": {
              "amount": {
                "description": "Prix de l'objet avec remise.",
                "example": "100.99",
                "type": "string"
              },
              "amount_without_discount": {
                "description": "Prix de l'objet.",
                "example": "100.99",
                "type": "string"
              },
              "currency": {
                "description": "Devise du prix de l'article. Code à trois lettres selon [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217).",
                "example": "USD",
                "type": "string"
              }
            },
            "type": [
              "object",
              "null"
            ]
          },
          "promotions": {
            "$ref": "#/components/schemas/Catalog_item_promotions"
          },
          "sku": {
            "description": "ID unique de l'objet. L'UGS ne peut comprendre que des caractères alphanumériques latins minuscules et majuscules, des points, des tirets et des traits bas.",
            "example": "big_rocket",
            "type": "string"
          },
          "type": {
            "description": "Type d'objet : `virtual_good`/`virtual_currency`/`bundle`.",
            "example": "virtual_good",
            "type": "string"
          },
          "virtual_item_type": {
            "description": "Type of virtual item.\n\nPossible values:\n- `consumable` — An item that disappears from the inventory after use (e.g., ammo).\n- `non_consumable` — An item that stays in the inventory for an unlimited period of time.\n- `non_renewing_subscription` — Time-limited item that can represent access to services or content for a limited period of time.",
            "enum": [
              "consumable",
              "non_consumable",
              "non_renewing_subscription"
            ],
            "example": "non-consumable",
            "type": "string"
          },
          "virtual_prices": {
            "description": "Prix virtuels.",
            "items": {
              "description": "Prix virtuel.",
              "properties": {
                "amount": {
                  "description": "Prix de l'objet réduit en monnaie virtuelle.",
                  "example": 100,
                  "type": "integer"
                },
                "amount_without_discount": {
                  "description": "Prix de l'objet.",
                  "example": 200,
                  "type": "integer"
                },
                "description": {
                  "description": "Description de la monnaie virtuelle.",
                  "example": "Big Rocket - description",
                  "type": "string"
                },
                "image_url": {
                  "description": "Image de la monnaie virtuelle.",
                  "example": "http://image.png",
                  "type": "string"
                },
                "is_default": {
                  "description": "Indique si le prix est le prix par défaut de l'objet.",
                  "example": true,
                  "type": "boolean"
                },
                "name": {
                  "description": "Nom de la monnaie virtuelle.",
                  "example": "SHOTGUN FOR TRUE RAIDERS",
                  "type": "string"
                },
                "sku": {
                  "description": "UGS de la monnaie virtuelle.",
                  "example": "vc_test",
                  "type": "string"
                },
                "type": {
                  "description": "Type de monnaie virtuelle.",
                  "example": "virtual_currency",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "vp_rewards": {
            "$ref": "#/components/schemas/client-item-value-point-reward"
          }
        },
        "type": "object"
      },
      "Upsell_item-list": {
        "properties": {
          "has_more": {
            "$ref": "#/components/schemas/Pagination_has-more"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/Upsell_item"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "User-limit-coupon": {
        "properties": {
          "per_user": {
            "properties": {
              "available": {
                "description": "Nombre restant de fois qu'un utilisateur peut utiliser un coupon.",
                "example": 9,
                "type": "integer"
              },
              "total": {
                "description": "Nombre maximum de fois qu'un utilisateur peut utiliser un coupon.",
                "example": 10,
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "User-limit-promo-code": {
        "properties": {
          "per_user": {
            "properties": {
              "available": {
                "description": "Nombre restant de fois qu'un utilisateur peut utiliser un code promo.",
                "example": 9,
                "type": "integer"
              },
              "total": {
                "description": "Nombre maximum de fois qu'un utilisateur peut utiliser un code promo.",
                "example": 10,
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "User-limit-promotion": {
        "properties": {
          "per_user": {
            "properties": {
              "available": {
                "description": "Nombre restant de fois qu'un utilisateur peut utiliser une promotion.",
                "example": 9,
                "type": "integer"
              },
              "total": {
                "description": "Nombre maximum de fois qu'un utilisateur peut utiliser une promotion.",
                "example": 10,
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "User-limit_available": {
        "description": "Nombre restant d'objets ou d'utilisations de la promotion disponibles pour l'utilisateur dans la limite appliquée.",
        "minimum": 1,
        "type": "integer"
      },
      "User-limit_available_flexible": {
        "description": "Nombre restant d'objets ou d'utilisations de la promotion disponibles pour l'utilisateur dans la limite appliquée.",
        "minimum": 0,
        "type": "integer"
      },
      "User-limit_user": {
        "properties": {
          "user_external_id": {
            "$ref": "#/components/schemas/User-limit_user-external-id"
          }
        },
        "required": [
          "user_external_id"
        ],
        "type": "object"
      },
      "User-limit_user-external-id": {
        "description": "External ID de l'utilisateur",
        "minLength": 1,
        "pattern": "^\\S+$",
        "type": "string"
      },
      "User-limit_user_flexible": {
        "properties": {
          "user_external_id": {
            "$ref": "#/components/schemas/User-limit_user-external-id"
          }
        },
        "type": [
          "object",
          "null"
        ]
      },
      "Value-point-item-model": {
        "properties": {
          "can_delete": {
            "description": "Détermine si un point de valeur peut être supprimé. Si la valeur est `false`, le point de valeur ne peut être supprimé, car il est utilisé dans une ou plusieurs chaînes de récompenses. Pour le supprimer, vous devez d'abord [supprimer](https://developers.xsolla.com/fr/api/shop-builder/operation/admin-delete-reward-chain/) toutes les chaînes de récompenses qui le contiennent.\n\nSi la valeur est `true`, le point de valeur n'est utilisé dans aucune chaîne de récompenses et vous pouvez [le supprimer](https://developers.xsolla.com/fr/api/shop-builder/operation/admin-delete-value-point/).",
            "type": "boolean"
          },
          "description": {
            "$ref": "#/components/schemas/description-localization-object"
          },
          "image_url": {
            "type": "string"
          },
          "is_clan": {
            "$ref": "#/components/schemas/is_clan"
          },
          "is_enabled": {
            "type": "boolean"
          },
          "long_description": {
            "$ref": "#/components/schemas/long-description-localization-object"
          },
          "media_list": {
            "description": "Ressources supplémentaires de l'objet, telles que des captures d'écran, des vidéos de gameplay, etc.",
            "example": [
              {
                "type": "image",
                "url": "https://cdn3.xsolla.com/img/misc/images/71ab1e12126f2103e1868076f0acb21a.jpg"
              }
            ],
            "items": {
              "properties": {
                "type": {
                  "description": "Type de média : `image`/`video`.",
                  "enum": [
                    "image",
                    "video"
                  ],
                  "example": "image",
                  "type": "string"
                },
                "url": {
                  "description": "Fichier de ressources.",
                  "example": "https://cdn3.xsolla.com/img/misc/images/71ab1e12126f2103e1868076f0acb21a.jpg",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "name": {
            "$ref": "#/components/schemas/name-localization-object"
          },
          "order": {
            "description": "Définit l'ordre d'empilement.",
            "example": 1,
            "type": "integer"
          },
          "sku": {
            "description": "ID unique de l'objet. L'UGS ne peut comprendre que des caractères alphanumériques latins minuscules et majuscules, des points, des tirets et des traits bas.",
            "example": "booster_mega_1",
            "maxLength": 255,
            "minLength": 1,
            "pattern": "^[a-zA-Z0-9_\\-–.]*$",
            "type": "string"
          },
          "type": {
            "description": "Type d'objet.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "Value-points-item-model": {
        "properties": {
          "description": {
            "$ref": "#/components/schemas/description-localization-object"
          },
          "image_url": {
            "type": "string"
          },
          "is_clan": {
            "$ref": "#/components/schemas/is_clan"
          },
          "is_enabled": {
            "type": "boolean"
          },
          "long_description": {
            "$ref": "#/components/schemas/long-description-localization-object"
          },
          "media_list": {
            "description": "Ressources supplémentaires de l'objet, telles que des captures d'écran, des vidéos de gameplay, etc.",
            "example": [
              {
                "type": "image",
                "url": "https://cdn3.xsolla.com/img/misc/images/71ab1e12126f2103e1868076f0acb21a.jpg"
              }
            ],
            "items": {
              "properties": {
                "type": {
                  "description": "Type de média : `image`/`video`.",
                  "enum": [
                    "image",
                    "video"
                  ],
                  "example": "image",
                  "type": "string"
                },
                "url": {
                  "description": "Fichier de ressources.",
                  "example": "https://cdn3.xsolla.com/img/misc/images/71ab1e12126f2103e1868076f0acb21a.jpg",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "name": {
            "$ref": "#/components/schemas/name-localization-object"
          },
          "order": {
            "description": "Définit l'ordre d'empilement.",
            "example": 1,
            "type": "integer"
          },
          "sku": {
            "description": "ID unique de l'objet. L'UGS ne peut comprendre que des caractères alphanumériques latins minuscules et majuscules, des points, des tirets et des traits bas.",
            "example": "booster_mega_1",
            "maxLength": 255,
            "minLength": 1,
            "pattern": "^[a-zA-Z0-9_\\-–.]*$",
            "type": "string"
          },
          "type": {
            "description": "Type d'objet.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "Virtual-Items-Currency_admin-groups-response": {
        "default": [],
        "description": "Groupes auxquels l'objet appartient.",
        "example": [
          {
            "external_id": "horror",
            "name": {
              "en": "Horror"
            }
          }
        ],
        "items": {
          "properties": {
            "external_id": {
              "example": "horror",
              "type": "string"
            },
            "name": {
              "additionalProperties": {
                "type": "string"
              },
              "default": {
                "en": "Horror"
              },
              "description": "Nom de l'objet. Doit comprendre des paires clé/valeur\noù la clé est une région au format \"^[a-z]{2}\", la valeur est une chaîne.",
              "example": {
                "de": "Horror",
                "en": "Horror"
              },
              "type": "object"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "Virtual-Items-Currency_client-attributes": {
        "default": [],
        "description": "Liste des attributs et de leurs valeurs correspondantes pour l'objet. Peut être utilisée pour le filtrage du catalogue.",
        "example": {
          "value": {
            "external_id": "genre",
            "name": "Жанр",
            "values": [
              {
                "external_id": "genre_e3364991f92e751689a68b96598a5a5a84010b85",
                "value": "Casual"
              },
              {
                "external_id": "genre_eba07bfd0f982940773cba3744d97264dd58acd7",
                "value": "Strategy"
              },
              {
                "external_id": "genre_b8d0c6d8f0524c2b2d79ebb93aa3cd0e8b5199a8",
                "value": "Mobile"
              }
            ]
          }
        },
        "items": {
          "properties": {
            "external_id": {
              "$ref": "#/components/schemas/admin-attribute-external_id"
            },
            "name": {
              "additionalProperties": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "description": "Nom de l'attribut.",
              "example": "Genre",
              "type": "object"
            },
            "values": {
              "items": {
                "properties": {
                  "external_id": {
                    "$ref": "#/components/schemas/value-external_id"
                  },
                  "value": {
                    "description": "Valeur de l'attribut.",
                    "example": "Strategy",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "active_promotions_count": {
        "description": "Nombre de promotions actives.",
        "type": "integer"
      },
      "admin-attribute-external_id": {
        "description": "ID unique de l'attribut. Le `external_id` ne peut comprendre que des caractères alphanumériques latins minuscules et majuscules, des tirets et des traits bas.",
        "example": "attribute_1",
        "maxLength": 255,
        "minLength": 1,
        "pattern": "^[a-zA-Z0-9-_]+$",
        "type": "string"
      },
      "admin-calendar-hard-daily-chain-model": {
        "allOf": [
          {
            "$ref": "#/components/schemas/calendar-hard-daily-chain-base"
          },
          {
            "description": "Récompense quotidienne de type calendar_hard pour les réponses des administrateurs.",
            "properties": {
              "date_end": {
                "$ref": "#/components/schemas/daily_chain_date_end"
              },
              "description": {
                "$ref": "#/components/schemas/description-localization-object"
              },
              "id": {
                "$ref": "#/components/schemas/daily_chain_id"
              },
              "is_enabled": {
                "$ref": "#/components/schemas/is_enabled"
              },
              "name": {
                "$ref": "#/components/schemas/name-localization-object"
              },
              "number_of_steps": {
                "$ref": "#/components/schemas/daily_chain_number_of_step"
              },
              "order": {
                "$ref": "#/components/schemas/order"
              },
              "steps": {
                "items": {
                  "$ref": "#/components/schemas/admin-daily-chain-step-model"
                },
                "type": "array"
              }
            },
            "type": "object"
          }
        ]
      },
      "admin-calendar-hard-daily-chain-short-model": {
        "allOf": [
          {
            "$ref": "#/components/schemas/calendar-hard-daily-chain-base"
          },
          {
            "description": "Récompense quotidienne de `calendar_hard` (version courte).",
            "properties": {
              "date_end": {
                "$ref": "#/components/schemas/daily_chain_date_end"
              },
              "description": {
                "$ref": "#/components/schemas/description-localization-object"
              },
              "id": {
                "$ref": "#/components/schemas/daily_chain_id"
              },
              "is_enabled": {
                "$ref": "#/components/schemas/is_enabled"
              },
              "name": {
                "$ref": "#/components/schemas/name-localization-object"
              },
              "number_of_steps": {
                "$ref": "#/components/schemas/daily_chain_number_of_step"
              },
              "order": {
                "$ref": "#/components/schemas/order"
              }
            },
            "type": "object"
          }
        ]
      },
      "admin-daily-chain-item-model": {
        "properties": {
          "description": {
            "$ref": "#/components/schemas/long-description-localization-object"
          },
          "image_url": {
            "$ref": "#/components/schemas/image_url"
          },
          "item_id": {
            "$ref": "#/components/schemas/item_id"
          },
          "name": {
            "$ref": "#/components/schemas/two-letter-locale"
          },
          "quantity": {
            "description": "Nombre d'objets.",
            "example": 1,
            "minimum": 1,
            "type": "integer"
          },
          "sku": {
            "$ref": "#/components/schemas/sku"
          },
          "type": {
            "$ref": "#/components/schemas/item_type"
          }
        },
        "type": "object"
      },
      "admin-daily-chain-long-model": {
        "discriminator": {
          "mapping": {
            "calendar_hard": "#/components/schemas/admin-calendar-hard-daily-chain-model",
            "rolling_skippable": "#/components/schemas/admin-rolling-skippable-daily-chain-model",
            "rolling_unskippable": "#/components/schemas/admin-rolling-unskippable-daily-chain-model"
          },
          "propertyName": "type"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/admin-calendar-hard-daily-chain-model"
          },
          {
            "$ref": "#/components/schemas/admin-rolling-skippable-daily-chain-model"
          },
          {
            "$ref": "#/components/schemas/admin-rolling-unskippable-daily-chain-model"
          }
        ]
      },
      "admin-daily-chain-short-model": {
        "discriminator": {
          "mapping": {
            "calendar_hard": "#/components/schemas/admin-calendar-hard-daily-chain-short-model",
            "rolling_skippable": "#/components/schemas/admin-rolling-skippable-daily-chain-short-model",
            "rolling_unskippable": "#/components/schemas/admin-rolling-unskippable-daily-chain-short-model"
          },
          "propertyName": "type"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/admin-calendar-hard-daily-chain-short-model"
          },
          {
            "$ref": "#/components/schemas/admin-rolling-skippable-daily-chain-short-model"
          },
          {
            "$ref": "#/components/schemas/admin-rolling-unskippable-daily-chain-short-model"
          }
        ]
      },
      "admin-daily-chain-step-model": {
        "description": "Étape de récompense quotidienne.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/admin-daily-chain-item-model"
            },
            "type": "array"
          },
          "step_id": {
            "$ref": "#/components/schemas/daily_chain_step_id"
          },
          "step_number": {
            "$ref": "#/components/schemas/daily_chain_step_number"
          }
        },
        "type": "object"
      },
      "admin-get-reward-chain-item-basic-model": {
        "description": "Chaîne de récompenses.",
        "properties": {
          "attribute_conditions": {
            "$ref": "#/components/schemas/chain_user-attribute_conditions_model-get"
          },
          "description": {
            "$ref": "#/components/schemas/description-localization-object"
          },
          "image_url": {
            "$ref": "#/components/schemas/image_url"
          },
          "is_always_visible": {
            "$ref": "#/components/schemas/chain_is_always_visible"
          },
          "is_enabled": {
            "$ref": "#/components/schemas/is_enabled"
          },
          "is_reset_after_end": {
            "$ref": "#/components/schemas/is_reset_after_end"
          },
          "long_description": {
            "$ref": "#/components/schemas/long-description-localization-object"
          },
          "name": {
            "$ref": "#/components/schemas/name-localization-object"
          },
          "order": {
            "$ref": "#/components/schemas/order"
          },
          "periods": {
            "$ref": "#/components/schemas/periods"
          },
          "recurrent_schedule": {
            "$ref": "#/components/schemas/admin_recurrent_schedule"
          },
          "reward_chain_id": {
            "$ref": "#/components/schemas/reward_chain_id"
          },
          "value_point": {
            "properties": {
              "amount": {
                "$ref": "#/components/schemas/value-point-amount"
              },
              "description": {
                "$ref": "#/components/schemas/value-point-description"
              },
              "image_url": {
                "$ref": "#/components/schemas/Common_admin-image_url"
              },
              "is_clan": {
                "$ref": "#/components/schemas/is_clan"
              },
              "is_enabled": {
                "$ref": "#/components/schemas/is_enabled"
              },
              "long_description": {
                "$ref": "#/components/schemas/value-point-long-description"
              },
              "media_list": {
                "$ref": "#/components/schemas/media_list"
              },
              "name": {
                "$ref": "#/components/schemas/value-point-name"
              },
              "order": {
                "$ref": "#/components/schemas/order"
              },
              "sku": {
                "$ref": "#/components/schemas/value-point-sku"
              },
              "type": {
                "example": "value_point",
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "admin-get-reward-chain-item-clan-basic-model": {
        "allOf": [
          {
            "$ref": "#/components/schemas/admin-get-reward-chain-item-basic-model"
          },
          {
            "description": "Chaîne de récompense de clan.",
            "properties": {
              "clan_type": {
                "$ref": "#/components/schemas/clan_type"
              },
              "popup_header": {
                "$ref": "#/components/schemas/popup_header-two-letter-locale"
              },
              "popup_image_url": {
                "$ref": "#/components/schemas/popup_image_url"
              },
              "popup_instruction": {
                "$ref": "#/components/schemas/popup_instruction-two-letter-locale"
              },
              "value_point": {
                "description": "Point de valeur configuré pour une chaîne de récompenses de clan.",
                "properties": {
                  "amount": {
                    "$ref": "#/components/schemas/value-point-amount"
                  },
                  "description": {
                    "$ref": "#/components/schemas/value-point-description"
                  },
                  "image_url": {
                    "$ref": "#/components/schemas/Common_admin-image_url"
                  },
                  "is_clan": {
                    "$ref": "#/components/schemas/is_clan"
                  },
                  "is_enabled": {
                    "$ref": "#/components/schemas/is_enabled"
                  },
                  "long_description": {
                    "$ref": "#/components/schemas/value-point-long-description"
                  },
                  "media_list": {
                    "$ref": "#/components/schemas/media_list"
                  },
                  "name": {
                    "$ref": "#/components/schemas/value-point-name"
                  },
                  "order": {
                    "$ref": "#/components/schemas/order"
                  },
                  "sku": {
                    "$ref": "#/components/schemas/value-point-sku"
                  },
                  "type": {
                    "example": "value_point",
                    "type": "string"
                  }
                },
                "required": [
                  "sku"
                ],
                "type": "object"
              }
            },
            "type": "object"
          }
        ]
      },
      "admin-get-reward-chain-item-clan-full-model": {
        "allOf": [
          {
            "$ref": "#/components/schemas/admin-get-reward-chain-item-full-model"
          },
          {
            "description": "Chaîne de récompense de clan.",
            "properties": {
              "clan_type": {
                "$ref": "#/components/schemas/clan_type"
              },
              "popup_header": {
                "$ref": "#/components/schemas/popup_header-two-letter-locale"
              },
              "popup_image_url": {
                "$ref": "#/components/schemas/popup_image_url"
              },
              "popup_instruction": {
                "$ref": "#/components/schemas/popup_instruction-two-letter-locale"
              },
              "top_contributors": {
                "$ref": "#/components/schemas/top_contributors"
              },
              "value_point": {
                "description": "Point de valeur configuré pour une chaîne de récompenses de clan.",
                "properties": {
                  "description": {
                    "$ref": "#/components/schemas/description-localization-object"
                  },
                  "image_url": {
                    "$ref": "#/components/schemas/image_url"
                  },
                  "is_clan": {
                    "$ref": "#/components/schemas/is_clan"
                  },
                  "is_enabled": {
                    "$ref": "#/components/schemas/is_enabled"
                  },
                  "long_description": {
                    "$ref": "#/components/schemas/long-description-localization-object"
                  },
                  "media_list": {
                    "$ref": "#/components/schemas/media_list"
                  },
                  "name": {
                    "$ref": "#/components/schemas/name-localization-object"
                  },
                  "order": {
                    "$ref": "#/components/schemas/order"
                  },
                  "sku": {
                    "$ref": "#/components/schemas/sku"
                  },
                  "type": {
                    "type": "string"
                  }
                },
                "required": [
                  "sku"
                ],
                "type": "object"
              }
            },
            "type": "object"
          }
        ]
      },
      "admin-get-reward-chain-item-full-model": {
        "description": "Chaîne de récompenses.",
        "properties": {
          "attribute_conditions": {
            "$ref": "#/components/schemas/chain_user-attribute_conditions_model-get"
          },
          "description": {
            "$ref": "#/components/schemas/description-localization-object"
          },
          "image_url": {
            "$ref": "#/components/schemas/image_url"
          },
          "is_always_visible": {
            "$ref": "#/components/schemas/chain_is_always_visible"
          },
          "is_enabled": {
            "$ref": "#/components/schemas/is_enabled"
          },
          "is_reset_after_end": {
            "$ref": "#/components/schemas/is_reset_after_end"
          },
          "long_description": {
            "$ref": "#/components/schemas/long-description-localization-object"
          },
          "name": {
            "$ref": "#/components/schemas/name-localization-object"
          },
          "order": {
            "$ref": "#/components/schemas/order"
          },
          "periods": {
            "$ref": "#/components/schemas/periods"
          },
          "recurrent_schedule": {
            "$ref": "#/components/schemas/admin_recurrent_schedule"
          },
          "reward_chain_id": {
            "$ref": "#/components/schemas/reward_chain_id"
          },
          "steps": {
            "items": {
              "$ref": "#/components/schemas/reward_step_short"
            },
            "type": "array"
          },
          "value_point": {
            "properties": {
              "description": {
                "$ref": "#/components/schemas/description-localization-object"
              },
              "image_url": {
                "$ref": "#/components/schemas/image_url"
              },
              "is_clan": {
                "$ref": "#/components/schemas/is_clan"
              },
              "is_enabled": {
                "$ref": "#/components/schemas/is_enabled"
              },
              "long_description": {
                "$ref": "#/components/schemas/long-description-localization-object"
              },
              "media_list": {
                "$ref": "#/components/schemas/media_list"
              },
              "name": {
                "$ref": "#/components/schemas/name-localization-object"
              },
              "order": {
                "$ref": "#/components/schemas/order"
              },
              "sku": {
                "$ref": "#/components/schemas/sku"
              },
              "type": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "admin-item-value-point-reward": {
        "properties": {
          "amount": {
            "description": "Montant des points de valeur.",
            "type": "integer"
          },
          "image_url": {
            "$ref": "#/components/schemas/Common_admin-image_url"
          },
          "item_id": {
            "$ref": "#/components/schemas/item_id"
          },
          "name": {
            "$ref": "#/components/schemas/name-localization-object"
          },
          "sku": {
            "$ref": "#/components/schemas/sku"
          }
        },
        "type": "object"
      },
      "admin-offer-chain-item-model": {
        "properties": {
          "description": {
            "$ref": "#/components/schemas/description-localization-object"
          },
          "image_url": {
            "$ref": "#/components/schemas/image_url"
          },
          "is_free": {
            "$ref": "#/components/schemas/value-is_free"
          },
          "item_id": {
            "$ref": "#/components/schemas/item_id"
          },
          "name": {
            "$ref": "#/components/schemas/name-localization-object"
          },
          "order": {
            "$ref": "#/components/schemas/order"
          },
          "quantity": {
            "description": "Nombre d'objets.",
            "example": 1,
            "minimum": 1,
            "type": "integer"
          },
          "sku": {
            "$ref": "#/components/schemas/sku"
          },
          "type": {
            "$ref": "#/components/schemas/item_type"
          }
        },
        "type": "object"
      },
      "admin-offer-chain-long-model": {
        "description": "Chaine d'offres.",
        "properties": {
          "attribute_conditions": {
            "$ref": "#/components/schemas/chain_user-attribute_conditions_model-get"
          },
          "date_end": {
            "$ref": "#/components/schemas/offer_chain_date_end"
          },
          "date_start": {
            "$ref": "#/components/schemas/offer_chain_date_start"
          },
          "description": {
            "$ref": "#/components/schemas/description-localization-object"
          },
          "id": {
            "$ref": "#/components/schemas/offer_chain_id"
          },
          "is_always_visible": {
            "$ref": "#/components/schemas/chain_is_always_visible"
          },
          "is_enabled": {
            "$ref": "#/components/schemas/is_enabled"
          },
          "name": {
            "$ref": "#/components/schemas/name-localization-object"
          },
          "order": {
            "$ref": "#/components/schemas/order"
          },
          "recurrent_schedule": {
            "$ref": "#/components/schemas/offer_chain_recurrent_schedule"
          },
          "steps": {
            "items": {
              "$ref": "#/components/schemas/admin-offer-chain-step-model"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "admin-offer-chain-short-model": {
        "description": "Chaine d'offres.",
        "properties": {
          "attribute_conditions": {
            "$ref": "#/components/schemas/chain_user-attribute_conditions_model-get"
          },
          "date_end": {
            "$ref": "#/components/schemas/offer_chain_date_end"
          },
          "date_start": {
            "$ref": "#/components/schemas/offer_chain_date_start"
          },
          "description": {
            "$ref": "#/components/schemas/description-localization-object"
          },
          "id": {
            "$ref": "#/components/schemas/offer_chain_id"
          },
          "is_always_visible": {
            "$ref": "#/components/schemas/chain_is_always_visible"
          },
          "is_enabled": {
            "$ref": "#/components/schemas/is_enabled"
          },
          "name": {
            "$ref": "#/components/schemas/name-localization-object"
          },
          "order": {
            "$ref": "#/components/schemas/order"
          },
          "recurrent_schedule": {
            "$ref": "#/components/schemas/offer_chain_recurrent_schedule"
          }
        },
        "type": "object"
      },
      "admin-offer-chain-step-model": {
        "description": "Étape de la chaîne d'offres.",
        "properties": {
          "is_free": {
            "$ref": "#/components/schemas/offer_chain_is_free"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/admin-offer-chain-item-model"
            },
            "type": "array"
          },
          "step_id": {
            "$ref": "#/components/schemas/offer_chain_step_id"
          },
          "step_number": {
            "$ref": "#/components/schemas/offer_chain_step_number"
          },
          "step_price": {
            "$ref": "#/components/schemas/offer_chain_step_price"
          }
        },
        "type": "object"
      },
      "admin-promotions_200-get-coupon-promotion-model": {
        "properties": {
          "attribute_conditions": {
            "$ref": "#/components/schemas/promotion_user-attribute_conditions_model-get"
          },
          "bonus": {
            "$ref": "#/components/schemas/Promotions_coupon_bonus"
          },
          "external_id": {
            "$ref": "#/components/schemas/Promotions_coupon-external_id"
          },
          "is_enabled": {
            "$ref": "#/components/schemas/Promotions_coupon-is_enabled"
          },
          "name": {
            "$ref": "#/components/schemas/Promotions_coupon_name"
          },
          "promotion_periods": {
            "$ref": "#/components/schemas/promotion_periods"
          },
          "redeem_code_limit": {
            "$ref": "#/components/schemas/Promotions_redeem_code_limit"
          },
          "redeem_total_limit": {
            "$ref": "#/components/schemas/Promotions_coupon-redeem_total_limit"
          },
          "redeem_user_limit": {
            "$ref": "#/components/schemas/Promotions_coupon-redeem_user_limit"
          },
          "total_limit_state": {
            "$ref": "#/components/schemas/Promotions_coupon_total_limit_state"
          }
        },
        "type": "object"
      },
      "admin-promotions_200-get-redeemable-coupon-promotion-model": {
        "properties": {
          "bonus": {
            "$ref": "#/components/schemas/Promotions_coupon_bonus"
          },
          "discount": {
            "description": "Uniquement pour les codes promo.",
            "example": {
              "discount": {
                "percent": "10.99"
              }
            },
            "properties": {
              "percent": {
                "default": "10.00",
                "description": "Pourcentage de la remise.\nLe prix du panier sera réduit d'une valeur calculée à l'aide de ce pourcentage et arrondie à 2 décimales.",
                "example": "10.00",
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "type": [
              "object",
              "null"
            ]
          },
          "discounted_items": {
            "description": "Liste des objets bénéficiant d'une remise grâce à un code promo. Uniquement pour les codes promo.",
            "items": {
              "description": "Remise pour des objets spécifiques du panier.",
              "minItems": 1,
              "properties": {
                "discount": {
                  "nullable": false,
                  "properties": {
                    "percent": {
                      "$ref": "#/components/schemas/Promotions_cart_item_discount"
                    }
                  },
                  "required": [
                    "percent"
                  ],
                  "type": "object"
                },
                "sku": {
                  "default": "elven_shield",
                  "description": "UGS de l'objet.",
                  "type": "string"
                }
              },
              "required": [
                "sku",
                "discount"
              ],
              "type": "object"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "external_id": {
            "$ref": "#/components/schemas/Promotions_coupon-external_id"
          },
          "is_enabled": {
            "$ref": "#/components/schemas/Promotions_coupon-is_enabled"
          },
          "name": {
            "$ref": "#/components/schemas/Promotions_coupon_name"
          },
          "promotion_periods": {
            "$ref": "#/components/schemas/promotion_periods"
          },
          "redeem_code_limit": {
            "$ref": "#/components/schemas/Promotions_redeem_code_limit"
          },
          "redeem_total_limit": {
            "$ref": "#/components/schemas/Promotions_coupon-redeem_total_limit"
          },
          "redeem_user_limit": {
            "$ref": "#/components/schemas/Promotions_coupon-redeem_user_limit"
          },
          "total_limit_state": {
            "$ref": "#/components/schemas/Promotions_coupon_total_limit_state"
          }
        },
        "type": "object"
      },
      "admin-rolling-skippable-daily-chain-model": {
        "allOf": [
          {
            "$ref": "#/components/schemas/rolling-skippable-daily-chain-base"
          },
          {
            "description": "Récompense quotidienne de type rolling_skippable pour les réponses des administrateurs.",
            "properties": {
              "description": {
                "$ref": "#/components/schemas/description-localization-object"
              },
              "id": {
                "$ref": "#/components/schemas/daily_chain_id"
              },
              "is_enabled": {
                "$ref": "#/components/schemas/is_enabled"
              },
              "name": {
                "$ref": "#/components/schemas/name-localization-object"
              },
              "number_of_steps": {
                "$ref": "#/components/schemas/daily_chain_number_of_step"
              },
              "order": {
                "$ref": "#/components/schemas/order"
              },
              "steps": {
                "items": {
                  "$ref": "#/components/schemas/admin-daily-chain-step-model"
                },
                "type": "array"
              }
            },
            "type": "object"
          }
        ]
      },
      "admin-rolling-skippable-daily-chain-short-model": {
        "allOf": [
          {
            "$ref": "#/components/schemas/rolling-skippable-daily-chain-base"
          },
          {
            "description": "Récompense quotidienne de `rolling_skippable` (version courte).",
            "properties": {
              "description": {
                "$ref": "#/components/schemas/description-localization-object"
              },
              "id": {
                "$ref": "#/components/schemas/daily_chain_id"
              },
              "is_enabled": {
                "$ref": "#/components/schemas/is_enabled"
              },
              "name": {
                "$ref": "#/components/schemas/name-localization-object"
              },
              "number_of_steps": {
                "$ref": "#/components/schemas/daily_chain_number_of_step"
              },
              "order": {
                "$ref": "#/components/schemas/order"
              }
            },
            "type": "object"
          }
        ]
      },
      "admin-rolling-unskippable-daily-chain-model": {
        "allOf": [
          {
            "$ref": "#/components/schemas/rolling-unskippable-daily-chain-base"
          },
          {
            "description": "Récompense quotidienne de type `rolling_unskippable` pour les réponses des administrateurs.",
            "properties": {
              "description": {
                "$ref": "#/components/schemas/description-localization-object"
              },
              "id": {
                "$ref": "#/components/schemas/daily_chain_id"
              },
              "is_enabled": {
                "$ref": "#/components/schemas/is_enabled"
              },
              "name": {
                "$ref": "#/components/schemas/name-localization-object"
              },
              "number_of_steps": {
                "$ref": "#/components/schemas/daily_chain_number_of_step"
              },
              "order": {
                "$ref": "#/components/schemas/order"
              },
              "steps": {
                "items": {
                  "$ref": "#/components/schemas/admin-daily-chain-step-model"
                },
                "type": "array"
              }
            },
            "type": "object"
          }
        ]
      },
      "admin-rolling-unskippable-daily-chain-short-model": {
        "allOf": [
          {
            "$ref": "#/components/schemas/rolling-unskippable-daily-chain-base"
          },
          {
            "description": "Récompense quotidienne de `rolling_unskippable` (version courte).",
            "properties": {
              "description": {
                "$ref": "#/components/schemas/description-localization-object"
              },
              "id": {
                "$ref": "#/components/schemas/daily_chain_id"
              },
              "is_enabled": {
                "$ref": "#/components/schemas/is_enabled"
              },
              "name": {
                "$ref": "#/components/schemas/name-localization-object"
              },
              "number_of_steps": {
                "$ref": "#/components/schemas/daily_chain_number_of_step"
              },
              "order": {
                "$ref": "#/components/schemas/order"
              }
            },
            "type": "object"
          }
        ]
      },
      "admin_recurrent_schedule": {
        "description": "Période de réinitialisation récurrente de la chaîne de récompenses.",
        "oneOf": [
          {
            "description": "Réinitialisation hebdomadaire de la chaîne de récompenses.",
            "properties": {
              "day_of_week": {
                "$ref": "#/components/schemas/day_of_week"
              },
              "displayable_reset_next_date": {
                "$ref": "#/components/schemas/displayable_reset_next_date"
              },
              "displayable_reset_start_date": {
                "$ref": "#/components/schemas/displayable_reset_start_date"
              },
              "interval_type": {
                "$ref": "#/components/schemas/interval_type_weekly"
              },
              "reset_next_date": {
                "$ref": "#/components/schemas/reset_next_date"
              },
              "time": {
                "$ref": "#/components/schemas/time"
              }
            },
            "title": "interval_type = weekly",
            "type": "object"
          },
          {
            "description": "Réinitialisation mensuelle de la chaîne de récompenses.",
            "properties": {
              "day_of_month": {
                "$ref": "#/components/schemas/day_of_month"
              },
              "displayable_reset_next_date": {
                "$ref": "#/components/schemas/displayable_reset_next_date"
              },
              "displayable_reset_start_date": {
                "$ref": "#/components/schemas/displayable_reset_start_date"
              },
              "interval_type": {
                "$ref": "#/components/schemas/interval_type_monthly"
              },
              "reset_next_date": {
                "$ref": "#/components/schemas/reset_next_date"
              },
              "time": {
                "$ref": "#/components/schemas/time"
              }
            },
            "title": "interval_type = monthly",
            "type": "object"
          },
          {
            "description": "Réinitialisation de la chaîne de récompenses effectuée selon l'intervalle de temps spécifié, en heures.",
            "properties": {
              "displayable_reset_next_date": {
                "$ref": "#/components/schemas/displayable_reset_next_date"
              },
              "displayable_reset_start_date": {
                "$ref": "#/components/schemas/displayable_reset_start_date"
              },
              "hours_interval": {
                "$ref": "#/components/schemas/reward_chain_hours_interval"
              },
              "interval_type": {
                "$ref": "#/components/schemas/interval_type_hourly_rc"
              },
              "reset_next_date": {
                "$ref": "#/components/schemas/reset_next_date"
              },
              "time": {
                "$ref": "#/components/schemas/time"
              }
            },
            "title": "interval_type = horaire",
            "type": "object"
          }
        ],
        "type": [
          "object",
          "null"
        ]
      },
      "admin_value_points-create": {
        "properties": {
          "description": {
            "$ref": "#/components/schemas/description-localization-object"
          },
          "image_url": {
            "$ref": "#/components/schemas/Common_admin-image_url"
          },
          "is_clan": {
            "$ref": "#/components/schemas/is_clan"
          },
          "is_enabled": {
            "$ref": "#/components/schemas/is_enabled"
          },
          "long_description": {
            "$ref": "#/components/schemas/long-description-localization-object"
          },
          "media_list": {
            "$ref": "#/components/schemas/media_list"
          },
          "name": {
            "$ref": "#/components/schemas/name-localization-object"
          },
          "order": {
            "$ref": "#/components/schemas/order"
          },
          "sku": {
            "$ref": "#/components/schemas/sku"
          }
        },
        "required": [
          "sku",
          "name"
        ],
        "type": "object"
      },
      "bundle_type": {
        "description": "Type de lot. Renvoyé si le type d'objet est un lot.",
        "enum": [
          "standard",
          "virtual_currency_package",
          "partner_side_content"
        ],
        "type": "string"
      },
      "calendar-hard-daily-chain-base": {
        "description": "Propriétés de base pour les récompenses quotidiennes de type `calendar_hard`.",
        "properties": {
          "date_start": {
            "$ref": "#/components/schemas/calendar_hard_date_start"
          },
          "is_recurrent": {
            "$ref": "#/components/schemas/calendar_hard_is_recurrent"
          },
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/daily_chain_type"
              },
              {
                "enum": [
                  "calendar_hard"
                ]
              }
            ]
          }
        },
        "type": "object"
      },
      "calendar_hard_date_start": {
        "description": "Date de début de la récompense quotidienne.",
        "example": "2020-04-15T18:16:00+05:00",
        "format": "date-time",
        "type": "string"
      },
      "calendar_hard_is_recurrent": {
        "default": false,
        "description": "Détermine si la récompense quotidienne est récurrente. Si `true`, elle est automatiquement réinitialisée après la date de fin. Le calendrier suivant `start_date` et `end_date` est basé sur le nombre d'étapes de la récompense quotidienne et l'heure définie initialement sur `start_date`.",
        "example": true,
        "type": "boolean"
      },
      "catalog_recurrent_schedule_client_response": {
        "description": "Délai d'actualisation récurrent des limites d'un objet pour un utilisateur.",
        "oneOf": [
          {
            "description": "Type quotidien d'actualisation des limites pour l'utilisateur.",
            "properties": {
              "interval_type": {
                "description": "Type de délai d'actualisation récurrent.",
                "enum": [
                  "daily"
                ],
                "type": "string"
              },
              "reset_next_date": {
                "description": "Date et heure de la réinitialisation des limites (horodatage Unix).",
                "example": 1677553200,
                "type": "integer"
              }
            },
            "title": "interval_type = daily",
            "type": "object"
          },
          {
            "description": "Type hebdomadaire d'actualisation des limites pour l'utilisateur.",
            "properties": {
              "interval_type": {
                "description": "Type de délai d'actualisation récurrent.",
                "enum": [
                  "weekly"
                ],
                "type": "string"
              },
              "reset_next_date": {
                "description": "Date et heure de la réinitialisation des limites (horodatage Unix).",
                "example": 1677553200,
                "type": "integer"
              }
            },
            "title": "interval_type = weekly",
            "type": "object"
          },
          {
            "description": "Type mensuel d'actualisation des limites pour l'utilisateur.",
            "properties": {
              "interval_type": {
                "description": "Type de délai d'actualisation récurrent.",
                "enum": [
                  "monthly"
                ],
                "type": "string"
              },
              "reset_next_date": {
                "description": "Date et heure de la réinitialisation des limites (horodatage Unix).",
                "example": 1677553200,
                "type": "integer"
              }
            },
            "title": "interval_type = monthly",
            "type": "object"
          },
          {
            "description": "Réinitialisation des limites de l'utilisateur effectuée selon l'intervalle de temps spécifié, en heures.",
            "properties": {
              "interval_type": {
                "description": "Type de délai d'actualisation récurrent.",
                "enum": [
                  "hourly"
                ],
                "type": "string"
              },
              "reset_next_date": {
                "description": "Date et heure de la réinitialisation des limites (horodatage Unix).",
                "example": 1677553200,
                "type": "integer"
              }
            },
            "title": "interval_type = horaire",
            "type": "object"
          }
        ],
        "type": [
          "object",
          "null"
        ]
      },
      "chain_is_always_visible": {
        "default": true,
        "description": "Whether the chain is visible to all users. If `true`, the chain is always displayed, regardless of the user's authentication status or attributes.\n\nTo configure personalization, you need to pass `false`. The logic of the chain display will be the following:\n  * If `false` is passed and the visibility conditions are specified in the `attribute_conditions` array, the chain is considered personalized and is displayed only to authorized users who meet the specified conditions.\n  * If `false` is passed and the `attribute_conditions` array isn’t passed or is empty, the chain is displayed to unauthorized users, as well as in cases when no matching chain is found for the authorized user.",
        "example": true,
        "type": "boolean"
      },
      "chain_user-attribute_conditions_model-get": {
        "allOf": [
          {
            "$ref": "#/components/schemas/user-attribute_conditions_model-get"
          },
          {
            "description": "Conditions de validation des attributs utilisateur.\nDéterminez la disponibilité de la chaîne selon la correspondance des attributs utilisateur avec l'ensemble des conditions définies."
          }
        ]
      },
      "chain_user-attribute_conditions_model-post": {
        "allOf": [
          {
            "$ref": "#/components/schemas/user-attribute_conditions_model-post"
          },
          {
            "description": "Conditions de validation des attributs utilisateur.\nDéterminez la disponibilité de la chaîne selon la correspondance des attributs utilisateur avec l'ensemble des conditions définies."
          }
        ]
      },
      "clan_type": {
        "description": "Type de clan.",
        "enum": [
          "clan",
          "guild",
          "faction",
          "community",
          "team",
          "squad",
          "alliance",
          "association",
          "coalition",
          "union",
          "group",
          "civilizations",
          "dynasty",
          "order",
          "league",
          "brotherhood",
          "kingdom",
          "organization",
          "house",
          "empire",
          "tribe",
          "cartel",
          null
        ],
        "type": [
          "string",
          "null"
        ]
      },
      "client-attributes": {
        "default": [],
        "description": "Liste des attributs et de leurs valeurs correspondantes pour l'objet. Peut être utilisée pour le filtrage du catalogue.",
        "example": {
          "value": {
            "external_id": "genre",
            "name": "Жанр",
            "values": [
              {
                "external_id": "genre_e3364991f92e751689a68b96598a5a5a84010b85",
                "value": "Casual"
              },
              {
                "external_id": "genre_eba07bfd0f982940773cba3744d97264dd58acd7",
                "value": "Strategy"
              },
              {
                "external_id": "genre_b8d0c6d8f0524c2b2d79ebb93aa3cd0e8b5199a8",
                "value": "Mobile"
              }
            ]
          }
        },
        "items": {
          "properties": {
            "external_id": {
              "$ref": "#/components/schemas/admin-attribute-external_id"
            },
            "name": {
              "description": "Nom de l'attribut.",
              "example": "Genre",
              "type": "string"
            },
            "values": {
              "items": {
                "properties": {
                  "external_id": {
                    "$ref": "#/components/schemas/value-external_id"
                  },
                  "value": {
                    "description": "Valeur de l'attribut.",
                    "example": "Strategy",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "client-calendar-hard-daily-chain-model": {
        "allOf": [
          {
            "$ref": "#/components/schemas/calendar-hard-daily-chain-base"
          },
          {
            "description": "Récompense quotidienne de type calendar_hard pour les réponses des administrateurs.",
            "properties": {
              "date_end": {
                "$ref": "#/components/schemas/daily_chain_date_end"
              },
              "description": {
                "description": "Description de la récompense quotidienne.",
                "example": "Major weekly quest",
                "type": [
                  "string",
                  "null"
                ]
              },
              "id": {
                "description": "ID de récompense quotidienne.",
                "example": 9,
                "type": "integer"
              },
              "name": {
                "description": "Nom de la récompense quotidienne.",
                "example": "Weekly quest",
                "type": "string"
              },
              "order": {
                "$ref": "#/components/schemas/order"
              },
              "steps": {
                "items": {
                  "$ref": "#/components/schemas/client-daily-chain-step-model"
                },
                "type": "array"
              }
            },
            "type": "object"
          }
        ]
      },
      "client-daily-chain-item-model": {
        "properties": {
          "bundle_type": {
            "enum": [
              "standard",
              "virtual_currency_package"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "content": {
            "items": {
              "$ref": "#/components/schemas/client-daily-chain-item-model"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "description": {
            "description": "Description de l'objet.",
            "type": [
              "string",
              "null"
            ]
          },
          "image_url": {
            "$ref": "#/components/schemas/image_url"
          },
          "is_free": {
            "$ref": "#/components/schemas/value-is_free"
          },
          "item_id": {
            "$ref": "#/components/schemas/item_id"
          },
          "name": {
            "description": "Nom de l'objet.",
            "type": "string"
          },
          "quantity": {
            "description": "Nombre d'objets.",
            "example": 1,
            "minimum": 1,
            "type": "integer"
          },
          "sku": {
            "$ref": "#/components/schemas/sku"
          },
          "type": {
            "$ref": "#/components/schemas/item_type"
          }
        },
        "type": "object"
      },
      "client-daily-chain-model": {
        "discriminator": {
          "mapping": {
            "calendar_hard": "#/components/schemas/client-calendar-hard-daily-chain-model",
            "rolling_skippable": "#/components/schemas/client-rolling-skippable-daily-chain-model",
            "rolling_unskippable": "#/components/schemas/client-rolling-unskippable-daily-chain-model"
          },
          "propertyName": "type"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/client-calendar-hard-daily-chain-model"
          },
          {
            "$ref": "#/components/schemas/client-rolling-skippable-daily-chain-model"
          },
          {
            "$ref": "#/components/schemas/client-rolling-unskippable-daily-chain-model"
          }
        ]
      },
      "client-daily-chain-step-model": {
        "description": "Étape de récompense quotidienne.",
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/client-daily-chain-item-model"
            },
            "type": "array"
          },
          "status": {
            "description": "Defines the step's current claim status.\n\nPossible values:\n- `claimed` — The step has already been claimed.\n- `claimable` — The step may be claimed.\n- `blocked` — The step cannot be claimed: \n  - For unauthorized users: All steps are blocked. \n  - For `calendar_hard`: The step was not claimed and is now in the past. \n  - For `rolling_skippable`: The step is locked until the previous step is claimed.\n- `claim_in_future` — The step was not claimed and the step is in the future.",
            "enum": [
              "claimed",
              "claimable",
              "blocked",
              "claim_in_future"
            ],
            "example": "claimed",
            "type": "string"
          },
          "step_number": {
            "$ref": "#/components/schemas/daily_chain_step_number"
          },
          "unlocked_date": {
            "description": "Horodatage Unix (en secondes) auquel l'étape sera déverrouillée.",
            "format": "int64",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "client-item-value-point-reward": {
        "description": "Récompense en points de valeur pour l'objet.",
        "items": {
          "properties": {
            "amount": {
              "$ref": "#/components/schemas/value-point-amount"
            },
            "image_url": {
              "$ref": "#/components/schemas/Common_admin-image_url"
            },
            "is_clan": {
              "$ref": "#/components/schemas/is_clan"
            },
            "item_id": {
              "$ref": "#/components/schemas/item_id"
            },
            "name": {
              "$ref": "#/components/schemas/value-point-name"
            },
            "sku": {
              "$ref": "#/components/schemas/value-point-sku"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "client-offer-chain-item-model": {
        "properties": {
          "bundle_type": {
            "enum": [
              "standard",
              "virtual_currency_package"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "content": {
            "items": {
              "$ref": "#/components/schemas/client-offer-chain-item-model"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "description": {
            "description": "Description de l'objet.",
            "type": [
              "string",
              "null"
            ]
          },
          "image_url": {
            "$ref": "#/components/schemas/image_url"
          },
          "is_free": {
            "$ref": "#/components/schemas/value-is_free"
          },
          "item_id": {
            "$ref": "#/components/schemas/item_id"
          },
          "name": {
            "description": "Nom de l'objet.",
            "type": "string"
          },
          "order": {
            "$ref": "#/components/schemas/order"
          },
          "quantity": {
            "description": "Nombre d'objets.",
            "example": 1,
            "minimum": 1,
            "type": "integer"
          },
          "sku": {
            "$ref": "#/components/schemas/sku"
          },
          "type": {
            "$ref": "#/components/schemas/item_type"
          }
        },
        "type": "object"
      },
      "client-offer-chain-model": {
        "description": "Chaine d'offres.",
        "properties": {
          "date_end": {
            "$ref": "#/components/schemas/offer_chain_date_end"
          },
          "date_start": {
            "$ref": "#/components/schemas/offer_chain_date_start"
          },
          "description": {
            "description": "Description de la chaîne d'offres.",
            "example": "Major weekly quest",
            "type": [
              "string",
              "null"
            ]
          },
          "id": {
            "description": "ID de la chaîne d'offres.",
            "example": 9,
            "type": "integer"
          },
          "name": {
            "description": "Nom de la chaîne d'offres.",
            "example": "Weekly quest",
            "type": "string"
          },
          "next_step_number": {
            "description": "Numéro de l'étape suivante de la chaîne d'offres. `null` si la chaîne d'offres est terminée.",
            "example": 1,
            "type": [
              "integer",
              "null"
            ]
          },
          "order": {
            "$ref": "#/components/schemas/order"
          },
          "recurrent_schedule": {
            "$ref": "#/components/schemas/offer_chain_recurrent_schedule_client_side"
          },
          "steps": {
            "items": {
              "$ref": "#/components/schemas/client-offer-chain-step-model"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "client-offer-chain-step-model": {
        "description": "Étape de la chaîne d'offres.",
        "properties": {
          "is_claimed": {
            "description": "Indique si la récompense d'étape est réclamée ou achetée.",
            "example": false,
            "type": "boolean"
          },
          "is_free": {
            "$ref": "#/components/schemas/offer_chain_is_free"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/client-offer-chain-item-model"
            },
            "type": "array"
          },
          "step_loyalty_rewards": {
            "items": {
              "properties": {
                "amount": {
                  "description": "Quantité de points de fidélité.",
                  "example": 1,
                  "type": "integer"
                },
                "description": {
                  "description": "Description des points de fidélité.",
                  "example": "First Loyalty Point Desc",
                  "type": "string"
                },
                "image_url": {
                  "$ref": "#/components/schemas/image_url"
                },
                "name": {
                  "description": "Nom des points de fidélité.",
                  "example": "First Loyalty Point",
                  "type": "string"
                },
                "sku": {
                  "description": "UGS des points de fidélité.",
                  "example": "0c745ef0-4243-46e1-aa90-54dee07da622",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "step_number": {
            "$ref": "#/components/schemas/offer_chain_step_number"
          },
          "step_price": {
            "$ref": "#/components/schemas/offer_chain_step_price"
          },
          "step_vp_rewards": {
            "description": "Tableau des points de valeur du système de récompenses, accordés en tant que récompense.",
            "items": {
              "properties": {
                "amount": {
                  "$ref": "#/components/schemas/value-point-amount"
                },
                "image_url": {
                  "$ref": "#/components/schemas/Common_admin-image_url"
                },
                "is_clan": {
                  "$ref": "#/components/schemas/is_clan"
                },
                "item_id": {
                  "$ref": "#/components/schemas/item_id"
                },
                "name": {
                  "$ref": "#/components/schemas/value-point-name"
                },
                "sku": {
                  "$ref": "#/components/schemas/value-point-sku"
                }
              },
              "type": "object"
            },
            "type": [
              "array",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "client-reward-chain-item-model": {
        "properties": {
          "clan_type": {
            "$ref": "#/components/schemas/clan_type"
          },
          "date_end": {
            "$ref": "#/components/schemas/date_end"
          },
          "date_start": {
            "$ref": "#/components/schemas/date_start"
          },
          "description": {
            "description": "Description de la chaîne de récompenses.",
            "example": "Major weekly quest",
            "type": [
              "string",
              "null"
            ]
          },
          "image_url": {
            "$ref": "#/components/schemas/image_url"
          },
          "long_description": {
            "description": "Description détaillée de la chaîne de récompenses.",
            "example": "You can get a lot of additional items just by shopping during the week",
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "description": "Nom de la chaîne de récompenses.",
            "example": "Weekly quest",
            "type": "string"
          },
          "order": {
            "$ref": "#/components/schemas/order"
          },
          "popup_header": {
            "$ref": "#/components/schemas/popup_header-two-letter-locale"
          },
          "popup_image_url": {
            "$ref": "#/components/schemas/popup_image_url"
          },
          "popup_instruction": {
            "$ref": "#/components/schemas/popup_instruction-two-letter-locale"
          },
          "recurrent_schedule": {
            "$ref": "#/components/schemas/recurrent_schedule_client_side"
          },
          "reward_chain_id": {
            "description": "ID de la chaîne de récompenses.",
            "example": 9,
            "type": "integer"
          },
          "steps": {
            "items": {
              "description": "Étape de la chaîne de récompenses.",
              "properties": {
                "image_url": {
                  "$ref": "#/components/schemas/Common_admin-image_url"
                },
                "is_claimed": {
                  "description": "Détermine si la récompense d'étape est réclamée.",
                  "example": false,
                  "type": "boolean"
                },
                "name": {
                  "description": "Nom de l'étape.",
                  "example": "Level 1",
                  "type": "string"
                },
                "price": {
                  "properties": {
                    "amount": {
                      "description": "Nombre de points de valeur qu'un utilisateur réclame pour l'étape.",
                      "example": 100,
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "reward": {
                  "items": {
                    "properties": {
                      "description": {
                        "description": "Description de l'objet.",
                        "example": "Super box with items",
                        "type": "string"
                      },
                      "image_url": {
                        "$ref": "#/components/schemas/Common_admin-image_url"
                      },
                      "name": {
                        "description": "Nom de l'objet.",
                        "example": "Super box",
                        "type": "string"
                      },
                      "quantity": {
                        "description": "Quantité de l'objet.",
                        "example": 2,
                        "type": "integer"
                      },
                      "sku": {
                        "$ref": "#/components/schemas/sku"
                      },
                      "type": {
                        "description": "Type d'objet.",
                        "example": "bundle",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "step_id": {
                  "description": "ID de l'étape.",
                  "example": 10,
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "top_contributors": {
            "items": {
              "$ref": "#/components/schemas/top_contributors"
            },
            "type": "array"
          },
          "value_point": {
            "properties": {
              "amount": {
                "$ref": "#/components/schemas/value-point-amount"
              },
              "description": {
                "$ref": "#/components/schemas/value-point-description"
              },
              "image_url": {
                "$ref": "#/components/schemas/Common_admin-image_url"
              },
              "is_clan": {
                "$ref": "#/components/schemas/is_clan"
              },
              "long_description": {
                "$ref": "#/components/schemas/value-point-long-description"
              },
              "name": {
                "$ref": "#/components/schemas/value-point-name"
              },
              "sku": {
                "$ref": "#/components/schemas/value-point-sku"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "client-rolling-skippable-daily-chain-model": {
        "allOf": [
          {
            "$ref": "#/components/schemas/rolling-skippable-daily-chain-base"
          },
          {
            "description": "Récompense quotidienne de type rolling_skippable pour les réponses des administrateurs.",
            "properties": {
              "description": {
                "description": "Description de la récompense quotidienne.",
                "example": "Major weekly quest",
                "type": [
                  "string",
                  "null"
                ]
              },
              "id": {
                "description": "ID de récompense quotidienne.",
                "example": 9,
                "type": "integer"
              },
              "name": {
                "description": "Nom de la récompense quotidienne.",
                "example": "Weekly quest",
                "type": "string"
              },
              "order": {
                "$ref": "#/components/schemas/order"
              },
              "steps": {
                "items": {
                  "$ref": "#/components/schemas/client-daily-chain-step-model"
                },
                "type": "array"
              }
            },
            "type": "object"
          }
        ]
      },
      "client-rolling-unskippable-daily-chain-model": {
        "allOf": [
          {
            "$ref": "#/components/schemas/rolling-unskippable-daily-chain-base"
          },
          {
            "description": "Récompense quotidienne de type `rolling_unskippable` pour les réponses des administrateurs.",
            "properties": {
              "description": {
                "description": "Description de la récompense quotidienne.",
                "example": "Major weekly quest",
                "type": [
                  "string",
                  "null"
                ]
              },
              "id": {
                "description": "ID de récompense quotidienne.",
                "example": 9,
                "type": "integer"
              },
              "name": {
                "description": "Nom de la récompense quotidienne.",
                "example": "Weekly quest",
                "type": "string"
              },
              "order": {
                "$ref": "#/components/schemas/order"
              },
              "steps": {
                "items": {
                  "$ref": "#/components/schemas/client-daily-chain-step-model"
                },
                "type": "array"
              }
            },
            "type": "object"
          }
        ]
      },
      "create-calendar-hard-daily-chain-model": {
        "allOf": [
          {
            "$ref": "#/components/schemas/calendar-hard-daily-chain-base"
          },
          {
            "description": "Récompense quotidienne de type `calendar_hard`.",
            "properties": {
              "description": {
                "$ref": "#/components/schemas/description-localization-object"
              },
              "is_enabled": {
                "$ref": "#/components/schemas/is_enabled"
              },
              "name": {
                "$ref": "#/components/schemas/name-localization-object"
              },
              "order": {
                "$ref": "#/components/schemas/order"
              },
              "steps": {
                "items": {
                  "$ref": "#/components/schemas/create-daily-chain-step-model"
                },
                "type": "array"
              }
            },
            "required": [
              "name",
              "date_start",
              "steps",
              "is_enabled",
              "type"
            ],
            "type": "object"
          }
        ]
      },
      "create-clan-reward-chain-model": {
        "allOf": [
          {
            "$ref": "#/components/schemas/create-reward-chain-model"
          },
          {
            "description": "Chaîne de récompense de clan.",
            "properties": {
              "clan_type": {
                "$ref": "#/components/schemas/clan_type"
              },
              "popup_header": {
                "$ref": "#/components/schemas/popup_header-two-letter-locale"
              },
              "popup_image_url": {
                "$ref": "#/components/schemas/popup_image_url"
              },
              "popup_instruction": {
                "$ref": "#/components/schemas/popup_instruction-two-letter-locale"
              },
              "value_point": {
                "description": "Point de valeur configuré pour une chaîne de récompenses de clan.",
                "properties": {
                  "sku": {
                    "$ref": "#/components/schemas/sku"
                  }
                },
                "required": [
                  "sku"
                ],
                "type": "object"
              }
            },
            "required": [
              "name",
              "value_point",
              "periods",
              "steps",
              "is_enabled",
              "popup_header",
              "popup_instruction"
            ],
            "type": "object"
          }
        ]
      },
      "create-daily-chain-step-model": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/modify-daily-chain-item-model"
            },
            "minItems": 1,
            "type": "array"
          },
          "step_number": {
            "$ref": "#/components/schemas/daily_chain_step_number"
          }
        },
        "required": [
          "step_number",
          "items"
        ],
        "type": "object"
      },
      "create-offer-chain-model": {
        "description": "Chaine d'offres.",
        "properties": {
          "attribute_conditions": {
            "$ref": "#/components/schemas/chain_user-attribute_conditions_model-post"
          },
          "date_end": {
            "$ref": "#/components/schemas/offer_chain_date_end"
          },
          "date_start": {
            "$ref": "#/components/schemas/offer_chain_date_start"
          },
          "description": {
            "$ref": "#/components/schemas/description-localization-object"
          },
          "is_always_visible": {
            "$ref": "#/components/schemas/chain_is_always_visible"
          },
          "is_enabled": {
            "$ref": "#/components/schemas/is_enabled"
          },
          "name": {
            "$ref": "#/components/schemas/name-localization-object"
          },
          "order": {
            "$ref": "#/components/schemas/order"
          },
          "recurrent_schedule": {
            "$ref": "#/components/schemas/offer_chain_recurrent_schedule_create_update"
          },
          "steps": {
            "items": {
              "$ref": "#/components/schemas/create-offer-chain-step-model"
            },
            "type": "array"
          }
        },
        "required": [
          "name",
          "date_start",
          "steps",
          "is_enabled"
        ],
        "type": "object"
      },
      "create-offer-chain-step-model": {
        "properties": {
          "is_free": {
            "$ref": "#/components/schemas/offer_chain_is_free"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/modify-offer-chain-item-model"
            },
            "minItems": 1,
            "type": "array"
          },
          "step_number": {
            "$ref": "#/components/schemas/offer_chain_step_number"
          }
        },
        "required": [
          "step_number",
          "is_free",
          "items"
        ],
        "type": "object"
      },
      "create-reward-chain-model": {
        "description": "Chaîne de récompenses.",
        "properties": {
          "attribute_conditions": {
            "$ref": "#/components/schemas/chain_user-attribute_conditions_model-post"
          },
          "description": {
            "$ref": "#/components/schemas/description-localization-object"
          },
          "image_url": {
            "$ref": "#/components/schemas/image_url"
          },
          "is_always_visible": {
            "$ref": "#/components/schemas/chain_is_always_visible"
          },
          "is_enabled": {
            "$ref": "#/components/schemas/is_enabled"
          },
          "is_reset_after_end": {
            "$ref": "#/components/schemas/is_reset_after_end"
          },
          "long_description": {
            "$ref": "#/components/schemas/long-description-localization-object"
          },
          "name": {
            "$ref": "#/components/schemas/name-localization-object"
          },
          "order": {
            "$ref": "#/components/schemas/order"
          },
          "periods": {
            "$ref": "#/components/schemas/periods"
          },
          "recurrent_schedule": {
            "$ref": "#/components/schemas/recurrent_schedule_create_update"
          },
          "steps": {
            "items": {
              "$ref": "#/components/schemas/create_reward_step"
            },
            "type": "array"
          },
          "value_point": {
            "properties": {
              "sku": {
                "$ref": "#/components/schemas/sku"
              }
            },
            "required": [
              "sku"
            ],
            "type": "object"
          }
        },
        "required": [
          "name",
          "value_point",
          "periods",
          "steps",
          "is_enabled"
        ],
        "type": "object"
      },
      "create-rolling-skippable-daily-chain-model": {
        "allOf": [
          {
            "$ref": "#/components/schemas/rolling-skippable-daily-chain-base"
          },
          {
            "description": "Récompense quotidienne de type `rolling_skippable`.",
            "properties": {
              "description": {
                "$ref": "#/components/schemas/description-localization-object"
              },
              "is_enabled": {
                "$ref": "#/components/schemas/is_enabled"
              },
              "name": {
                "$ref": "#/components/schemas/name-localization-object"
              },
              "order": {
                "$ref": "#/components/schemas/order"
              },
              "steps": {
                "items": {
                  "$ref": "#/components/schemas/create-daily-chain-step-model"
                },
                "type": "array"
              }
            },
            "required": [
              "name",
              "date_start",
              "steps",
              "is_enabled",
              "type"
            ],
            "type": "object"
          }
        ]
      },
      "create-rolling-unskippable-daily-chain-model": {
        "allOf": [
          {
            "$ref": "#/components/schemas/rolling-unskippable-daily-chain-base"
          },
          {
            "description": "Récompense quotidienne de type `rolling_unskippable`.",
            "properties": {
              "description": {
                "$ref": "#/components/schemas/description-localization-object"
              },
              "is_enabled": {
                "$ref": "#/components/schemas/is_enabled"
              },
              "name": {
                "$ref": "#/components/schemas/name-localization-object"
              },
              "order": {
                "$ref": "#/components/schemas/order"
              },
              "steps": {
                "items": {
                  "$ref": "#/components/schemas/create-daily-chain-step-model"
                },
                "type": "array"
              }
            },
            "required": [
              "name",
              "date_start",
              "steps",
              "is_enabled",
              "type"
            ],
            "type": "object"
          }
        ]
      },
      "create_reward_step": {
        "description": "Étape de la chaîne de récompenses.",
        "properties": {
          "image_url": {
            "$ref": "#/components/schemas/image_url"
          },
          "name": {
            "$ref": "#/components/schemas/name-localization-object"
          },
          "price": {
            "$ref": "#/components/schemas/reward_step_price"
          },
          "reward": {
            "items": {
              "properties": {
                "attribute_conditions": {
                  "$ref": "#/components/schemas/reward-chain-step-reward_user-attribute_conditions_model-post"
                },
                "quantity": {
                  "$ref": "#/components/schemas/reward_item_quantity"
                },
                "sku": {
                  "$ref": "#/components/schemas/sku"
                }
              },
              "required": [
                "sku",
                "quantity"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "name",
          "price",
          "reward"
        ],
        "type": "object"
      },
      "daily-chain-error-model": {
        "properties": {
          "errorCode": {
            "example": 1102,
            "type": "integer"
          },
          "errorMessage": {
            "example": "[0401-1102]: Unprocessable Entity. The property `property_name` is required",
            "type": "string"
          },
          "errorMessageExtended": {
            "type": [
              "object",
              "null"
            ]
          },
          "statusCode": {
            "example": 422,
            "type": "integer"
          },
          "transactionId": {
            "example": "x-x-x-x-transactionId-mock-x-x-x",
            "type": "string"
          }
        },
        "type": "object"
      },
      "daily_chain_date_end": {
        "description": "Date de fin de la récompense quotidienne. Peut être `null`. Si le type est `calendar_hard`, cette date est automatiquement définie selon le nombre d'étapes ajoutées, et vous pouvez donc la laisser à `null`.",
        "example": "2020-04-15T18:16:00+05:00",
        "format": "date-time",
        "type": [
          "string",
          "null"
        ]
      },
      "daily_chain_id": {
        "description": "ID unique de la récompense quotidienne.",
        "example": 9,
        "type": "integer"
      },
      "daily_chain_number_of_step": {
        "description": "Il s'agit du nombre d'étapes configurées dans la récompense quotidienne. Chaque étape correspond à un jour de la récompense.",
        "example": 3,
        "type": "integer"
      },
      "daily_chain_step_id": {
        "description": "ID unique de l'étape de récompense quotidienne",
        "example": 10,
        "minimum": 1,
        "type": [
          "integer",
          "null"
        ]
      },
      "daily_chain_step_number": {
        "description": "Numéro de l'étape.",
        "example": 2,
        "minimum": 1,
        "nullable": false,
        "type": "integer"
      },
      "daily_chain_type": {
        "description": "Daily reward type that determines when users can claim rewards.\n\nPossible values:\n- `calendar_hard` — Unlocks the next step reward every 24 hours. Any unclaimed step rewards are permanently lost once\nthe next step reward becomes available.\n- `rolling_skippable` — Unlocks the next step reward every 24 hours based on `date_start`. Progression is sequential:\na new reward will not unlock until the previous one has been claimed. If a user skips one or more days, they continue\nfrom where they left off; missed days do not grant multiple rewards.\n- `rolling_unskippable` — Unlocks the next step reward every 24 hours based on `date_start`. Progression is\nsequential: a new reward will not unlock until the previous one has been claimed. However, if a user skips a day,\ntheir progress is reset, and they must start again from the first step.",
        "enum": [
          "calendar_hard",
          "rolling_skippable",
          "rolling_unskippable"
        ],
        "type": "string"
      },
      "daily_chain_update_step_id": {
        "description": "ID unique de l'étape de la récompense quotidienne. Indiquez-le lors de la mise à jour pour conserver la progression de l'utilisateur pour cette étape.",
        "example": 10,
        "minimum": 1,
        "type": [
          "integer",
          "null"
        ]
      },
      "daily_rolling_chain_date_start": {
        "description": "Date et heure de début de la récompense quotidienne, définissant également le moment de réinitialisation quotidienne à partir duquel les utilisateurs peuvent la réclamer.",
        "example": "2020-04-15T18:16:00+05:00",
        "format": "date-time",
        "type": "string"
      },
      "date_end": {
        "description": "Date de fin de la promotion de chaîne de récompenses. Peut prendre la valeur `null`. Si `date_end` est défini sur `null`, la chaîne de récompenses sera illimitée dans le temps.",
        "example": "2020-04-15T18:16:00+05:00",
        "format": "date-time",
        "type": [
          "string",
          "null"
        ]
      },
      "date_start": {
        "description": "Date de début de la chaîne de récompenses.",
        "example": "2020-04-15T18:16:00+05:00",
        "format": "date-time",
        "type": "string"
      },
      "day_of_month": {
        "description": "Jour du mois où la chaîne de récompenses est réinitialisée. Si le nombre de jours du mois est inférieur au nombre ordinal du jour spécifié, la réinitialisation a lieu le dernier jour du mois.",
        "maximum": 31,
        "minimum": 1,
        "type": "integer"
      },
      "day_of_week": {
        "description": "Jour de la semaine où la chaîne de récompense est réinitialisée, où `1` est le lundi et `7`, le dimanche.",
        "maximum": 7,
        "minimum": 1,
        "type": "integer"
      },
      "description-localization-object": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/two-letter-locale"
          },
          {
            "$ref": "#/components/schemas/five-letter-locale"
          }
        ],
        "description": "Conteneur objet contenant les localisations de la description de l'objet (item). Il accepte deux formats de codes de langue : les codes à deux lettres minuscules (comme `en`) et les codes régionaux à cinq caractères (comme `en-US`). Les deux formats sont valides en entrée, mais les réponses utilisent toujours le format à deux lettres. Si les deux variantes sont fournies pour une même langue (par exemple, `en` et `en-US`), seule la dernière est conservée. Consultez la [documentation](/fr/doc/shop-builder/references/supported-languages/) pour la liste complète des langues prises en charge.",
        "type": [
          "object",
          "null"
        ]
      },
      "displayable_reset_next_date": {
        "description": "Date et heure calculées auxquelles la chaîne de récompenses sera réinitialisée la prochaine fois <a href=\"https://en.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">(ISO 8601)</a>. <br><br> Par exemple, la réinitialisation de la chaîne de récompenses est prévue chaque mois à partir du 1er mars 2024 à 01:00 de Kuala Lumpur. La date et l'heure de la prochaine remise à zéro de la chaîne de récompenses est le 1er avril 2024 à 01:00 de Kuala Lumpur, soit `2024-04-01T01:00:00+08:00` dans le format <a href=\"https://en.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a>. <br><br> Example: `2024-04-01T01:00:00+08:00`",
        "format": "date-time",
        "type": "string"
      },
      "displayable_reset_start_date": {
        "description": "Date et heure de la première réinitialisation de la chaîne de récompenses. <br><br> Par exemple, la date et l'heure de la première réinitialisation de la chaîne de récompenses sont le 1er mars 2024 à 01:00 de Kuala Lumpur, ou `2024-03-01T01:00:00+08:00` dans le format <a href=\"https://en.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a>. <br><br> Example: `2024-03-01T01:00:00+08:00`",
        "format": "date-time",
        "type": "string"
      },
      "drm_name": {
        "description": "Nom du DRM de la clé de jeu.",
        "example": "Steam",
        "type": "string"
      },
      "drm_sku": {
        "description": "ID unique du DRM.",
        "example": "steam",
        "type": "string"
      },
      "excluded_promotions": {
        "description": "Liste des ID de promotion à exclure lors de l'application de cette promotion. <br>Example: `[12, 789]`",
        "example": [
          12,
          789
        ],
        "items": {
          "type": "integer"
        },
        "type": "array"
      },
      "five-letter-locale": {
        "description": "Codes régionaux à cinq caractères.",
        "properties": {
          "ar-AE": {
            "description": "Arabe",
            "type": [
              "string",
              "null"
            ]
          },
          "bg-BG": {
            "description": "Bulgare",
            "type": [
              "string",
              "null"
            ]
          },
          "cs-CZ": {
            "description": "Tchèque",
            "type": [
              "string",
              "null"
            ]
          },
          "de-DE": {
            "description": "Allemand",
            "type": [
              "string",
              "null"
            ]
          },
          "en-US": {
            "description": "Anglais",
            "type": [
              "string",
              "null"
            ]
          },
          "es-ES": {
            "description": "Espagnol (Espagne)",
            "type": [
              "string",
              "null"
            ]
          },
          "fr-FR": {
            "description": "Français",
            "type": [
              "string",
              "null"
            ]
          },
          "he-IL": {
            "description": "Hébreu",
            "type": [
              "string",
              "null"
            ]
          },
          "id-ID": {
            "description": "Indonésien",
            "type": [
              "string",
              "null"
            ]
          },
          "it-IT": {
            "description": "Italien",
            "type": [
              "string",
              "null"
            ]
          },
          "ja-JP": {
            "description": "Japonais",
            "type": [
              "string",
              "null"
            ]
          },
          "km-KH": {
            "description": "Khmer",
            "type": [
              "string",
              "null"
            ]
          },
          "ko-KR": {
            "description": "Coréen",
            "type": [
              "string",
              "null"
            ]
          },
          "lo-LA": {
            "description": "Laotien",
            "type": [
              "string",
              "null"
            ]
          },
          "my-MM": {
            "description": "Birman",
            "type": [
              "string",
              "null"
            ]
          },
          "ne-NP": {
            "description": "Népalais",
            "type": [
              "string",
              "null"
            ]
          },
          "ph-PH": {
            "description": "Philippin",
            "type": [
              "string",
              "null"
            ]
          },
          "pl-PL": {
            "description": "Polonais",
            "type": [
              "string",
              "null"
            ]
          },
          "pt-BR": {
            "description": "Portugais (Brésil)",
            "type": [
              "string",
              "null"
            ]
          },
          "ro-RO": {
            "description": "Roumain",
            "type": [
              "string",
              "null"
            ]
          },
          "ru-RU": {
            "description": "Russe",
            "type": [
              "string",
              "null"
            ]
          },
          "th-TH": {
            "description": "Thaï",
            "type": [
              "string",
              "null"
            ]
          },
          "tr-TR": {
            "description": "Turc",
            "type": [
              "string",
              "null"
            ]
          },
          "vi-VN": {
            "description": "Vietnamien",
            "type": [
              "string",
              "null"
            ]
          },
          "zh-CN": {
            "description": "Chinois (simplifié)",
            "type": [
              "string",
              "null"
            ]
          },
          "zh-TW": {
            "description": "Chinois (traditionnel)",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "title": "five-letter",
        "type": [
          "object",
          "null"
        ]
      },
      "image_url": {
        "description": "URL de l'image.",
        "example": "https://image.example.com",
        "type": [
          "string",
          "null"
        ]
      },
      "inactive_promotions_count": {
        "description": "Nombre de promotions désactivées.",
        "type": "integer"
      },
      "interval_type_hourly_rc": {
        "description": "Fréquence de la réinitialisation récurrente de la chaîne de récompenses.",
        "enum": [
          "hourly"
        ],
        "type": "string"
      },
      "interval_type_monthly": {
        "description": "Fréquence de la réinitialisation récurrente de la chaîne de récompenses.",
        "enum": [
          "monthly"
        ],
        "type": "string"
      },
      "interval_type_weekly": {
        "description": "Fréquence de la réinitialisation récurrente de la chaîne de récompenses.",
        "enum": [
          "weekly"
        ],
        "type": "string"
      },
      "is_clan": {
        "description": "Détermine l'utilisation du point de valeur dans les chaînes de récompense de clan.",
        "example": true,
        "type": "boolean"
      },
      "is_enabled": {
        "example": true,
        "type": "boolean"
      },
      "is_reset_after_end": {
        "default": false,
        "description": "S'il faut réinitialiser la chaîne de récompenses (points de valeur et progression de tous les utilisateurs) après sa date de fin :\n* Si `true`, la chaîne de récompenses sera réinitialisée après sa date de fin.\n* Si `false`, la chaîne de récompenses ne sera pas réinitialisée après sa date de fin.\n\n<br>\n<div class=\"notice\"><strong>Avis</strong><br><br>\nNe peut pas être <code>true</code> si : <br>\n<ul>\n  <li>Une période de réinitialisation est définie dans <code>recurrent_schedule</code>.</li>\n  <li>La valeur <code>null</code> est passée dans <code>periods.date_until</code>.</li>\n</ul>\n</div>",
        "example": false,
        "type": "boolean"
      },
      "item-custom-attributes-response": {
        "description": "Un JSON contenant les attributs de l'objet et leurs valeurs.",
        "format": "json",
        "type": "object"
      },
      "item-periods": {
        "description": "Période de vente d'objets.",
        "items": {
          "properties": {
            "date_from": {
              "description": "Date de mise en vente de l'objet spécifié.",
              "example": "2020-08-11T10:00:00+03:00",
              "format": "date-time",
              "type": "string"
            },
            "date_until": {
              "description": "Date de retrait de la vente de l'objet spécifié. Peut prendre la valeur `null`.",
              "example": "2020-08-11T20:00:00+03:00",
              "format": "date-time",
              "type": [
                "string",
                "null"
              ]
            }
          },
          "type": "object"
        },
        "type": [
          "array",
          "null"
        ]
      },
      "item-periods-response": {
        "description": "Période de vente d'objets.",
        "items": {
          "properties": {
            "date_from": {
              "description": "Date de mise en vente de l'objet spécifié.",
              "example": "2020-08-11T10:00:00+03:00",
              "format": "date-time",
              "type": [
                "string",
                "null"
              ]
            },
            "date_until": {
              "description": "Date de retrait de la vente de l'objet spécifié. Peut prendre la valeur `null`.",
              "example": "2020-08-11T20:00:00+03:00",
              "format": "date-time",
              "type": [
                "string",
                "null"
              ]
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "item-value-point-reward-set": {
        "items": {
          "properties": {
            "amount": {
              "description": "Montant des points de valeur.",
              "type": "integer"
            },
            "sku": {
              "$ref": "#/components/schemas/sku"
            }
          },
          "required": [
            "sku",
            "amount"
          ],
          "type": "object"
        },
        "type": "array"
      },
      "item-value-point-reward-set-for-patch": {
        "items": {
          "maxItems": 100,
          "properties": {
            "amount": {
              "description": "Montant des points de valeur.",
              "minimum": 0,
              "type": "integer"
            },
            "sku": {
              "$ref": "#/components/schemas/sku"
            }
          },
          "required": [
            "sku",
            "amount"
          ],
          "type": "object"
        },
        "type": "array"
      },
      "item_id": {
        "description": "Internal ID unique de l'objet.",
        "example": 1,
        "type": "integer"
      },
      "item_price_conditions_promocode": {
        "description": "Tableau d'objets avec des conditions définissant la fourchette de prix pour l'application de la promotion à certains biens du panier.<br>\nLe prix de chaque bien du panier de l'utilisateur est comparé à la fourchette de prix spécifiée dans la condition. Les [bonus](/fr/api/shop-builder/operation/create-promo-code/#!path=bonus&t=request) et les [réductions](/fr/api/shop-builder/operation/create-promo-code/#!path=discount&t=request) ne s'appliquent qu'aux biens du panier dont le prix répond à la condition.<br>\nSi vous passez ce tableau, définissez la valeur du tableau [discounted_items](/fr/api/shop-builder/operation/create-promo-code/#!path=discounted_items&t=request) sur `null`.",
        "items": {
          "$ref": "#/components/schemas/price_conditions_items"
        },
        "type": [
          "array",
          "null"
        ]
      },
      "item_type": {
        "description": "Type d'objet : `virtual_good`/`virtual_currency`/`bundle`/`unit`.",
        "type": "string"
      },
      "limit_exceeded_visibility": {
        "default": "show",
        "description": "Determines the visibility of the item in the catalog after the purchase limit is reached, until the next limit reset.\n\nApplies to items for which recurring limit resets are configured in the `recurrent_schedule` array.\n\nIf limit resets are not configured, the item doesn't appear in the catalog after the purchase limit is reached,\nregardless of the `limit_exceeded_visibility` value.\n\nPossible values:\n- `show` — The item is returned in catalog retrieval API calls after the purchase limit is reached. In client-side\ncatalog retrieval API calls, once the limit is reached, the item is returned with the `can_be_bought: false` flag. The\nnext reset date is returned in `reset_next_date`.\n- `hide` — The item is not returned in catalog retrieval API calls after the purchase limit is reached, until the\nlimit is reset.",
        "enum": [
          "show",
          "hide"
        ],
        "example": "show",
        "type": "string"
      },
      "long-description-localization-object": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/two-letter-locale"
          },
          {
            "$ref": "#/components/schemas/five-letter-locale"
          }
        ],
        "description": "Conteneur objet contenant les localisations de la description complète de l'objet (item). Il accepte deux formats de codes de langue : les codes à deux lettres minuscules (comme `en`) et les codes régionaux à cinq caractères (comme `en-US`). Les deux formats sont valides en entrée, mais les réponses utilisent toujours le format à deux lettres. Si les deux variantes sont fournies pour une même langue (par exemple, `en` et `en-US`), seule la dernière est conservée. Consultez la [documentation](/fr/doc/shop-builder/references/supported-languages/) pour la liste complète des langues prises en charge.",
        "type": [
          "object",
          "null"
        ]
      },
      "media_list": {
        "description": "Ressources supplémentaires de l'objet, telles que des captures d'écran, des vidéos de gameplay, etc.",
        "example": [
          {
            "type": "image",
            "url": "https://cdn3.xsolla.com/img/misc/images/71ab1e12126f2103e1868076f0acb21a.jpg"
          }
        ],
        "items": {
          "properties": {
            "type": {
              "description": "Type de média : `image`/`video`.",
              "enum": [
                "image",
                "video"
              ],
              "example": "image",
              "type": "string"
            },
            "url": {
              "description": "Fichier de ressources.",
              "example": "https://cdn3.xsolla.com/img/misc/images/71ab1e12126f2103e1868076f0acb21a.jpg",
              "type": "string"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "modify-daily-chain-item-model": {
        "properties": {
          "quantity": {
            "description": "Nombre d'étapes de récompense quotidienne pour cette UGS",
            "minimum": 1,
            "type": "integer"
          },
          "sku": {
            "$ref": "#/components/schemas/sku"
          }
        },
        "required": [
          "sku",
          "quantity"
        ],
        "type": "object"
      },
      "modify-daily-chain-step-model": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/modify-daily-chain-item-model"
            },
            "minItems": 1,
            "type": "array"
          },
          "step_id": {
            "$ref": "#/components/schemas/daily_chain_update_step_id"
          },
          "step_number": {
            "$ref": "#/components/schemas/daily_chain_step_number"
          }
        },
        "required": [
          "step_number",
          "items"
        ],
        "type": "object"
      },
      "modify-offer-chain-item-model": {
        "properties": {
          "order": {
            "description": "Ordre des récompenses pour l'étape de la chaîne d'offres.",
            "minimum": 0,
            "type": [
              "integer",
              "null"
            ]
          },
          "quantity": {
            "description": "Quantité d'objets de récompense pour cette étape de la chaîne.",
            "minimum": 1,
            "type": "integer"
          },
          "sku": {
            "$ref": "#/components/schemas/sku"
          }
        },
        "required": [
          "sku",
          "quantity"
        ],
        "type": "object"
      },
      "modify-offer-chain-model": {
        "description": "Chaine d'offres.",
        "properties": {
          "attribute_conditions": {
            "$ref": "#/components/schemas/chain_user-attribute_conditions_model-post"
          },
          "date_end": {
            "$ref": "#/components/schemas/offer_chain_date_end"
          },
          "date_start": {
            "$ref": "#/components/schemas/offer_chain_date_start"
          },
          "description": {
            "$ref": "#/components/schemas/description-localization-object"
          },
          "id": {
            "$ref": "#/components/schemas/offer_chain_id"
          },
          "is_always_visible": {
            "$ref": "#/components/schemas/chain_is_always_visible"
          },
          "is_enabled": {
            "$ref": "#/components/schemas/is_enabled"
          },
          "name": {
            "$ref": "#/components/schemas/name-localization-object"
          },
          "order": {
            "$ref": "#/components/schemas/order"
          },
          "recurrent_schedule": {
            "$ref": "#/components/schemas/offer_chain_recurrent_schedule_create_update"
          },
          "steps": {
            "items": {
              "$ref": "#/components/schemas/modify-offer-chain-step-model"
            },
            "type": "array"
          }
        },
        "required": [
          "name",
          "date_start",
          "steps",
          "is_enabled"
        ],
        "type": "object"
      },
      "modify-offer-chain-step-model": {
        "properties": {
          "is_free": {
            "$ref": "#/components/schemas/offer_chain_is_free"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/modify-offer-chain-item-model"
            },
            "minItems": 1,
            "type": "array"
          },
          "step_id": {
            "$ref": "#/components/schemas/update_step_id"
          },
          "step_number": {
            "$ref": "#/components/schemas/offer_chain_step_number"
          }
        },
        "required": [
          "step_number",
          "is_free",
          "items"
        ],
        "type": "object"
      },
      "modify_reward_step": {
        "description": "Étape de la chaîne de récompenses.",
        "properties": {
          "image_url": {
            "$ref": "#/components/schemas/image_url"
          },
          "name": {
            "$ref": "#/components/schemas/name-localization-object"
          },
          "price": {
            "$ref": "#/components/schemas/reward_step_price"
          },
          "reward": {
            "items": {
              "properties": {
                "attribute_conditions": {
                  "$ref": "#/components/schemas/reward-chain-step-reward_user-attribute_conditions_model-post"
                },
                "quantity": {
                  "$ref": "#/components/schemas/reward_item_quantity"
                },
                "sku": {
                  "$ref": "#/components/schemas/sku"
                }
              },
              "required": [
                "sku",
                "quantity"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "step_id": {
            "$ref": "#/components/schemas/step_id"
          }
        },
        "required": [
          "name",
          "price",
          "reward",
          "step_id"
        ],
        "type": "object"
      },
      "name-localization-object": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/two-letter-locale"
          },
          {
            "$ref": "#/components/schemas/five-letter-locale"
          }
        ],
        "description": "Conteneur objet contenant les localisations du nom de l'objet (item). Il accepte deux formats de codes de langue : les codes à deux lettres minuscules (comme `en`) et les codes régionaux à cinq caractères (comme `en-US`). Les deux formats sont valides en entrée, mais les réponses utilisent toujours le format à deux lettres. Si les deux variantes sont fournies pour une même langue (par exemple, `en` et `en-US`), seule la dernière est conservée. Consultez la [documentation](/fr/doc/shop-builder/references/supported-languages/) pour la liste complète des langues prises en charge.",
        "type": [
          "object",
          "null"
        ]
      },
      "offer-chain-error-model": {
        "properties": {
          "errorCode": {
            "example": 1102,
            "type": "integer"
          },
          "errorMessage": {
            "example": "[0401-1102]: Unprocessable Entity. The property `property_name` is required",
            "type": "string"
          },
          "errorMessageExtended": {
            "type": [
              "object",
              "null"
            ]
          },
          "statusCode": {
            "example": 422,
            "type": "integer"
          },
          "transactionId": {
            "example": "x-x-x-x-transactionId-mock-x-x-x",
            "type": "string"
          }
        },
        "type": "object"
      },
      "offer_chain_date_end": {
        "description": "Date de fin de la chaîne d’offres. Peut être `null`. Si `date_end` est `null`, la chaîne d'offres n'a pas de limite de temps.",
        "example": "2020-04-15T18:16:00+05:00",
        "format": "date-time",
        "type": [
          "string",
          "null"
        ]
      },
      "offer_chain_date_start": {
        "description": "Date de début de la chaîne d'offres.",
        "example": "2020-04-15T18:16:00+05:00",
        "format": "date-time",
        "type": "string"
      },
      "offer_chain_day_of_month": {
        "description": "Jour du mois où la chaîne d'offres est réinitialisée. Si le mois comporte moins de jours que le jour spécifié, la réinitialisation aura lieu le dernier jour du mois.",
        "maximum": 31,
        "minimum": 1,
        "type": "integer"
      },
      "offer_chain_day_of_week": {
        "description": "Jour de la semaine où la chaîne d'offres est réinitialisée, où `1` est le lundi et `7`, le dimanche.",
        "maximum": 7,
        "minimum": 1,
        "type": "integer"
      },
      "offer_chain_displayable_reset_next_date": {
        "description": "Date et heure calculées auxquelles la chaîne d'offres sera réinitialisée la prochaine fois, au format <a href=\"https://en.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a>. <br><br> Par exemple, si la réinitialisation mensuelle commence le 1er mars 2024 à 1 h (heure de Kuala Lumpur), la réinitialisation suivante aura lieu le 1er avril 2024 à 1 h, ce qui correspond à `2024-04-01T01:00:00+08:00` au format <a href=\"https://en.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a>. <br><br> Exemple : `2024-04-01T01:00:00+08:00`",
        "format": "date-time",
        "type": "string"
      },
      "offer_chain_displayable_reset_start_date": {
        "description": "Date et heure de la première réinitialisation de la chaîne d'offres. <br><br> Par exemple, la première réinitialisation prévue pour le 1er mars 2024 à 1 h (heure de Kuala Lumpur) correspond à `2024-03-01T01:00:00+08:00` au format <a href=\"https://en.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a>. <br><br> Exemple : `2024-03-01T01:00:00+08:00`",
        "format": "date-time",
        "type": "string"
      },
      "offer_chain_hours_interval": {
        "description": "Intervalle en heures, après lequel la chaîne d'offres est réinitialisée. <br><br> Le compte à rebours commence à partir du paramètre <a href=\"https://developers.xsolla.com/fr/api/shop-builder/operation/admin-create-offer-chain/#!path=date_start&t=request\">date_start</a>. <br><br> Par exemple, si `date_start = \"2025-11-15T18:15:00+05:00\"` et `hours_interval = 2`, la chaîne d'offres se réinitialise toutes les 2 h à partir de `\"2025-11-15T20:15:00+05:00\"`.",
        "maximum": 10000,
        "minimum": 1,
        "type": "integer"
      },
      "offer_chain_id": {
        "description": "ID unique de la chaîne d'offres.",
        "example": 9,
        "type": "integer"
      },
      "offer_chain_interval_type_hourly": {
        "description": "Fréquence de réinitialisation de la chaîne d'offres.",
        "enum": [
          "hourly"
        ],
        "type": "string"
      },
      "offer_chain_interval_type_monthly": {
        "description": "Fréquence de réinitialisation de la chaîne d'offres.",
        "enum": [
          "monthly"
        ],
        "type": "string"
      },
      "offer_chain_interval_type_weekly": {
        "description": "Fréquence de réinitialisation de la chaîne d'offres.",
        "enum": [
          "weekly"
        ],
        "type": "string"
      },
      "offer_chain_is_free": {
        "description": "Indique si l'étape de la chaîne d'offres est gratuite :<ul><li>Si <code>true</code>, l'étape doit être réclamée à l'aide de l'appel <a href=\"/api/shop-builder/operation/claim-user-offer-chain-step-reward\">Réclamer une étape de chaîne d'offres gratuite</a>.</li><li>Si <code>false</code>, elle doit être achetée à l'aide de l'appel <a href=\"/api/shop-builder/operation/order-user-offer-chain-step-reward\">Créer une commande pour une étape payante de la chaîne d'offres</a>.</li></ul>",
        "type": "boolean"
      },
      "offer_chain_recurrent_schedule": {
        "description": "Période de réinitialisation récurrente de la chaîne d'offres.",
        "oneOf": [
          {
            "description": "Réinitialisation hebdomadaire de la chaîne d'offres.",
            "properties": {
              "day_of_week": {
                "$ref": "#/components/schemas/offer_chain_day_of_week"
              },
              "displayable_reset_next_date": {
                "$ref": "#/components/schemas/offer_chain_displayable_reset_next_date"
              },
              "displayable_reset_start_date": {
                "$ref": "#/components/schemas/offer_chain_displayable_reset_start_date"
              },
              "interval_type": {
                "$ref": "#/components/schemas/offer_chain_interval_type_weekly"
              },
              "reset_next_date": {
                "$ref": "#/components/schemas/offer_chain_reset_next_date"
              },
              "time": {
                "$ref": "#/components/schemas/offer_chain_time"
              }
            },
            "title": "interval_type = weekly",
            "type": [
              "object",
              "null"
            ]
          },
          {
            "description": "Réinitialisation mensuelle de la chaîne d'offres.",
            "properties": {
              "day_of_month": {
                "$ref": "#/components/schemas/offer_chain_day_of_month"
              },
              "displayable_reset_next_date": {
                "$ref": "#/components/schemas/offer_chain_displayable_reset_next_date"
              },
              "displayable_reset_start_date": {
                "$ref": "#/components/schemas/offer_chain_displayable_reset_start_date"
              },
              "interval_type": {
                "$ref": "#/components/schemas/offer_chain_interval_type_monthly"
              },
              "reset_next_date": {
                "$ref": "#/components/schemas/offer_chain_reset_next_date"
              },
              "time": {
                "$ref": "#/components/schemas/offer_chain_time"
              }
            },
            "title": "interval_type = monthly",
            "type": "object"
          },
          {
            "description": "Réinitialisation de la chaîne d'offres effectuée selon l'intervalle de temps spécifié, en heures.",
            "properties": {
              "hours_interval": {
                "$ref": "#/components/schemas/offer_chain_hours_interval"
              },
              "interval_type": {
                "$ref": "#/components/schemas/offer_chain_interval_type_hourly"
              }
            },
            "title": "interval_type = horaire",
            "type": "object"
          }
        ],
        "type": [
          "object",
          "null"
        ]
      },
      "offer_chain_recurrent_schedule_client_side": {
        "description": "Période de réinitialisation de la chaîne d'offres.",
        "properties": {
          "interval_type": {
            "description": "Fréquence de réinitialisation de la chaîne d'offres.",
            "enum": [
              "weekly",
              "monthly",
              "hourly"
            ],
            "type": "string"
          },
          "reset_next_date": {
            "$ref": "#/components/schemas/offer_chain_reset_next_date"
          }
        },
        "type": [
          "object",
          "null"
        ]
      },
      "offer_chain_recurrent_schedule_create_update": {
        "description": "Période de réinitialisation de la chaîne d'offres.",
        "oneOf": [
          {
            "description": "Réinitialisation hebdomadaire de la chaîne d'offres.",
            "properties": {
              "day_of_week": {
                "$ref": "#/components/schemas/offer_chain_day_of_week"
              },
              "interval_type": {
                "$ref": "#/components/schemas/offer_chain_interval_type_weekly"
              },
              "time": {
                "$ref": "#/components/schemas/offer_chain_time"
              }
            },
            "required": [
              "interval_type",
              "time",
              "day_of_week"
            ],
            "title": "interval_type = weekly",
            "type": [
              "object",
              "null"
            ]
          },
          {
            "description": "Réinitialisation mensuelle de la chaîne d'offres.",
            "properties": {
              "day_of_month": {
                "$ref": "#/components/schemas/offer_chain_day_of_month"
              },
              "interval_type": {
                "$ref": "#/components/schemas/offer_chain_interval_type_monthly"
              },
              "time": {
                "$ref": "#/components/schemas/offer_chain_time"
              }
            },
            "required": [
              "interval_type",
              "time",
              "day_of_month"
            ],
            "title": "interval_type = monthly",
            "type": "object"
          },
          {
            "description": "Réinitialisation de la chaîne d'offres effectuée selon l'intervalle de temps spécifié, en heures.",
            "properties": {
              "hours_interval": {
                "$ref": "#/components/schemas/offer_chain_hours_interval"
              },
              "interval_type": {
                "$ref": "#/components/schemas/offer_chain_interval_type_hourly"
              }
            },
            "required": [
              "interval_type",
              "hours_interval"
            ],
            "title": "interval_type = horaire",
            "type": "object"
          }
        ],
        "type": [
          "object",
          "null"
        ]
      },
      "offer_chain_reset_next_date": {
        "description": "Date et heure calculées auxquelles la chaîne d'offres sera réinitialisée la prochaine fois, au format <a href=\"https://en.wikipedia.org/wiki/Unix_time\" target=\"_blank\">Unix Timestamp</a>. <br><br> Par exemple, si la réinitialisation mensuelle de la chaîne d'offres commence le 1er mars 2024 à 1 h (heure de Kuala Lumpur, GMT+8), la réinitialisation suivante aura lieu le 1er avril 2024 à 1 h, ce qui correspond au 31 mars 2024 17:00 GMT+0 ou à `1711904400000` au format Unix Timestamp. <br><br> Exemple : `1711904400000`",
        "type": "integer"
      },
      "offer_chain_step_id": {
        "description": "ID unique de l'étape de la chaîne.",
        "example": 10,
        "minimum": 1,
        "type": [
          "integer",
          "null"
        ]
      },
      "offer_chain_step_number": {
        "description": "Numéro de l'étape.",
        "example": 2,
        "minimum": 1,
        "nullable": false,
        "type": "integer"
      },
      "offer_chain_step_price": {
        "properties": {
          "amount": {
            "$ref": "#/components/schemas/offer_chain_step_price_amount"
          },
          "currency": {
            "$ref": "#/components/schemas/offer_chain_step_price_currency"
          }
        },
        "required": [
          "amount",
          "currency"
        ],
        "type": [
          "object",
          "null"
        ]
      },
      "offer_chain_step_price_amount": {
        "description": "Prix de l'étape en devises réelles.",
        "example": 99.99,
        "type": "number"
      },
      "offer_chain_step_price_currency": {
        "description": "Devise du prix de l'objet. Code à trois lettres selon [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217).",
        "example": "USD",
        "type": "string"
      },
      "offer_chain_time": {
        "description": "Heure à laquelle la chaîne d'offres est réinitialisée dans le fuseau horaire spécifié (arrondi aux heures). <br><br> Par exemple, si l'heure de réinitialisation est fixée à 1 h, heure de Kuala Lumpur (GMT+8), la valeur du paramètre `time` est `01:00:00+08:00`.",
        "example": "01:00:00+08:00",
        "pattern": "((0[0-9]|1[0-9]|2[0-3]):00:00)(\\+|-)(0[0-9]|1[0-9]|2[0-3]):([0-5][0-9])",
        "type": "string"
      },
      "order": {
        "description": "Définit l'ordre d'empilement.",
        "example": 1,
        "type": "integer"
      },
      "periods": {
        "description": "Périodes de validité de la chaîne de récompenses. Si plusieurs périodes sont spécifiées, les paramètres `date_from` et `date_until` sont tous deux requis.",
        "items": {
          "properties": {
            "date_from": {
              "description": "Date de début de la chaîne de récompenses spécifiée.",
              "example": "2020-08-11T10:00:00+03:00",
              "format": "date-time",
              "nullable": false,
              "type": "string"
            },
            "date_until": {
              "description": "Date de fin de la chaîne de récompenses spécifiée. Peut être définie à `null` uniquement lorsqu'une seule période de validité est spécifiée.",
              "example": "2020-08-11T20:00:00+03:00",
              "format": "date-time",
              "type": [
                "string",
                "null"
              ]
            }
          },
          "required": [
            "date_from"
          ],
          "type": "object"
        },
        "nullable": false,
        "type": "array"
      },
      "personalized-catalog_user-attribute_conditions_model-get": {
        "allOf": [
          {
            "$ref": "#/components/schemas/user-attribute_conditions_model-get"
          },
          {
            "description": "Conditions de validation des attributs utilisateur.\nDéterminez la disponibilité des objets dans le catalogue selon la correspondance des attributs utilisateur avec l'ensemble des conditions définies."
          }
        ]
      },
      "personalized-catalog_user-attribute_conditions_model-post": {
        "allOf": [
          {
            "$ref": "#/components/schemas/user-attribute_conditions_model-post"
          },
          {
            "description": "Conditions de validation des attributs utilisateur.\nDéterminez la disponibilité des objets dans le catalogue selon la correspondance des attributs utilisateur avec l'ensemble des conditions définies."
          }
        ]
      },
      "popup_header-two-letter-locale": {
        "description": "Objet contenant les localisations de l'en-tête de la fenêtre contextuelle de la chaîne de récompenses de clan. [Code de langue](https://developers.xsolla.com/fr/doc/pay-station/features/localization/) à deux lettres minuscules.",
        "properties": {
          "ar": {
            "example": null,
            "type": [
              "string",
              "null"
            ]
          },
          "bg": {
            "example": null,
            "type": [
              "string",
              "null"
            ]
          },
          "cn": {
            "example": null,
            "type": [
              "string",
              "null"
            ]
          },
          "cs": {
            "example": null,
            "type": [
              "string",
              "null"
            ]
          },
          "de": {
            "example": "Wie man Belohnungen freischaltet",
            "type": [
              "string",
              "null"
            ]
          },
          "en": {
            "example": "How to unlock rewards",
            "type": [
              "string",
              "null"
            ]
          },
          "es": {
            "example": "Cómo desbloquear recompensas",
            "type": [
              "string",
              "null"
            ]
          },
          "fr": {
            "example": "Comment débloquer des récompenses",
            "type": [
              "string",
              "null"
            ]
          },
          "he": {
            "example": null,
            "type": [
              "string",
              "null"
            ]
          },
          "it": {
            "example": "Come sbloccare ricompense",
            "type": [
              "string",
              "null"
            ]
          },
          "ja": {
            "example": "報酬をアンロックする方法",
            "type": [
              "string",
              "null"
            ]
          },
          "ko": {
            "example": null,
            "type": [
              "string",
              "null"
            ]
          },
          "pl": {
            "example": null,
            "type": [
              "string",
              "null"
            ]
          },
          "pt": {
            "example": null,
            "type": [
              "string",
              "null"
            ]
          },
          "ro": {
            "example": null,
            "type": [
              "string",
              "null"
            ]
          },
          "ru": {
            "example": null,
            "type": [
              "string",
              "null"
            ]
          },
          "th": {
            "example": null,
            "type": [
              "string",
              "null"
            ]
          },
          "tr": {
            "example": null,
            "type": [
              "string",
              "null"
            ]
          },
          "tw": {
            "example": null,
            "type": [
              "string",
              "null"
            ]
          },
          "vi": {
            "example": null,
            "type": [
              "string",
              "null"
            ]
          }
        },
        "type": [
          "object",
          "null"
        ]
      },
      "popup_image_url": {
        "description": "Image pour la fenêtre contextuelle de la chaîne de récompenses de clan.",
        "example": "https://image.example.com",
        "format": "uri",
        "type": [
          "string",
          "null"
        ]
      },
      "popup_instruction-two-letter-locale": {
        "description": "Objet contenant les localisations des instructions de la fenêtre contextuelle de la chaîne de récompenses de clan. [Code de langue](https://developers.xsolla.com/fr/doc/pay-station/features/localization/) à deux lettres minuscules.",
        "properties": {
          "ar": {
            "example": null,
            "type": [
              "string",
              "null"
            ]
          },
          "bg": {
            "example": null,
            "type": [
              "string",
              "null"
            ]
          },
          "cn": {
            "example": null,
            "type": [
              "string",
              "null"
            ]
          },
          "cs": {
            "example": null,
            "type": [
              "string",
              "null"
            ]
          },
          "de": {
            "example": "Du musst ein Clanmitglied sein, um Clananreize zu erhalten. Du trittst einem Clan bei, wenn ein Clanmitglied dich einlädt, und du die Einladung annimmst. Du kannst auch deinen eigenen Clan erstellen.",
            "type": [
              "string",
              "null"
            ]
          },
          "en": {
            "example": "You must be a clan member to get clan rewards. You join a clan when a clan member invites you to the clan, and you accept the invite. You can also create your own clan.",
            "type": [
              "string",
              "null"
            ]
          },
          "es": {
            "example": "Debes ser miembro de un clan para obtener las recompensas del clan. Te unes a un clan cuando un miembro del clan te invita al clan y aceptas la invitación. También puedes crear tu propio clan.",
            "type": [
              "string",
              "null"
            ]
          },
          "fr": {
            "example": "Vous devez être membre d'un clan pour obtenir les récompenses du clan. Vous rejoignez un clan lorsque qu'un membre du clan vous invite au clan et que vous acceptez l'invitation. Vous pouvez également créer votre propre clan.",
            "type": [
              "string",
              "null"
            ]
          },
          "he": {
            "example": null,
            "type": [
              "string",
              "null"
            ]
          },
          "it": {
            "example": "Devi essere un membro del clan per ottenere le ricompense del clan. Ti unisci a un clan quando un membro del clan ti invita al clan e accetti l'invito. Puoi anche creare il tuo clan.",
            "type": [
              "string",
              "null"
            ]
          },
          "ja": {
            "example": "クランリワードを受け取るには、クランメンバーでなければなりません。 クランメンバーがあなたをクランに招待し、招待を受け入れると、クランに参加できます。 あなた自身のクランを作成することもできます。",
            "type": [
              "string",
              "null"
            ]
          },
          "ko": {
            "example": null,
            "type": [
              "string",
              "null"
            ]
          },
          "pl": {
            "example": null,
            "type": [
              "string",
              "null"
            ]
          },
          "pt": {
            "example": null,
            "type": [
              "string",
              "null"
            ]
          },
          "ro": {
            "example": null,
            "type": [
              "string",
              "null"
            ]
          },
          "ru": {
            "example": null,
            "type": [
              "string",
              "null"
            ]
          },
          "th": {
            "example": null,
            "type": [
              "string",
              "null"
            ]
          },
          "tr": {
            "example": null,
            "type": [
              "string",
              "null"
            ]
          },
          "tw": {
            "example": null,
            "type": [
              "string",
              "null"
            ]
          },
          "vi": {
            "example": null,
            "type": [
              "string",
              "null"
            ]
          }
        },
        "type": [
          "object",
          "null"
        ]
      },
      "price_conditions_bonus": {
        "description": "Tableau d'objets avec des conditions définissant la fourchette de prix pour l'application de la promotion.<br> La promotion ne s'applique qu'aux biens dont le prix répond à toutes les conditions du tableau. Si vous passez ce tableau, définissez la valeur de l'objet [condition](/fr/api/shop-builder/operation/create-bonus-promotion/#!path=condition&t=request) sur `null`.",
        "items": {
          "$ref": "#/components/schemas/price_conditions_items"
        },
        "type": [
          "array",
          "null"
        ]
      },
      "price_conditions_discount": {
        "description": "Tableau d'objets avec des conditions définissant la fourchette de prix pour l'application de la promotion.<br> La promotion ne s'applique qu'aux biens dont le prix répond à toutes les conditions du tableau. Si vous passez ce tableau, définissez la valeur de l'objet [items](/fr/api/shop-builder/operation/create-item-promotion/#!path=items&t=request) sur `null`.",
        "items": {
          "$ref": "#/components/schemas/price_conditions_items"
        },
        "type": [
          "array",
          "null"
        ]
      },
      "price_conditions_items": {
        "description": "Chaque objet décrit une règle définissant le prix requis.",
        "properties": {
          "operator": {
            "description": "Comparison operator for setting the price range for applying the promotion.\n\nPossible values:\n- `ge` — Greater or equal\n- `gt` — Greater than\n- `le` — Less or equal\n- `lt` — Less than\n- `eq` — Equals\n- `ne` — Not equals",
            "enum": [
              "ge",
              "gt",
              "le",
              "lt",
              "eq",
              "ne"
            ],
            "type": "string"
          },
          "value": {
            "description": "Valeur permettant de déterminer la fourchette de prix pour l'application de la promotion.",
            "pattern": "^\\d+(\\.\\d{1,4})?$",
            "type": "string"
          }
        },
        "required": [
          "operator",
          "value"
        ],
        "type": "object"
      },
      "price_conditions_promocode": {
        "description": "Tableau d'objets avec des conditions définissant la fourchette de prix pour l'application de la promotion à l'ensemble du panier.<br>\nLe prix total de tous les biens du panier de l'utilisateur est comparé à la fourchette de prix spécifiée dans la condition. Les [bonus](/fr/api/shop-builder/operation/create-promo-code/#!path=bonus&t=request) et les [réductions](/fr/api/shop-builder/operation/create-promo-code/#!path=discount&t=request) s'appliquent à tous les biens du panier si le prix du panier répond à la condition spécifiée.<br>\nSi vous passez ce tableau, définissez la valeur du tableau [discounted_items](/fr/api/shop-builder/operation/create-promo-code/#!path=discounted_items&t=request) sur `null`.",
        "items": {
          "$ref": "#/components/schemas/price_conditions_items"
        },
        "type": [
          "array",
          "null"
        ]
      },
      "promotion_periods": {
        "description": "Périodes de validité de la promotion. Si plusieurs périodes sont spécifiées, les paramètres `date_from` et `date_until` sont tous deux requis.",
        "items": {
          "properties": {
            "date_from": {
              "description": "Date de début de la promotion spécifiée.",
              "example": "2020-08-11T10:00:00+03:00",
              "format": "date-time",
              "nullable": false,
              "type": "string"
            },
            "date_until": {
              "description": "Date de fin de la promotion. Si la valeur est `null`, la promotion est illimitée. `null` n'est autorisé que si une seule période de validité est définie.",
              "example": "2020-08-11T20:00:00+03:00",
              "format": "date-time",
              "type": [
                "string",
                "null"
              ]
            }
          },
          "required": [
            "date_from"
          ],
          "type": "object"
        },
        "nullable": false,
        "type": "array"
      },
      "promotion_recurrent_schedule_response": {
        "description": "Délai d'actualisation des limites.",
        "properties": {
          "per_user": {
            "description": "Délai d'actualisation des limites pour un utilisateur.",
            "oneOf": [
              {
                "description": "Type quotidien d'actualisation des limites pour l'utilisateur.",
                "properties": {
                  "displayable_reset_next_date": {
                    "description": "Date et heure de réinitialisation des limites (ISO 8601).",
                    "example": "2023-02-28T11:00:00+08:00",
                    "format": "date-time",
                    "type": "string"
                  },
                  "displayable_reset_start_date": {
                    "description": "Date et heure de la première actualisation des limites (ISO 8601).",
                    "example": "2023-02-28T11:00:00+08:00",
                    "format": "date-time",
                    "type": "string"
                  },
                  "interval_type": {
                    "description": "Type de délai d'actualisation récurrent.",
                    "enum": [
                      "daily"
                    ],
                    "type": "string"
                  },
                  "reset_next_date": {
                    "description": "Date et heure d'actualisation des limites (horodatage Unix).",
                    "example": 1677553200,
                    "type": "integer"
                  },
                  "time": {
                    "description": "Heure d'actualisation des limites dans le fuseau horaire souhaité (arrondie en heures).",
                    "example": "11:00:00+03:00",
                    "format": "full-time",
                    "type": "string"
                  }
                },
                "title": "interval_type = daily",
                "type": "object"
              },
              {
                "description": "Type hebdomadaire d'actualisation des limites pour l'utilisateur.",
                "properties": {
                  "day_of_week": {
                    "description": "Jour de la semaine où les limites sont actualisées. Où 1 correspond au lundi et 7 au dimanche. Ne prend pas la valeur `null`. Uniquement pour le type de délai d'actualisation de limites `weekly`.",
                    "maximum": 7,
                    "minimum": 1,
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "displayable_reset_next_date": {
                    "description": "Date et heure de réinitialisation des limites (ISO 8601).",
                    "example": "2023-02-28T11:00:00+08:00",
                    "format": "date-time",
                    "type": "string"
                  },
                  "displayable_reset_start_date": {
                    "description": "Date et heure de la première actualisation des limites (ISO 8601).",
                    "example": "2023-02-28T11:00:00+08:00",
                    "format": "date-time",
                    "type": "string"
                  },
                  "interval_type": {
                    "description": "Type de délai d'actualisation récurrent.",
                    "enum": [
                      "weekly"
                    ],
                    "type": "string"
                  },
                  "reset_next_date": {
                    "description": "Date et heure d'actualisation des limites (horodatage Unix).",
                    "example": 1677553200,
                    "type": "integer"
                  },
                  "time": {
                    "description": "Heure d'actualisation des limites dans le fuseau horaire souhaité (arrondie en heures).",
                    "example": "11:00:00+03:00",
                    "format": "full-time",
                    "type": "string"
                  }
                },
                "title": "interval_type = weekly",
                "type": "object"
              },
              {
                "description": "Type mensuel d'actualisation des limites pour l'utilisateur.",
                "properties": {
                  "day_of_month": {
                    "description": "Jour du mois où les limites sont actualisées. Si aucun jour du mois n'est sélectionné en raison d'un mois plus court, l'actualisation aura lieu le dernier jour du mois. Ne prend pas la valeur `null`. Uniquement pour le type de délai d'actualisation de limites `monthly`.",
                    "maximum": 31,
                    "minimum": 1,
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "displayable_reset_next_date": {
                    "description": "Date et heure de réinitialisation des limites (ISO 8601).",
                    "example": "2023-02-28T11:00:00+08:00",
                    "format": "date-time",
                    "type": "string"
                  },
                  "displayable_reset_start_date": {
                    "description": "Date et heure de la première actualisation des limites (ISO 8601).",
                    "example": "2023-02-28T11:00:00+08:00",
                    "format": "date-time",
                    "type": "string"
                  },
                  "interval_type": {
                    "description": "Type de délai d'actualisation récurrent.",
                    "enum": [
                      "monthly"
                    ],
                    "type": "string"
                  },
                  "reset_next_date": {
                    "description": "Date et heure d'actualisation des limites (horodatage Unix).",
                    "example": 1677553200,
                    "type": "integer"
                  },
                  "time": {
                    "description": "Heure d'actualisation des limites dans le fuseau horaire souhaité (arrondie en heures).",
                    "example": "11:00:00+03:00",
                    "format": "full-time",
                    "type": "string"
                  }
                },
                "title": "interval_type = monthly",
                "type": "object"
              }
            ],
            "type": [
              "object",
              "null"
            ]
          }
        },
        "type": [
          "object",
          "null"
        ]
      },
      "promotion_user-attribute_conditions_model-get": {
        "allOf": [
          {
            "$ref": "#/components/schemas/user-attribute_conditions_model-get"
          },
          {
            "description": "Conditions de validation des attributs utilisateur.\nDéterminez la disponibilité de la promotion selon la correspondance des attributs utilisateur avec l'ensemble des conditions définies."
          }
        ]
      },
      "promotion_user-attribute_conditions_model-post": {
        "allOf": [
          {
            "$ref": "#/components/schemas/user-attribute_conditions_model-post"
          },
          {
            "description": "Conditions de validation des attributs utilisateur.\nDéterminez la disponibilité de la promotion selon la correspondance des attributs utilisateur avec l'ensemble des conditions définies."
          }
        ]
      },
      "recurrent_schedule_client_side": {
        "description": "Période de réinitialisation récurrente de la chaîne de récompenses.",
        "properties": {
          "interval_type": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/interval_type_weekly",
                "title": "interval_type = weekly"
              },
              {
                "$ref": "#/components/schemas/interval_type_monthly",
                "title": "interval_type = monthly"
              },
              {
                "$ref": "#/components/schemas/interval_type_hourly_rc",
                "title": "interval_type = horaire"
              }
            ]
          },
          "reset_next_date": {
            "$ref": "#/components/schemas/reset_next_date"
          }
        },
        "type": [
          "object",
          "null"
        ]
      },
      "recurrent_schedule_create_update": {
        "description": "Période de réinitialisation récurrente de la chaîne de récompenses.",
        "oneOf": [
          {
            "description": "Type hebdomadaire d'actualisation de la chaîne de récompenses.",
            "properties": {
              "day_of_week": {
                "$ref": "#/components/schemas/day_of_week"
              },
              "interval_type": {
                "$ref": "#/components/schemas/interval_type_weekly"
              },
              "time": {
                "$ref": "#/components/schemas/time"
              }
            },
            "required": [
              "interval_type",
              "time",
              "day_of_week"
            ],
            "title": "interval_type = weekly",
            "type": "object"
          },
          {
            "description": "Type mensuel d'actualisation de la chaîne de récompenses.",
            "properties": {
              "day_of_month": {
                "$ref": "#/components/schemas/day_of_month"
              },
              "interval_type": {
                "$ref": "#/components/schemas/interval_type_monthly"
              },
              "time": {
                "$ref": "#/components/schemas/time"
              }
            },
            "required": [
              "interval_type",
              "time",
              "day_of_month"
            ],
            "title": "interval_type = monthly",
            "type": "object"
          },
          {
            "description": "Réinitialisation de la chaîne de récompenses effectuée selon l'intervalle de temps spécifié, en heures.",
            "properties": {
              "hours_interval": {
                "$ref": "#/components/schemas/reward_chain_hours_interval"
              },
              "interval_type": {
                "$ref": "#/components/schemas/interval_type_hourly_rc"
              }
            },
            "required": [
              "interval_type",
              "hours_interval"
            ],
            "title": "interval_type = horaire",
            "type": "object"
          }
        ],
        "type": [
          "object",
          "null"
        ]
      },
      "reset_next_date": {
        "description": "Date et heure calculées auxquelles la chaîne de récompenses sera réinitialisée la prochaine fois <a href=\"https://en.wikipedia.org/wiki/Unix_time\" target=\"_blank\">(horodatage Unix)</a>. <br><br> Par exemple, la réinitialisation de la chaîne de récompenses est prévue chaque mois à partir du 1er mars 2024 à 01:00 de Kuala Lumpur (GMT+8). La date et l'heure de la prochaine remise à zéro de la chaîne de récompenses est le 1er avril 2024 à 01:00 de Kuala Lumpur (GMT+8), soit le 31 mars 2024 17:00 GMT+0 ou `1711904400000` dans le format Unix Timestamp. <br><br> Exemple : `1711904400000`",
        "type": "integer"
      },
      "reward-chain-step-reward_user-attribute_conditions_model-get": {
        "allOf": [
          {
            "$ref": "#/components/schemas/user-attribute_conditions_model-get"
          },
          {
            "description": "Conditions de validation des attributs utilisateur.\nDéterminez la disponibilité de la récompense pour les étapes de la chaîne de récompenses selon la correspondance des attributs utilisateur avec l'ensemble des conditions définies."
          }
        ]
      },
      "reward-chain-step-reward_user-attribute_conditions_model-post": {
        "allOf": [
          {
            "$ref": "#/components/schemas/user-attribute_conditions_model-post"
          },
          {
            "description": "Conditions de validation des attributs utilisateur.\nDéterminez la disponibilité de la récompense pour les étapes de la chaîne de récompenses selon la correspondance des attributs utilisateur avec l'ensemble des conditions définies."
          }
        ]
      },
      "reward_chain_hours_interval": {
        "description": "Intervalle en heures, après lequel la chaîne de récompenses est réinitialisée. <br><br> Le compte à rebours commence à partir du paramètre <a href=\"https://developers.xsolla.com/fr/api/shop-builder/operation/admin-create-reward-chain/#!path=0/date_start&t=request\">date_start</a>. <br><br> Par exemple, si `date_start = \"2025-11-15T18:15:00+05:00\"` et `hours_interval = 2`, la chaîne de récompenses se réinitialise toutes les 2 h à partir de `\"2025-11-15T20:15:00+05:00\"`.",
        "maximum": 10000,
        "minimum": 1,
        "type": "integer"
      },
      "reward_chain_id": {
        "description": "ID unique de la chaîne de récompenses.",
        "example": 9,
        "type": "integer"
      },
      "reward_item_quantity": {
        "description": "Quantité de l'objet.",
        "example": 2,
        "type": "integer"
      },
      "reward_step_price": {
        "properties": {
          "amount": {
            "$ref": "#/components/schemas/step_price_amount"
          }
        },
        "required": [
          "amount"
        ],
        "type": "object"
      },
      "reward_step_short": {
        "description": "Étape de la chaîne de récompenses.",
        "properties": {
          "image_url": {
            "$ref": "#/components/schemas/image_url"
          },
          "name": {
            "$ref": "#/components/schemas/name-localization-object"
          },
          "price": {
            "$ref": "#/components/schemas/reward_step_price"
          },
          "reward": {
            "items": {
              "properties": {
                "attribute_conditions": {
                  "$ref": "#/components/schemas/reward-chain-step-reward_user-attribute_conditions_model-get"
                },
                "quantity": {
                  "$ref": "#/components/schemas/reward_item_quantity"
                },
                "sku": {
                  "$ref": "#/components/schemas/sku"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "step_id": {
            "$ref": "#/components/schemas/step_id"
          }
        },
        "type": "object"
      },
      "rolling-skippable-daily-chain-base": {
        "description": "Propriétés de base pour les récompenses quotidiennes de type `rolling_skippable`.",
        "properties": {
          "date_end": {
            "$ref": "#/components/schemas/rolling_date_end"
          },
          "date_start": {
            "$ref": "#/components/schemas/daily_rolling_chain_date_start"
          },
          "is_recurrent": {
            "$ref": "#/components/schemas/rolling_is_recurrent"
          },
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/daily_chain_type"
              },
              {
                "enum": [
                  "rolling_skippable"
                ]
              }
            ]
          }
        },
        "type": "object"
      },
      "rolling-unskippable-daily-chain-base": {
        "description": "Propriétés de base pour les récompenses quotidiennes de type `rolling_unskippable`.",
        "properties": {
          "date_end": {
            "$ref": "#/components/schemas/rolling_date_end"
          },
          "date_start": {
            "$ref": "#/components/schemas/daily_rolling_chain_date_start"
          },
          "is_recurrent": {
            "$ref": "#/components/schemas/rolling_is_recurrent"
          },
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/daily_chain_type"
              },
              {
                "enum": [
                  "rolling_unskippable"
                ]
              }
            ]
          }
        },
        "type": "object"
      },
      "rolling_date_end": {
        "description": "Date de fin de la récompense quotidienne.",
        "example": "2020-04-15T18:16:00+05:00",
        "format": "date-time",
        "type": [
          "string",
          "null"
        ]
      },
      "rolling_is_recurrent": {
        "default": false,
        "description": "Détermine si la récompense quotidienne est récurrente. Si `true`, elle se réinitialise une fois toutes les étapes terminées, permettant à l'utilisateur de recommencer à l'étape 1. La récurrence est active uniquement pendant la période définie par `date_start` et `date_end`.",
        "example": true,
        "type": "boolean"
      },
      "sku": {
        "description": "ID unique de l'objet. L'UGS ne peut comprendre que des caractères alphanumériques latins minuscules et majuscules, des points, des tirets et des traits bas.",
        "example": "booster_mega_1",
        "maxLength": 255,
        "minLength": 1,
        "pattern": "^[a-zA-Z0-9_\\-–.]*$",
        "type": "string"
      },
      "step_id": {
        "description": "ID unique de l'étape.",
        "example": 10,
        "type": [
          "integer",
          "null"
        ]
      },
      "step_price_amount": {
        "description": "Prix de l'étape en points de valeur.",
        "example": 100,
        "type": "integer"
      },
      "time": {
        "description": "Heure à laquelle la chaîne de récompenses est réinitialisée dans le fuseau horaire souhaité (arrondie aux heures). <br><br> Par exemple, l'heure de réinitialisation de la chaîne de récompenses est fixée à 01:00 pour le fuseau horaire de Kuala Lumpur (GMT+8). Dans ce cas, la valeur du paramètre `time` est `01:00:00+08:00`.",
        "example": "01:00:00+08:00",
        "pattern": "((0[0-9]|1[0-9]|2[0-3]):00:00)(\\+|-)(0[0-9]|1[0-9]|2[0-3]):([0-5][0-9])",
        "type": "string"
      },
      "top_contributors": {
        "properties": {
          "contributed_amount": {
            "description": "Montant des points de valeur gagnés par l'utilisateur.",
            "example": 100,
            "type": "integer"
          },
          "name": {
            "description": "ID utilisateur transmis à Xsolla lors de l'autorisation. Cet ID utilisateur associe l'utilisateur à votre projet Xsolla Login et sert de pseudonyme. Si vous utilisez l'autorisation par [ID utilisateur](https://developers.xsolla.com/fr/solutions/web-shop/create-web-shop/set-up-authentication/?tabs=100-UserIDAuth&link=100-UserIDAuth), nous vous recommandons de passer le <code>name</code> paramètre dans [la réponse du webhook](https://developers.xsolla.com/fr/webhooks/operation/user-validation-in-webshop/). Ce paramètre contient le nom d'utilisateur utilisé comme pseudonyme.",
            "example": "Rocket",
            "type": "string"
          }
        },
        "type": [
          "object",
          "null"
        ]
      },
      "total_promotions_count": {
        "description": "Nombre total de promotions.",
        "type": "integer"
      },
      "two-letter-locale": {
        "description": "Codes de langue à deux lettres minuscules.",
        "properties": {
          "ar": {
            "description": "Arabe",
            "type": [
              "string",
              "null"
            ]
          },
          "bg": {
            "description": "Bulgare",
            "type": [
              "string",
              "null"
            ]
          },
          "cn": {
            "description": "Chinois (simplifié)",
            "type": [
              "string",
              "null"
            ]
          },
          "cs": {
            "description": "Tchèque",
            "type": [
              "string",
              "null"
            ]
          },
          "de": {
            "description": "Allemand",
            "type": [
              "string",
              "null"
            ]
          },
          "en": {
            "description": "Anglais",
            "type": [
              "string",
              "null"
            ]
          },
          "es": {
            "description": "Espagnol (Espagne)",
            "type": [
              "string",
              "null"
            ]
          },
          "fr": {
            "description": "Français",
            "type": [
              "string",
              "null"
            ]
          },
          "he": {
            "description": "Hébreu",
            "type": [
              "string",
              "null"
            ]
          },
          "id": {
            "description": "Indonésien",
            "type": [
              "string",
              "null"
            ]
          },
          "it": {
            "description": "Italien",
            "type": [
              "string",
              "null"
            ]
          },
          "ja": {
            "description": "Japonais",
            "type": [
              "string",
              "null"
            ]
          },
          "km": {
            "description": "Khmer",
            "type": [
              "string",
              "null"
            ]
          },
          "ko": {
            "description": "Coréen",
            "type": [
              "string",
              "null"
            ]
          },
          "lo": {
            "description": "Laotien",
            "type": [
              "string",
              "null"
            ]
          },
          "my": {
            "description": "Birman",
            "type": [
              "string",
              "null"
            ]
          },
          "ne": {
            "description": "Népalais",
            "type": [
              "string",
              "null"
            ]
          },
          "ph": {
            "description": "Philippin",
            "type": [
              "string",
              "null"
            ]
          },
          "pl": {
            "description": "Polonais",
            "type": [
              "string",
              "null"
            ]
          },
          "pt": {
            "description": "Portugais",
            "type": [
              "string",
              "null"
            ]
          },
          "ro": {
            "description": "Roumain",
            "type": [
              "string",
              "null"
            ]
          },
          "ru": {
            "description": "Russe",
            "type": [
              "string",
              "null"
            ]
          },
          "th": {
            "description": "Thaï",
            "type": [
              "string",
              "null"
            ]
          },
          "tr": {
            "description": "Turc",
            "type": [
              "string",
              "null"
            ]
          },
          "tw": {
            "description": "Chinois (traditionnel)",
            "type": [
              "string",
              "null"
            ]
          },
          "vi": {
            "description": "Vietnamien",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "title": "two-letter",
        "type": [
          "object",
          "null"
        ]
      },
      "unit_type": {
        "description": "Type d'unité : `game`.",
        "example": "game",
        "type": "string"
      },
      "update-calendar-hard-daily-chain-model": {
        "allOf": [
          {
            "$ref": "#/components/schemas/calendar-hard-daily-chain-base"
          },
          {
            "description": "Récompense quotidienne de type `calendar_hard`.",
            "properties": {
              "description": {
                "$ref": "#/components/schemas/description-localization-object"
              },
              "id": {
                "$ref": "#/components/schemas/daily_chain_id"
              },
              "is_enabled": {
                "$ref": "#/components/schemas/is_enabled"
              },
              "name": {
                "$ref": "#/components/schemas/name-localization-object"
              },
              "order": {
                "$ref": "#/components/schemas/order"
              },
              "steps": {
                "items": {
                  "$ref": "#/components/schemas/modify-daily-chain-step-model"
                },
                "type": "array"
              }
            },
            "required": [
              "name",
              "date_start",
              "steps",
              "is_enabled",
              "type"
            ],
            "type": "object"
          }
        ]
      },
      "update-clan-reward-chain-model": {
        "allOf": [
          {
            "$ref": "#/components/schemas/create-reward-chain-model"
          },
          {
            "description": "Chaîne de récompense de clan.",
            "properties": {
              "clan_type": {
                "$ref": "#/components/schemas/clan_type"
              },
              "popup_header": {
                "$ref": "#/components/schemas/popup_header-two-letter-locale"
              },
              "popup_image_url": {
                "$ref": "#/components/schemas/popup_image_url"
              },
              "popup_instruction": {
                "$ref": "#/components/schemas/popup_instruction-two-letter-locale"
              }
            },
            "required": [
              "name",
              "periods",
              "steps",
              "is_enabled",
              "popup_header",
              "popup_instruction"
            ],
            "type": "object"
          }
        ]
      },
      "update-reward-chain-model": {
        "description": "Chaîne de récompenses.",
        "properties": {
          "attribute_conditions": {
            "$ref": "#/components/schemas/chain_user-attribute_conditions_model-post"
          },
          "description": {
            "$ref": "#/components/schemas/description-localization-object"
          },
          "image_url": {
            "$ref": "#/components/schemas/image_url"
          },
          "is_always_visible": {
            "$ref": "#/components/schemas/chain_is_always_visible"
          },
          "is_enabled": {
            "$ref": "#/components/schemas/is_enabled"
          },
          "is_reset_after_end": {
            "$ref": "#/components/schemas/is_reset_after_end"
          },
          "long_description": {
            "$ref": "#/components/schemas/long-description-localization-object"
          },
          "name": {
            "$ref": "#/components/schemas/name-localization-object"
          },
          "order": {
            "$ref": "#/components/schemas/order"
          },
          "periods": {
            "$ref": "#/components/schemas/periods"
          },
          "recurrent_schedule": {
            "$ref": "#/components/schemas/recurrent_schedule_create_update"
          },
          "steps": {
            "items": {
              "$ref": "#/components/schemas/modify_reward_step"
            },
            "type": "array"
          }
        },
        "required": [
          "name",
          "periods",
          "steps",
          "is_enabled"
        ],
        "type": "object"
      },
      "update-rolling-skippable-daily-chain-model": {
        "allOf": [
          {
            "$ref": "#/components/schemas/rolling-skippable-daily-chain-base"
          },
          {
            "description": "Récompense quotidienne de type `rolling_skippable`.",
            "properties": {
              "description": {
                "$ref": "#/components/schemas/description-localization-object"
              },
              "id": {
                "$ref": "#/components/schemas/daily_chain_id"
              },
              "is_enabled": {
                "$ref": "#/components/schemas/is_enabled"
              },
              "name": {
                "$ref": "#/components/schemas/name-localization-object"
              },
              "order": {
                "$ref": "#/components/schemas/order"
              },
              "steps": {
                "items": {
                  "$ref": "#/components/schemas/modify-daily-chain-step-model"
                },
                "type": "array"
              }
            },
            "required": [
              "name",
              "date_start",
              "steps",
              "is_enabled",
              "type"
            ],
            "type": "object"
          }
        ]
      },
      "update-rolling-unskippable-daily-chain-model": {
        "allOf": [
          {
            "$ref": "#/components/schemas/rolling-unskippable-daily-chain-base"
          },
          {
            "description": "Récompense quotidienne de type `rolling_unskippable`.",
            "properties": {
              "description": {
                "$ref": "#/components/schemas/description-localization-object"
              },
              "id": {
                "$ref": "#/components/schemas/daily_chain_id"
              },
              "is_enabled": {
                "$ref": "#/components/schemas/is_enabled"
              },
              "name": {
                "$ref": "#/components/schemas/name-localization-object"
              },
              "order": {
                "$ref": "#/components/schemas/order"
              },
              "steps": {
                "items": {
                  "$ref": "#/components/schemas/modify-daily-chain-step-model"
                },
                "type": "array"
              }
            },
            "required": [
              "name",
              "date_start",
              "steps",
              "is_enabled",
              "type"
            ],
            "type": "object"
          }
        ]
      },
      "update_step_id": {
        "description": "ID unique de l'étape de la chaîne. Indiquez-le lors de la mise à jour pour conserver la progression de l'utilisateur pour cette étape.",
        "example": 10,
        "minimum": 1,
        "type": [
          "integer",
          "null"
        ]
      },
      "user-attribute_condition_date_model-get": {
        "properties": {
          "attribute": {
            "$ref": "#/components/schemas/user-attribute_conditions_properties_attribute"
          },
          "can_be_missing": {
            "$ref": "#/components/schemas/user-attribute_conditions_properties_can_be_missing"
          },
          "operator": {
            "$ref": "#/components/schemas/user-attribute_conditions_properties_operator_date"
          },
          "type": {
            "$ref": "#/components/schemas/user-attribute_conditions_properties_type-date"
          },
          "value": {
            "$ref": "#/components/schemas/user-attribute_conditions_properties_value"
          }
        },
        "title": "type = date",
        "type": "object"
      },
      "user-attribute_condition_date_model-post": {
        "properties": {
          "attribute": {
            "$ref": "#/components/schemas/user-attribute_conditions_properties_attribute"
          },
          "can_be_missing": {
            "$ref": "#/components/schemas/user-attribute_conditions_properties_can_be_missing"
          },
          "operator": {
            "$ref": "#/components/schemas/user-attribute_conditions_properties_operator_date"
          },
          "type": {
            "$ref": "#/components/schemas/user-attribute_conditions_properties_type-date"
          },
          "value": {
            "$ref": "#/components/schemas/user-attribute_conditions_properties_value"
          }
        },
        "required": [
          "attribute",
          "operator",
          "value",
          "type"
        ],
        "title": "type = date",
        "type": "object"
      },
      "user-attribute_condition_number_model-get": {
        "properties": {
          "attribute": {
            "$ref": "#/components/schemas/user-attribute_conditions_properties_attribute"
          },
          "can_be_missing": {
            "$ref": "#/components/schemas/user-attribute_conditions_properties_can_be_missing"
          },
          "operator": {
            "$ref": "#/components/schemas/user-attribute_conditions_properties_operator_number"
          },
          "type": {
            "$ref": "#/components/schemas/user-attribute_conditions_properties_type-number"
          },
          "value": {
            "$ref": "#/components/schemas/user-attribute_conditions_properties_value"
          }
        },
        "title": "type = number",
        "type": "object"
      },
      "user-attribute_condition_number_model-post": {
        "properties": {
          "attribute": {
            "$ref": "#/components/schemas/user-attribute_conditions_properties_attribute"
          },
          "can_be_missing": {
            "$ref": "#/components/schemas/user-attribute_conditions_properties_can_be_missing"
          },
          "operator": {
            "$ref": "#/components/schemas/user-attribute_conditions_properties_operator_number"
          },
          "type": {
            "$ref": "#/components/schemas/user-attribute_conditions_properties_type-number"
          },
          "value": {
            "$ref": "#/components/schemas/user-attribute_conditions_properties_value"
          }
        },
        "required": [
          "attribute",
          "operator",
          "value",
          "type"
        ],
        "title": "type = number",
        "type": "object"
      },
      "user-attribute_condition_string_model-get": {
        "properties": {
          "attribute": {
            "$ref": "#/components/schemas/user-attribute_conditions_properties_attribute"
          },
          "can_be_missing": {
            "$ref": "#/components/schemas/user-attribute_conditions_properties_can_be_missing"
          },
          "operator": {
            "$ref": "#/components/schemas/user-attribute_conditions_properties_operator_string"
          },
          "type": {
            "$ref": "#/components/schemas/user-attribute_conditions_properties_type-string"
          },
          "value": {
            "$ref": "#/components/schemas/user-attribute_conditions_properties_value"
          }
        },
        "title": "type = string",
        "type": "object"
      },
      "user-attribute_condition_string_model-post": {
        "properties": {
          "attribute": {
            "$ref": "#/components/schemas/user-attribute_conditions_properties_attribute"
          },
          "can_be_missing": {
            "$ref": "#/components/schemas/user-attribute_conditions_properties_can_be_missing"
          },
          "operator": {
            "$ref": "#/components/schemas/user-attribute_conditions_properties_operator_string"
          },
          "type": {
            "$ref": "#/components/schemas/user-attribute_conditions_properties_type-string"
          },
          "value": {
            "$ref": "#/components/schemas/user-attribute_conditions_properties_value"
          }
        },
        "required": [
          "attribute",
          "operator",
          "value",
          "type"
        ],
        "title": "type = string",
        "type": "object"
      },
      "user-attribute_conditions_model-get": {
        "items": {
          "oneOf": [
            {
              "$ref": "#/components/schemas/user-attribute_condition_string_model-get"
            },
            {
              "$ref": "#/components/schemas/user-attribute_condition_number_model-get"
            },
            {
              "$ref": "#/components/schemas/user-attribute_condition_date_model-get"
            }
          ]
        },
        "maxItems": 100,
        "minItems": 1,
        "type": "array"
      },
      "user-attribute_conditions_model-post": {
        "items": {
          "oneOf": [
            {
              "$ref": "#/components/schemas/user-attribute_condition_string_model-post"
            },
            {
              "$ref": "#/components/schemas/user-attribute_condition_number_model-post"
            },
            {
              "$ref": "#/components/schemas/user-attribute_condition_date_model-post"
            }
          ]
        },
        "maxItems": 100,
        "minItems": 1,
        "type": "array"
      },
      "user-attribute_conditions_properties_attribute": {
        "description": "Code d'attribut utilisateur.",
        "maxLength": 255,
        "minLength": 1,
        "pattern": "^[-_.\\d\\w]+$",
        "type": "string"
      },
      "user-attribute_conditions_properties_can_be_missing": {
        "description": "Indique que la condition est remplie même si l'attribut est absent des attributs de l'utilisateur. Passez `true` pour afficher l'objet pour les utilisateurs ne possédant pas cet attribut. Les utilisateurs ayant l'attribut, mais dont la valeur ne correspond pas à celle définie dans la condition ne verront pas l'objet. Si vous passez `false`, les utilisateurs dont l'attribut est manquant ou dont la valeur ne correspond pas à celle spécifiée dans la condition ne verront pas l'objet.",
        "type": "boolean"
      },
      "user-attribute_conditions_properties_operator_date": {
        "description": "Type of operation performed by condition. For <code>date</code> attribute type.\n\nPossible values:\n- `eq` — Equals\n- `ne` — Not equals\n- `lt` — Earlier\n- `gt` — Later\n- `le` — Earlier or equals\n- `ge` — Later or equals",
        "enum": [
          "eq",
          "ne",
          "lt",
          "gt",
          "le",
          "ge"
        ],
        "type": "string"
      },
      "user-attribute_conditions_properties_operator_number": {
        "description": "Type of operation performed by condition. For <code>number</code> attribute type.\n\nPossible values:\n- `eq` — Equals\n- `ne` — Not equals\n- `gt` — Greater\n- `ge` — Greater or equals\n- `lt` — Less\n- `le` — Less or equals",
        "enum": [
          "eq",
          "ne",
          "gt",
          "ge",
          "lt",
          "le"
        ],
        "type": "string"
      },
      "user-attribute_conditions_properties_operator_string": {
        "description": "Type of operation performed by condition. For <code>string</code> attribute type.\n\nPossible values:\n- `eq` — Equals\n- `ne` — Not equals",
        "enum": [
          "eq",
          "ne"
        ],
        "type": "string"
      },
      "user-attribute_conditions_properties_type-date": {
        "description": "Type d'attribut utilisateur.",
        "enum": [
          "date"
        ],
        "type": "string"
      },
      "user-attribute_conditions_properties_type-number": {
        "description": "Type d'attribut utilisateur.",
        "enum": [
          "number"
        ],
        "type": "string"
      },
      "user-attribute_conditions_properties_type-string": {
        "description": "Type d'attribut utilisateur.",
        "enum": [
          "string"
        ],
        "type": "string"
      },
      "user-attribute_conditions_properties_value": {
        "description": "Valeur de la condition à laquelle la valeur de l'attribut utilisateur sera comparée. Le type dépend du type d'attribut.",
        "maxLength": 255,
        "type": "string"
      },
      "user-attribute_personalized-catalog": {
        "properties": {
          "attribute_conditions": {
            "$ref": "#/components/schemas/personalized-catalog_user-attribute_conditions_model-get"
          },
          "is_enabled": {
            "description": "Si la règle est activée.",
            "type": "boolean"
          },
          "is_satisfied_for_unauth": {
            "description": "Détermine l'affichage de l'objet aux utilisateurs non autorisés. Si `true`, l'objet s'affiche à l'utilisateur non autorisé sans tenir compte des règles d'affichage du catalogue. La valeur par défaut est `false`.",
            "type": "boolean"
          },
          "items": {
            "items": {
              "description": "Objets qui seront affichés à l'utilisateur si les valeurs de ses attributs répondent aux conditions.",
              "properties": {
                "bundle_type": {
                  "description": "Type de lot. Renvoyé si le type d'objet est un lot.",
                  "enum": [
                    "standard",
                    "virtual_currency_package"
                  ],
                  "type": "string"
                },
                "item_id": {
                  "description": "ID de l'objet",
                  "type": "number"
                },
                "name": {
                  "description": "Nom de l'objet.",
                  "type": "string"
                },
                "sku": {
                  "description": "UGS de l'objet.",
                  "type": "string"
                },
                "type": {
                  "description": "Type d'objet.",
                  "enum": [
                    "virtual_good",
                    "virtual_currency",
                    "bundle",
                    "physical_good",
                    "unit"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "name": {
            "description": "Nom lisible d'une règle. Utilisé pour afficher une règle dans le Compte éditeur.",
            "type": "string"
          },
          "rule_id": {
            "description": "ID de règle.",
            "type": "number"
          }
        },
        "required": [
          "rule_id",
          "name",
          "is_enabled",
          "attribute_conditions",
          "items"
        ],
        "type": "object"
      },
      "user-attribute_personalized-catalog-body": {
        "properties": {
          "attribute_conditions": {
            "$ref": "#/components/schemas/personalized-catalog_user-attribute_conditions_model-post"
          },
          "is_enabled": {
            "description": "Si la règle est activée.",
            "type": "boolean"
          },
          "is_satisfied_for_unauth": {
            "description": "Détermine l'affichage de l'objet aux utilisateurs non autorisés. Si `true`, l'objet s'affiche à l'utilisateur non autorisé sans tenir compte des règles d'affichage du catalogue. La valeur par défaut est `false`.",
            "type": "boolean"
          },
          "items": {
            "items": {
              "oneOf": [
                {
                  "description": "Objets qui sont affichés à l'utilisateur si les valeurs de ses attributs répondent aux conditions.",
                  "properties": {
                    "item_id": {
                      "description": "ID de l'objet",
                      "type": "number"
                    }
                  },
                  "required": [
                    "item_id"
                  ],
                  "type": "object"
                },
                {
                  "description": "Objets qui sont affichés à l'utilisateur si les valeurs de ses attributs répondent aux conditions.",
                  "properties": {
                    "sku": {
                      "description": "UGS de l'objet.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "sku"
                  ],
                  "type": "object"
                }
              ]
            },
            "maxItems": 100,
            "minItems": 1,
            "type": "array"
          },
          "name": {
            "description": "Nom lisible d'une règle. Utilisé pour afficher une règle dans le Compte éditeur.",
            "maxLength": 255,
            "minLength": 1,
            "pattern": "^\\S",
            "type": "string"
          }
        },
        "type": "object"
      },
      "user-attribute_personalized-catalog-body-required": {
        "properties": {
          "attribute_conditions": {
            "$ref": "#/components/schemas/personalized-catalog_user-attribute_conditions_model-post"
          },
          "is_enabled": {
            "description": "Si la règle est activée.",
            "type": "boolean"
          },
          "is_satisfied_for_unauth": {
            "description": "Détermine l'affichage de l'objet aux utilisateurs non autorisés. Si `true`, l'objet s'affiche à l'utilisateur non autorisé sans tenir compte des règles d'affichage du catalogue. La valeur par défaut est `false`.",
            "type": "boolean"
          },
          "items": {
            "items": {
              "oneOf": [
                {
                  "description": "Objets qui sont affichés à l'utilisateur si les valeurs de ses attributs répondent aux conditions.",
                  "properties": {
                    "item_id": {
                      "description": "ID de l'objet",
                      "type": "number"
                    }
                  },
                  "required": [
                    "item_id"
                  ],
                  "type": "object"
                },
                {
                  "description": "Objets qui sont affichés à l'utilisateur si les valeurs de ses attributs répondent aux conditions.",
                  "properties": {
                    "sku": {
                      "description": "UGS de l'objet.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "sku"
                  ],
                  "type": "object"
                }
              ]
            },
            "maxItems": 100,
            "minItems": 1,
            "type": "array"
          },
          "name": {
            "description": "Nom lisible d'une règle. Utilisé pour afficher une règle dans le Compte éditeur.",
            "maxLength": 255,
            "minLength": 1,
            "pattern": "^\\S",
            "type": "string"
          }
        },
        "required": [
          "name",
          "is_enabled",
          "attribute_conditions",
          "items"
        ],
        "type": "object"
      },
      "user-attribute_personalized-catalog_all": {
        "properties": {
          "is_enabled": {
            "description": "Si la règle est activée.",
            "type": "boolean"
          },
          "is_satisfied_for_unauth": {
            "description": "Détermine l'affichage de l'objet aux utilisateurs non autorisés. Si `true`, l'objet s'affiche à l'utilisateur non autorisé sans tenir compte des règles d'affichage du catalogue. La valeur par défaut est `false`.",
            "type": "boolean"
          },
          "name": {
            "description": "Nom lisible d'une règle. Utilisé pour afficher une règle dans le Compte éditeur.",
            "type": "string"
          },
          "rule_id": {
            "description": "ID de règle.",
            "type": "number"
          }
        },
        "required": [
          "rule_id",
          "name",
          "is_enabled"
        ],
        "type": "object"
      },
      "value-external_id": {
        "description": "ID unique de la valeur d'un attribut. Le `external_id` ne peut comprendre que des caractères alphanumériques latins minuscules, des tirets et des tirets bas.",
        "example": "attribute_value",
        "maxLength": 255,
        "minLength": 1,
        "pattern": "^[-_.\\d\\w]+$",
        "type": "string"
      },
      "value-is_free": {
        "default": false,
        "description": "Détermine la gratuité de l'objet.",
        "example": false,
        "type": "boolean"
      },
      "value-point-amount": {
        "description": "Montant des points de valeur.",
        "type": "integer"
      },
      "value-point-description": {
        "description": "Description du point de valeur.",
        "type": [
          "string",
          "null"
        ]
      },
      "value-point-long-description": {
        "description": "Description détaillée du point de valeur.",
        "type": [
          "string",
          "null"
        ]
      },
      "value-point-name": {
        "description": "Nom du point de valeur.",
        "type": "string"
      },
      "value-point-sku": {
        "description": "ID unique du point de valeur.",
        "type": "string"
      }
    },
    "securitySchemes": {
      "AuthForCart": {
        "description": "The `AuthForCart` authentication scheme is used for cart purchases and supports two modes:\n\n1. Authentication with a user's JWT. The token is passed in the Authorization header in the following format: `Authorization: Bearer <user_JWT>`, where `<user_JWT>` is the user token. The token identifies the user and provides access to personalized data.\n\nAlternatively, you can use a [token for opening the payment UI](/fr/api/pay-station/token/create-token).\n\n2. Simplified mode without `Authorization` header. This mode is used only for unauthorized users and can be applied only for [selling game keys](/fr/doc/buy-button/how-to/set-up-authentication/#guides_buy_button_selling_items_not_authenticated_users). Instead of a token, the request must include the following headers:\n* `x-unauthorized-id` with a request ID\n* `x-user` with the user’s email address encoded in Base64.",
        "scheme": "bearer",
        "type": "http"
      },
      "XsollaLoginUserJWT": {
        "bearerFormat": "JWT",
        "description": "Client-side calls use the `XsollaLoginUserJWT` authentication scheme. The request must include the user's JWT in the `Authorization` header in the following format: Bearer `<user_JWT>`. The token identifies the user and provides access to personalized data. For details on how to create a token, refer to the [Xsolla Login API documentation](/fr/api/login/authentication-schemes#getting-user-token).\n\nAlternatively, you can use a [token for opening the payment UI](/fr/api/pay-station/token/create-token).",
        "scheme": "bearer",
        "type": "http"
      },
      "basicAuth": {
        "description": "Server-side calls use the `basicAuth` authentication scheme. All requests to API must\ncontain the `Authorization: Basic <your_authorization_basic_key>`\nheader, where `your_authorization_basic_key` is the `project_id:api_key`\npair encoded according to the Base64 standard.\n\nYou can use `merchant_id` instead of `project_id` if you need. It doesn't affect functionality.\n\nGo to [Publisher Account](https://publisher.xsolla.com/) to find values of the parameters:\n\n* `merchant_id` is shown:\n  * In the **Company settings > Company** section\n  * In the URL in the browser address bar on any Publisher Account page. The URL has the following format: `https://publisher.xsolla.com/<merchant_id>`.\n* `api_key` is shown in Publisher Account only once when it is created and must be stored on your side. You can create a new key in the following section:\n  * [Company settings > API keys](https://publisher.xsolla.com/0/settings/api_key)\n  * [Project settings > API keys](https://publisher.xsolla.com/0/projects/0/edit/api_key)\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\nIf a required API call doesn't include the `project_id` path parameter, use an API key that is valid across all company projects for authorization.\n{% /html %}\n\n* `project_id` is shown:\n  * In Publisher Account next to the name of the project.\n  * In the URL in the browser address bar when working on project in Publisher Account. The URL has the following format: `https://publisher.xsolla.com/<merchant_id>/projects/<project_id>`.\n\nFor more information about working with API keys, see the [API reference](https://developers.xsolla.com/fr/api/getting-started/#api_keys_overview).",
        "scheme": "basic",
        "type": "http"
      },
      "basicMerchantAuth": {
        "description": "Server-side calls use the `basicMerchantAuth` authentication scheme.  All requests to API must\ncontain the `Authorization: Basic <your_authorization_basic_key>`\nheader, where `your_authorization_basic_key` is the `merchant_id:api_key`\npair encoded according to the Base64 standard.\n\nGo to [Publisher Account](https://publisher.xsolla.com/) to find values of the parameters:\n\n* `merchant_id` is shown:\n  * In the **Company settings > Company** section\n  * In the URL in the browser address bar on any Publisher Account page. The URL has the following format: `https://publisher.xsolla.com/<merchant_id>`\n* `api_key` is shown in Publisher Account only once when it is created and must be stored on your side. You can create a new key in the [Company settings > API keys](https://publisher.xsolla.com/0/settings/api_key) section.\n\nFor more information about working with API keys, see the [API reference](https://developers.xsolla.com/fr/api/getting-started/#api_keys_overview).",
        "scheme": "basic",
        "type": "http"
      }
    }
  },
  "info": {
    "description": "# Overview\n\n* **Version:** 2.0.0\n* **Servers**: `https://store.xsolla.com/api`\n* **[Contact Us by Email](mailto:integration@xsolla.com)**\n* **Contact URL:** https://xsolla.com/\n* **Required TLS version:** 1.2\n\nLiveOps is a toolkit for driving ongoing player engagement through promotions and personalized offers.\n\nUse the API to manage the following features:\n\n* **Promotions** — create and manage coupons, promo codes, discounts, and bonus campaigns.\n* **Personalization** — specify the conditions for displaying the item catalog and applying promotions only for certain authorized users.\n* **Promotion limits** — set a limit on how many times a promotion can be used by a user and configure scheduled resets for these limits.\n* **Reward chains & Value points** — configure reward progressions tied to value point accumulation.\n* **Daily chains** — set up recurring daily rewards to motivate regular logins.\n* **Offer chains** — build sequential purchase offers with per-step pricing and free reward options.\n* **Upsell** — a sales method in which the user is offered to buy an item with additional value.\n\n## API calls\n\nThe API is divided into the **following groups**:\n\n* **<nt>Admin</nt>** — calls for creating, updating, activating, and deleting campaigns and chain configurations. Authenticated via [basic access authentication](https://developers.xsolla.com/fr/payment-ui-and-flow/payment-ui/how-to-get-payment-token/#payments_solution_get_user_auth_token_basic_auth) with your merchant or project credentials.\n* **<nt>Client</nt>** — calls for retrieving available promotions, getting active chains, redeeming codes, and claiming rewards on behalf of authenticated end users. Authenticated via user JWT.\n\n# Authentication\n\nAPI calls require authentication either on behalf of a user or on behalf of a project. The authentication scheme used is specified in the **Security** section in the description of each call.\n\n## Authentication using user's JWT\n\nUser's JWT authentication is used when a request is sent from a browser, mobile application, or game. By default, the `XsollaLoginUserJWT` scheme is applied. For details on how to create a token, see the [Xsolla Login API documentation](/fr/api/login/authentication-schemes#getting-user-token).\n\nThe token is passed in the `Authorization` header in the following format: `Authorization: Bearer <user_JWT>`, where `<user_JWT>` is the user token. The token identifies the user and provides access to personalized data.\n\nAlternatively, you can use a [token for opening the payment UI](/fr/api/pay-station/token/create-token).\n\n## Basic HTTP authentication\n\nBasic HTTP authentication is used for server-to-server interactions, when an API call is sent directly from your server rather than from a user's browser or mobile application. HTTP Basic authentication with an [API key](/fr/api/getting-started/#api_keys_overview) is typically used.\n\n<div class=\"note\"><b>Note</b><br><br>The API key is confidential and must not be stored or used in client applications.</div>\n\nWith basic server-side authentication, all API requests must include the following header:\n\n- for `basicAuth` — `Authorization: Basic <your_authorization_basic_key>`, where `your_authorization_basic_key` is the `project_id:api_key` pair encoded in Base64\n- for `basicMerchantAuth` — `Authorization: Basic <your_authorization_basic_key>`, where `your_authorization_basic_key` is the `merchant_id:api_key` pair encoded in Base64\n\nYou can find the parameter values in [Publisher Account](https://publisher.xsolla.com/):\n\n- `merchant_id` is displayed:\n  - In **Company settings > Company**.\n  - In the URL in the browser address bar on any Publisher Account page. The URL has the following format: `https://publisher.xsolla.com/<merchant_id>`.\n- `project_id` is displayed:\n  - Next to the project name in Publisher Account.\n  - In the URL in the browser address bar when working on a project in Publisher Account. The URL has the following format: `https://publisher.xsolla.com/<merchant_id>/projects/<project_id>`.\n- `api_key` is shown in Publisher Account only at the time of creation and must be stored securely on your side. You can create an API key in the following sections:\n  - [Company settings > API keys](https://publisher.xsolla.com/0/settings/api_key)\n  - [Project settings > API key](https://publisher.xsolla.com/0/projects/0/edit/api_key)\n\n<div class=\"notice\"><b>Notice</b><br><br>If a required API call doesn't include the <code>project_id</code> path parameter, use an API key that is valid across all company projects for authorization.</div>\n\nFor more information about working with API keys, see the [API references](/fr/api/getting-started/#api_keys_overview).\n\n## Authentication with guest access support\n\nThe `AuthForCart` authentication scheme is used for cart purchases and supports two modes:\n\n1. **Authentication with a user's JWT.** The token is passed in the `Authorization` header in the following format: `Authorization: Bearer <user_JWT>`, where `<user_JWT>` is the user token. The token identifies the user and provides access to personalized data. Alternatively, you can use a [token for opening the payment UI](/fr/api/pay-station/token/create-token).\n\n2. **Simplified mode without Authorization header.** This mode is used only for unauthorized users and can be applied only for [game key sales](/fr/doc/buy-button/how-to/set-up-authentication/#guides_buy_button_selling_items_not_authenticated_users). Instead of a token, the request must include the following headers:\n   - `x-unauthorized-id` with a request ID\n   - `x-user` with the user's email address encoded in Base64\n\n## Useful links\n\n- [API calls by interaction model](https://developers.xsolla.com/fr/api/catalog/)\n- [Endpoint types](https://developers.xsolla.com/fr/api/catalog/)\n- [Errors handling](https://developers.xsolla.com/fr/api/catalog/)\n- [API keys](https://developers.xsolla.com/fr/api/catalog/)\n\n# Core entity structure\n\nItems of all types (virtual items, bundles, virtual currency, and keys) use a similar data structure. Understanding the basic structure simplifies working with the API and helps you navigate the documentation more easily.\n\n<div class=\"note\"><b>Note</b><br><br>Some calls may include additional fields but they don't change the basic structure.</div>\n\n**Identification**\n\n- `merchant_id` — company ID in [Publisher Account](https://publisher.xsolla.com/)\n- `project_id` — project ID in Publisher Account\n- `sku` — item SKU, unique within the project\n\n**Store display**\n\n- `name` — item name\n- `description` — item description\n- `image_url` — image URL\n- `is_enabled` — item availability\n- `is_show_in_store` — whether the item is displayed in the catalog\n\nFor more information about managing item availability in the catalog, see the [documentation](/fr/items-catalog/catalog-features/items-availability/).\n\n**Organization**\n\n- `type` — item type, for example, a virtual item (`virtual_item`) or bundle (`bundle`)\n- `groups` — groups the item belongs to\n- `order` — display order in the catalog\n\n**Sale conditions**\n\n- `prices` — prices in real or virtual currency\n- `limits` — purchase limits\n- `periods` — availability periods\n- `regions` — regional restrictions\n\n**Example of core entity structure:**\n\n```json\n{\n  \"attributes\": [],\n  \"bundle_type\": \"virtual_currency_package\",\n  \"content\": [\n    {\n      \"description\": {\n        \"en\": \"Main in-game currency\"\n      },\n      \"image_url\": \"https://.../image.png\",\n      \"name\": {\n        \"en\": \"Crystals\",\n        \"de\": \"Kristalle\"\n      },\n      \"quantity\": 500,\n      \"sku\": \"com.xsolla.crystal_2\",\n      \"type\": \"virtual_currency\"\n    }\n  ],\n  \"description\": {\n    \"en\": \"Crystals x500\"\n  },\n  \"groups\": [],\n  \"image_url\": \"https://.../image.png\",\n  \"is_enabled\": true,\n  \"is_free\": false,\n  \"is_show_in_store\": true,\n  \"limits\": {\n    \"per_item\": null,\n    \"per_user\": null,\n    \"recurrent_schedule\": null\n  },\n  \"long_description\": null,\n  \"media_list\": [],\n  \"name\": {\n    \"en\": \"Medium crystal pack\"\n  },\n  \"order\": 1,\n  \"periods\": [\n    {\n      \"date_from\": null,\n      \"date_until\": \"2020-08-11T20:00:00+03:00\"\n    }\n  ],\n  \"prices\": [\n    {\n      \"amount\": 20,\n      \"country_iso\": \"US\",\n      \"currency\": \"USD\",\n      \"is_default\": true,\n      \"is_enabled\": true\n    }\n  ],\n  \"regions\": [],\n  \"sku\": \"com.xsolla.crystal_pack_2\",\n  \"type\": \"bundle\",\n  \"vc_prices\": []\n}\n```\n\n# Basic purchase flow\n\nThe Xsolla API allows you to implement in-game store logic, including retrieving the item catalog, managing the cart, creating orders, and tracking their status. Depending on the integration scenario, API calls are divided into **Admin** and **Catalog** subsections, which use different [authentication schemes](/fr/api/catalog/section/authentication).\n\nThe following example shows a basic flow for setting up and operating a store, from item creation to purchase.\n\n## Create items and groups (Admin)\n\nCreate an item catalog for your store, such as virtual items, bundles, or virtual currency.\n\nExample API calls:\n- [Create virtual item](/fr/api/catalog/virtual-items-currency-admin/admin-create-virtual-item)\n- [Create bundle](/fr/api/catalog/bundles-admin/admin-create-bundle)\n- [Create virtual currency](/fr/api/catalog/virtual-items-currency-admin/admin-create-virtual-currency)\n\n## Set up promotions, chains, and limits (Admin)\n\nConfigure user acquisition and monetization tools, such as discounts, bonuses, daily rewards, or offer chains.\n\nExample API calls:\n- [Create bonus promotion](/fr/api/liveops/promotions-bonuses/create-bonus-promotion)\n- [Create daily reward](/fr/api/liveops/daily-chain-admin/admin-create-daily-chain)\n- [Create unique catalog offer promotion](/fr/api/liveops/promotions-unique-catalog-offers/admin-create-unique-catalog-offer)\n\n## Get item information (Client)\n\nConfigure item display in your application.\n\n<div class=\"notice\">\n  <b>Notice</b><br><br>\n    Do not use API calls from the Admin subsection to build a user catalog. These API calls have <a href=\"https://developers.xsolla.com/fr/api/getting-started/#api_rate_limits\" target=\"_blank\">rate limits</a> and aren't intended for user traffic.\n</div>\n<br>\n\nExample API calls:\n- [Get virtual items list](/fr/api/catalog/virtual-items-currency-catalog/get-virtual-items)\n- [Get item group list](/fr/api/catalog/virtual-items-currency-catalog/get-item-groups)\n- [Get list of bundles](/fr/api/catalog/bundles-catalog/get-bundle-list)\n- [Get sellable items list](/fr/api/catalog/common-catalog/get-sellable-items)\n\n<div class=\"note\">\n  <b>Note</b><br><br>\n    By default, catalog API calls return items that are currently available in the store at the time of the request. To retrieve items that are not yet available or are no longer available, include the parameter <code>\"show_inactive_time_limited_items\": 1</code> in the catalog request.\n</div>\n\n## Sell items\n\nYou can sell items using the following methods:\n- Fast purchase — sell one SKU multiple times.\n- Cart purchase — the user adds items to the cart, removes items, and updates quantities within a single order.\n\nIf an item is purchased using virtual currency instead of real money, use the [Create order with specified item purchased by virtual currency](/fr/api/catalog/virtual-payment/create-order-with-item-for-virtual-currency) API call. The payment UI is not required, as the charge is processed when the API call is executed.\n\nFor free item purchase, use the [Create order with specified free item](/fr/api/catalog/free-item/create-free-order-with-item) API call or the [Create order with free cart](/fr/api/catalog/free-item/create-free-order) API call. The payment UI is not required — the order is immediately set to the <code>done</code> status.\n\n### Fast purchase\n\nUse the client-side API call to [create an order with a specified item](/fr/api/catalog/payment-client-side/create-order-with-item). The call returns a token used to open the payment UI.\n\n<div class=\"note\">\n  <b>Note</b><br><br>\n    Discount information is available to the user only in the payment UI. Promo codes are not supported.\n</div>\n\n### Cart purchase\n\nCart setup and purchase can be performed on the client or on the server side.\n\n**Set up and purchase a cart on the client**\n\nImplement the logic of adding and removing items by yourself. Before calling the API for setting up a cart, you will not have information about which promotions will be applied to the purchase. This means that the total cost and details of the added bonus items will not be known.\n\nImplement the following cart logic:\n1. After the player has filled a cart, use the [Fill cart with items](/fr/api/shop-builder/operation/cart-fill/) API call. The call returns the current information about the selected items (prices before and after discounts, bonus items).\n2. Update the cart contents based on user actions:\n   - To add an item or change item quantity, use the [Update cart item by cart ID](/fr/api/shop-builder/operation/put-item-by-cart-id/) API call.\n   - To remove an item, use the [Delete cart item by cart ID](/fr/api/shop-builder/operation/delete-item-by-cart-id/) API call.\n\n<div class=\"note\">\n  <b>Note</b><br><br>\n    To get the current status of the cart, use the Get current user's cart API call.\n</div>\n\n3. Use the [Create order with all items from current cart](/fr/api/shop-builder/operation/create-order/) API call. The call returns the order ID and payment token. The newly created order is set to <code>new</code> status by default.\n\n**Set up and purchase a cart on the server**\n\nThis setup option may take longer for setting the cart up, since each change to the cart must be accompanied by API calls.\n\nImplement the following cart logic:\n1. After the player has filled a cart, use the [Fill cart with items](/fr/api/catalog/cart-server-side) API call. The call returns current information about the selected items (prices before and after discounts, bonus items).\n2. Use the [Create order with all items from current cart](/fr/api/shop-builder/operation/create-order/) API call. The call returns the order ID and payment token. The newly created order is set to <code>new</code> status by default.\n\n## Open payment UI\n\nUse the returned token to open the payment UI in a new window. Other ways to open the payment UI are described in the [documentation](/fr/payment-ui-and-flow/payment-ui/how-to-open-payment-ui/#open_payment_ui).\n\n| Action                          | Endpoint                                                                  |\n|:--------------------------------|:--------------------------------------------------------------------------|\n| Open in production environment. | <code>https://secure.xsolla.com/paystation4/?token={token}</code>         |\n| Open in sandbox mode.           | <code>https://sandbox-secure.xsolla.com/paystation4/?token={token}</code> |\n\n<div class=\"note\">\n  <b>Note</b><br><br>\n    Use sandbox mode during development and testing. Test purchases don't charge real accounts. You can use <a href=\"https://developers.xsolla.com/fr/dev-resources/testing/test-cards/\">test bank cards</a>.\n\n    After the first real payment is made, a strict sandbox payment policy takes effect. A payment in sandbox mode is available only to users specified in [Publisher Account > Company settings > Users](https://publisher.xsolla.com/0/settings/users).\n\n    Buying virtual currency and items for real currency is possible only after signing a license agreement with Xsolla. To do this, in [Publisher Account](https://publisher.xsolla.com/), go to **Agreements & Taxes > Agreements**, complete the agreement form, and wait for confirmation. It may take up to 3 business days to review the agreement.\n</div>\n\nTo enable or disable sandbox mode, change the value of the `sandbox` parameter in the request for fast purchase and cart purchase. Sandbox mode is off by default.\n\nPossible order statuses:\n- `new` — order created\n- `paid` — payment received\n- `done` — item delivered\n- `canceled` — order canceled\n- `expired` — order expired\n\nTrack order status using one of the following methods:\n- [webhooks configured on your server](/fr/virtual-goods/own-ui/server-side-token-generation/set-up-order-tracking/#payments_integration_order_tracking)\n- [short-polling](/fr/virtual-goods/own-ui/client-side-token-generation/set-up-order-tracking/#guides_shop_builder_integrate_store_get_order_status_via_short_polling)\n- [WebSocket API](/fr/virtual-goods/own-ui/client-side-token-generation/set-up-order-tracking/#guides_shop_builder_integrate_store_get_order_status_via_websocket_api)\n\n## Useful links\n\n- Authentication\n- [API calls by interaction model](/fr/api/catalog/section/authentication)\n- [Payment testing](/fr/dev-resources/testing/general-info/#general_overview)\n- [Set up order status tracking](/fr/virtual-goods/own-ui/client-side-token-generation/set-up-order-tracking/?link=200-api#payments_integration_order_tracking)\n- [Webhooks](/fr/webhooks/overview)\n- [Rate limits](/fr/api/login/rate-limits)\n- [Errors handling](/fr/api/getting-started/#api_errors_handling)\n- [API keys](/fr/api/getting-started/#api_keys_overview)\n\n# Pagination\n\nAPI calls that return large sets of records (for example, when building a catalog) return data in pages. Pagination is a mechanism that limits the number of items returned in a single API response and allows you to retrieve subsequent pages sequentially.\n\nUse the following parameters to control the number of returned items:\n\n- `limit` — number of items per page\n- `offset` — index of the first item on the page (numbering starts from 0)\n- `has_more` — indicates whether another page is available\n- `total_items_count` — total number of items\n\nExample request:\n\n```\nGET /items?limit=20&offset=40\n```\n\nResponse example:\n\n```json\n{\n  \"items\": [...],\n  \"has_more\": true,\n  \"total_items_count\": 135\n}\n```\n\nIt is recommended to send subsequent requests until the response returns `has_more = false`.\n\n# Date and time format\n\nDates and time values are passed in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.\n\nThe following are supported:\n\n- UTC offset\n- `null` value when there is no time restriction for displaying an item\n- [Unix timestamp](https://www.unixtimestamp.com/) (in seconds) used in some fields\n\nFormat: `YYYY-MM-DDTHH:MM:SS±HH:MM`\n\nExample: `2026-03-16T10:00:00+03:00`\n\n# Localization\n\nXsolla supports localization of user-facing fields such as item name and description. Localized values are passed as an object where the language code is used as the key. The full list of supported languages is available in the [documentation](/fr/doc/shop-builder/references/supported-languages/).\n\n**Supported fields**\n\nLocalization can be specified for the following parameters:\n\n- `name`\n- `description`\n- `long_description`\n\n**Locale format**\n\nThe locale key can be specified in one of the following formats:\n\n- Two-letter language code: `en`, `ru`\n- Five-letter language code: `en-US`, `ru-RU`, `de-DE`\n\n**Examples**\n\nExample with a two-letter language code:\n\n```json\n{\n  \"name\": {\n    \"en\": \"Starter Pack\",\n    \"ru\": \"Стартовый набор\"\n  }\n}\n```\n\nExample with a five-letter language code:\n\n```json\n{\n  \"description\": {\n    \"en-US\": \"Premium bundle\",\n    \"de-DE\": \"Premium-Paket\"\n  }\n}\n```\n\n# Error response format\n\nIf an error occurs, the API returns an HTTP status and a JSON response body. The full list of store-related errors is available in the [documentation](/fr/dev-resources/references/errors/store-errors/).\n\n**Response example:**\n\n```json\n{\n  \"errorCode\": 1102,\n  \"errorMessage\": \"Validation error\",\n  \"statusCode\": 422,\n  \"transactionId\": \"c9e1a...\"\n}\n```\n\n- `errorCode` — error code.\n- `errorMessage` — short error description.\n- `statusCode` — HTTP response status.\n- `transactionId` — request ID. Returned only in some cases.\n- `errorMessageExtended` — additional error details, such as request parameters. Returned only in some cases.\n\n**Extended response example:**\n\n```json\n{\n  \"errorCode\": 7001,\n  \"errorMessage\": \"Chain not found\",\n  \"errorMessageExtended\": {\n    \"chain_id\": \"test_chain_id\",\n    \"project_id\": \"test_project_id\",\n    \"step_number\": 2\n  },\n  \"statusCode\": 404\n}\n```\n\n**Common HTTP status codes**\n\n- `400` — invalid request\n- `401` — authentication error\n- `403` — insufficient permissions\n- `404` — resource not found\n- `422` — validation error\n- `429` — rate limit exceeded\n\n**Recommendations**\n\n- Handle the HTTP status and the response body together.\n- Use `errorCode` to process errors related to application logic.\n- Use `transactionId` to identify requests more quickly when analyzing errors.",
    "title": "LiveOps API",
    "version": "2.0.0"
  },
  "openapi": "3.1.0",
  "paths": {
    "/v2/project/{project_id}/admin/code/limit/coupon/external_id/{external_id}": {
      "get": {
        "description": "Récupère le nombre restant de fois que les codes peuvent être utilisés. Pour filtrer les codes, utilisez le paramètre de requête `codes`.\n\nPour configurer la limite de codes elle-même, accédez à la section Administrateur :\n* [Codes promo](https://developers.xsolla.com/fr/api/shop-builder/tag/promotions-coupons/)",
        "operationId": "get-coupon-code-limit",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/external_id-promotion-path-param"
          },
          {
            "$ref": "#/components/parameters/codes-query-param"
          },
          {
            "$ref": "#/components/parameters/limit-query-param"
          },
          {
            "$ref": "#/components/parameters/offset-query-param"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/200-admin-get-code-coupon-limits"
          },
          "401": {
            "$ref": "#/components/responses/Common_401-invalid-basic-auth"
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "Coupon not found": {
                    "$ref": "#/components/examples/404-coupon-not-found"
                  }
                },
                "schema": {
                  "properties": {
                    "errorCode": {
                      "type": "integer"
                    },
                    "errorMessage": {
                      "type": "string"
                    },
                    "statusCode": {
                      "type": "integer"
                    },
                    "transactionId": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Objet non trouvé."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "errorCode": {
                      "type": "integer"
                    },
                    "errorMessage": {
                      "type": "string"
                    },
                    "errorMessageExtended": {
                      "type": "array"
                    },
                    "statusCode": {
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Demande non valide."
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Lire les limites pour les code de coupon uniques",
        "tags": [
          "promotions-coupons"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v2/project/{project_id}/admin/code/limit/promocode/external_id/{external_id}": {
      "get": {
        "description": "Récupère le nombre restant de fois que les codes peuvent être utilisés. Pour filtrer les codes, utilisez le paramètre de requête `codes`.\n\nPour configurer la limite de codes elle-même, accédez à la section Administrateur :\n* [Codes promo](https://developers.xsolla.com/fr/api/shop-builder/tag/promotions-promo-codes/)",
        "operationId": "get-promo-code-code-limit",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/external_id-promotion-path-param"
          },
          {
            "$ref": "#/components/parameters/codes-query-param"
          },
          {
            "$ref": "#/components/parameters/limit-query-param"
          },
          {
            "$ref": "#/components/parameters/offset-query-param"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/200-admin-get-code-promo-code-limits"
          },
          "401": {
            "$ref": "#/components/responses/Common_401-invalid-basic-auth"
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "Promo code not found": {
                    "$ref": "#/components/examples/404-coupon-not-found"
                  }
                },
                "schema": {
                  "properties": {
                    "errorCode": {
                      "type": "integer"
                    },
                    "errorMessage": {
                      "type": "string"
                    },
                    "statusCode": {
                      "type": "integer"
                    },
                    "transactionId": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Objet non trouvé."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "errorCode": {
                      "type": "integer"
                    },
                    "errorMessage": {
                      "type": "string"
                    },
                    "errorMessageExtended": {
                      "type": "array"
                    },
                    "statusCode": {
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Demande non valide."
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Lire les limites pour les codes promo",
        "tags": [
          "promotions-promo-codes"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v2/project/{project_id}/admin/coupon/{external_id}/activate": {
      "put": {
        "description": "Active une promotion par coupon.\nPar défaut, une promotion par coupon créée est désactivée.\nPour permettre l'échange de coupons, vous devez l'activer.\nUtilisez cet endpoint pour activer une promotion par coupon.",
        "operationId": "activate-coupon",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/external_id-promotion-path-param"
          }
        ],
        "responses": {
          "204": {
            "description": "Le coupon a été activé avec succès."
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-basic-auth"
          },
          "404": {
            "$ref": "#/components/responses/Promotions_404-admin-coupon"
          },
          "422": {
            "$ref": "#/components/responses/Promotions_422-admin-promotion-error"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Activer une promotion par coupon",
        "tags": [
          "promotions-coupons"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v2/project/{project_id}/admin/coupon/{external_id}/code": {
      "get": {
        "description": "Récupère les codes de coupon.",
        "operationId": "get-coupon-codes",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/external_id-promotion-path-param"
          },
          {
            "$ref": "#/components/parameters/limit-query-param"
          },
          {
            "$ref": "#/components/parameters/offset-query-param"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Promotions_200-coupon-code-list"
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-basic-auth"
          },
          "404": {
            "$ref": "#/components/responses/Promotions_404-admin-coupon"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Lire les codes de coupon",
        "tags": [
          "promotions-coupons"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      },
      "post": {
        "description": "Crée un code de coupon.",
        "operationId": "create-coupon-code",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/external_id-promotion-path-param"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/Promotions_create-coupon-promocode-code"
        },
        "responses": {
          "201": {
            "$ref": "#/components/responses/Promotions_201-coupon-promocode-code-created"
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-basic-auth"
          },
          "404": {
            "$ref": "#/components/responses/Promotions_404-admin-coupon"
          },
          "422": {
            "$ref": "#/components/responses/Promotions_422-coupon-promocode-same-code-exists"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Créer un code de coupon",
        "tags": [
          "promotions-coupons"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v2/project/{project_id}/admin/coupon/{external_id}/code/generate": {
      "put": {
        "description": "Génère des codes de coupon.",
        "operationId": "generate-coupon-codes",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/external_id-promotion-path-param"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "count": {
                    "$ref": "#/components/schemas/Promotions_coupon-generate-count"
                  }
                },
                "required": [
                  "count"
                ],
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "count": 10
                    }
                  }
                },
                "schema": {
                  "properties": {
                    "count": {
                      "$ref": "#/components/schemas/Promotions_coupon-generate-count"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Les codes ont été générés avec succès."
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-basic-auth"
          },
          "404": {
            "$ref": "#/components/responses/Promotions_404-admin-promocode"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Générer des codes de coupon",
        "tags": [
          "promotions-coupons"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v2/project/{project_id}/admin/coupon/{external_id}/deactivate": {
      "put": {
        "description": "Désactive une promotion par coupon.\nPar défaut, une promotion par coupon créée est désactivée.\nPour permettre l'échange de coupons, vous devez l'activer.\nUtilisez cet endpoint pour désactiver une promotion par coupon.",
        "operationId": "deactivate-coupon",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/external_id-promotion-path-param"
          }
        ],
        "responses": {
          "204": {
            "description": "Le coupon a été désactivé avec succès."
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-basic-auth"
          },
          "404": {
            "$ref": "#/components/responses/Promotions_404-admin-coupon"
          },
          "422": {
            "$ref": "#/components/responses/Promotions_422-admin-promotion-error"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Désactiver une promotion par coupon",
        "tags": [
          "promotions-coupons"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v2/project/{project_id}/admin/daily_chain": {
      "get": {
        "description": "Récupère une liste de récompenses quotidiennes pour administration.\n<div class=\"notice\"><strong>Remarque</strong><br><br>La méthode renvoie une liste paginée d'objets. La valeur maximale et par défaut est de <strong>50 objets par réponse.</strong> Pour obtenir d'autres objets de la liste, utilisez les paramètres `limit` et `offset`, et récupérez d'autres pages. Par exemple, avec `limit = 25` et `offset = 100`, la réponse renvoie 25 objets à partir du 101e objet de la liste globale.</div>",
        "operationId": "admin-get-daily-chains",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/limit-query-param"
          },
          {
            "$ref": "#/components/parameters/offset-query-param"
          },
          {
            "$ref": "#/components/parameters/enabled-query-param"
          },
          {
            "$ref": "#/components/parameters/is_expired-daily-chain-query-param"
          },
          {
            "$ref": "#/components/parameters/type-daily-chain-query-param"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/200-admin-get-list-daily-chains"
          },
          "401": {
            "$ref": "#/components/responses/401-invalid-basic-auth"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Lire une liste de récompenses quotidiennes",
        "tags": [
          "daily-chain-admin"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      },
      "post": {
        "description": "Crée une récompense quotidienne.",
        "operationId": "admin-create-daily-chain",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/create-daily-chain"
        },
        "responses": {
          "201": {
            "$ref": "#/components/responses/201-admin-create-daily-chain"
          },
          "401": {
            "$ref": "#/components/responses/401-invalid-basic-auth"
          },
          "422": {
            "$ref": "#/components/responses/422-admin-create-error-list"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Créer une récompense quotidienne",
        "tags": [
          "daily-chain-admin"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v2/project/{project_id}/admin/daily_chain/id/{daily_chain_id}": {
      "delete": {
        "description": "Supprime une récompense quotidienne spécifique.",
        "operationId": "admin-delete-daily-chain",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/daily_chain_id-path-param"
          }
        ],
        "responses": {
          "204": {
            "content": {},
            "description": "Récompense quotidienne supprimée avec succès."
          },
          "401": {
            "$ref": "#/components/responses/401-invalid-basic-auth"
          },
          "404": {
            "$ref": "#/components/responses/404-daily-chain-not-found"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Supprimer la récompense quotidienne",
        "tags": [
          "daily-chain-admin"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      },
      "get": {
        "description": "Récupère une récompense quotidienne spécifique pour administration.",
        "operationId": "admin-get-daily-chain",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/daily_chain_id-path-param"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/200-admin-get-daily-chain"
          },
          "401": {
            "$ref": "#/components/responses/401-invalid-basic-auth"
          },
          "404": {
            "$ref": "#/components/responses/404-daily-chain-not-found"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Lire une récompense quotidienne",
        "tags": [
          "daily-chain-admin"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      },
      "put": {
        "description": "Met à jour une récompense quotidienne spécifique.",
        "operationId": "admin-update-daily-chain",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/daily_chain_id-path-param"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/update-daily-chain"
        },
        "responses": {
          "204": {
            "content": {},
            "description": "Récompense quotidienne mise à jour avec succès."
          },
          "401": {
            "$ref": "#/components/responses/401-invalid-basic-auth"
          },
          "404": {
            "$ref": "#/components/responses/404-daily-chain-not-found"
          },
          "422": {
            "$ref": "#/components/responses/422-admin-update-error-list"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Mettre à jour la récompense quotidienne",
        "tags": [
          "daily-chain-admin"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v2/project/{project_id}/admin/daily_chain/id/{daily_chain_id}/reset": {
      "post": {
        "description": "Réinitialise la progression de tous les utilisateurs pour cette récompense quotidienne. Applicable uniquement aux récompenses de type `rolling`.",
        "operationId": "admin-reset-daily-chain",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/daily_chain_id-path-param"
          }
        ],
        "responses": {
          "204": {
            "content": {},
            "description": "Récompense quotidienne réinitialisée."
          },
          "401": {
            "$ref": "#/components/responses/401-invalid-basic-auth"
          },
          "404": {
            "$ref": "#/components/responses/404-daily-chain-not-found"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Réinitialiser la récompense quotidienne",
        "tags": [
          "daily-chain-admin"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v2/project/{project_id}/admin/daily_chain/id/{daily_chain_id}/toggle": {
      "put": {
        "description": "Active ou désactive une récompense quotidienne.",
        "operationId": "admin-toggle-daily-chain",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/daily_chain_id-path-param"
          }
        ],
        "responses": {
          "204": {
            "content": {},
            "description": "Récompense quotidienne désactivée ou activée."
          },
          "401": {
            "$ref": "#/components/responses/401-invalid-basic-auth"
          },
          "404": {
            "$ref": "#/components/responses/404-daily-chain-not-found"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Basculer une récompense quotidienne",
        "tags": [
          "daily-chain-admin"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v2/project/{project_id}/admin/items/upsell": {
      "get": {
        "description": "Récupère les informations relatives à la vente incitative dans le projet : si elle est activée, le type de vente incitative et la liste des UGS des objets concernés par cette vente.",
        "operationId": "get-upsell-configurations-for-project-admin",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "upsell": {
                    "summary": "Le projet possède une vente incitative",
                    "value": [
                      {
                        "is_enabled": true,
                        "items": [
                          {
                            "item_id": 1,
                            "name": {
                              "de": "Name des Artikels",
                              "en": "Item's name"
                            },
                            "sku": "com.xsolla.booster_mega_1",
                            "type": "virtual_good"
                          },
                          {
                            "bundle_type": "standard",
                            "item_id": 2,
                            "name": {
                              "de": "Name des Artikels",
                              "en": "Item's name"
                            },
                            "sku": "com.xsolla.booster_mega_2",
                            "type": "bundle"
                          },
                          {
                            "item_id": 3,
                            "name": {
                              "en": "Mega game"
                            },
                            "sku": "com.xsolla.mega_game_1",
                            "type": "unit",
                            "unit_items": [
                              {
                                "drm_name": "Steam",
                                "drm_sku": "steam_key_1",
                                "item_id": 4,
                                "name": {
                                  "en": "Mega game steam"
                                },
                                "sku": "com.xsolla.mega_game_steam_1"
                              }
                            ],
                            "unit_type": "game"
                          }
                        ],
                        "type": "fixed_list"
                      }
                    ]
                  }
                },
                "schema": {
                  "items": {
                    "properties": {
                      "is_enabled": {
                        "description": "Détermine si la vente incitative est activée pour le projet.",
                        "example": true,
                        "type": "boolean"
                      },
                      "items": {
                        "description": "Liste des UGS des objets faisant partie de la vente incitative dans le projet.",
                        "example": [
                          {
                            "item_id": 1,
                            "name": {
                              "de": "Name des Artikels",
                              "en": "Item's name"
                            },
                            "sku": "com.xsolla.booster_mega_1",
                            "type": "virtual_good"
                          }
                        ],
                        "items": {
                          "properties": {
                            "bundle_type": {
                              "$ref": "#/components/schemas/bundle_type"
                            },
                            "item_id": {
                              "$ref": "#/components/schemas/item_id"
                            },
                            "name": {
                              "$ref": "#/components/schemas/name-localization-object"
                            },
                            "sku": {
                              "$ref": "#/components/schemas/sku"
                            },
                            "type": {
                              "$ref": "#/components/schemas/item_type"
                            },
                            "unit_items": {
                              "description": "Clés de jeu pour différents DRM.",
                              "items": {
                                "description": "Clé de jeu. Elle représente un jeu sur une certaine plateforme (steam, gog, etc.).",
                                "properties": {
                                  "drm_name": {
                                    "$ref": "#/components/schemas/drm_name"
                                  },
                                  "drm_sku": {
                                    "$ref": "#/components/schemas/drm_sku"
                                  },
                                  "item_id": {
                                    "$ref": "#/components/schemas/item_id"
                                  },
                                  "name": {
                                    "$ref": "#/components/schemas/name-localization-object"
                                  },
                                  "sku": {
                                    "$ref": "#/components/schemas/sku"
                                  },
                                  "type": {
                                    "$ref": "#/components/schemas/item_type"
                                  }
                                },
                                "type": "object"
                              },
                              "type": "array"
                            },
                            "unit_type": {
                              "$ref": "#/components/schemas/unit_type"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "type": {
                        "description": "Type de vente incitative.",
                        "enum": [
                          "fixed_list",
                          "most_sellable",
                          "only_promotions"
                        ],
                        "example": "fixed_list",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              }
            },
            "description": "Liste des détails de configuration et des objets utilisés pour la vente incitative dans le projet."
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-client-auth"
          }
        },
        "security": [
          {
            "XsollaLoginUserJWT": []
          }
        ],
        "summary": "Lire les informations sur les ventes incitatives dans le projet",
        "tags": [
          "upsell-admin"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      },
      "post": {
        "description": "Creates an upsell for a project. <br> <div class=\"notice\">\n  <strong>Notice</strong><br><br>\n    This API call uses a user JWT for authorization.<br><br>\n    Include the token in the <code>Authorization</code> header in the following format: <code>Bearer &lt;user_JWT&gt;</code>. For more information about user JWT, see the <strong>Security</strong> block for this call.\n</div>",
        "operationId": "post-upsell",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/create-upsell"
        },
        "responses": {
          "202": {
            "description": "Vente incitative créée pour le projet."
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-client-auth"
          },
          "404": {
            "$ref": "#/components/responses/Upsell-404-item-not-found"
          },
          "422": {
            "$ref": "#/components/responses/Upsell-422-invalid-request"
          }
        },
        "security": [
          {
            "XsollaLoginUserJWT": []
          }
        ],
        "summary": "Créer une vente incitative",
        "tags": [
          "upsell-admin"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      },
      "put": {
        "description": "Update an upsell for a project. <br> <div class=\"notice\">\n  <strong>Notice</strong><br><br>\n    This API call uses a user JWT for authorization.<br><br>\n    Include the token in the <code>Authorization</code> header in the following format: <code>Bearer &lt;user_JWT&gt;</code>. For more information about user JWT, see the <strong>Security</strong> block for this call.\n</div>",
        "operationId": "put-upsell",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/update-upsell"
        },
        "responses": {
          "202": {
            "description": "Vente incitative mise à jour pour le projet."
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-client-auth"
          },
          "404": {
            "$ref": "#/components/responses/Upsell-404-item-not-found"
          },
          "422": {
            "$ref": "#/components/responses/Upsell-422-invalid-request"
          }
        },
        "security": [
          {
            "XsollaLoginUserJWT": []
          }
        ],
        "summary": "Mettre à jour une vente incitative",
        "tags": [
          "upsell-admin"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v2/project/{project_id}/admin/items/upsell/{toggle}": {
      "put": {
        "description": "Changes an upsell’s status in a project to be either active or inactive. <br> <div class=\"notice\">\n  <strong>Notice</strong><br><br>\n    This API call uses a user JWT for authorization.<br><br>\n    Include the token in the <code>Authorization</code> header in the following format: <code>Bearer &lt;user_JWT&gt;</code>. For more information about user JWT, see the <strong>Security</strong> block for this call.\n</div>",
        "operationId": "put-upsell-toggle-active-inactive",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "description": "Statut d'activation.",
            "in": "path",
            "name": "toggle",
            "required": true,
            "schema": {
              "example": "activate",
              "type": "string"
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Vente incitative activée ou désactivée dans le projet."
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-client-auth"
          }
        },
        "security": [
          {
            "XsollaLoginUserJWT": []
          }
        ],
        "summary": "Activer/désactiver la vente incitative d'un projet",
        "tags": [
          "upsell-admin"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v2/project/{project_id}/admin/items/value_points": {
      "get": {
        "description": "Récupère la liste des points de valeur au sein d'un projet à des fins d'administration.e",
        "operationId": "admin-get-value-points-list",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/limit-query-param"
          },
          {
            "$ref": "#/components/parameters/offset-query-param"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/200-admin-get-value-points"
          },
          "401": {
            "$ref": "#/components/responses/401-invalid-basic-auth"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Lire la liste des points de valeur",
        "tags": [
          "reward-chain-value-points-admin"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      },
      "post": {
        "description": "Crée un point de valeur.",
        "operationId": "admin-create-value-points",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/create-value-point"
        },
        "responses": {
          "201": {
            "$ref": "#/components/responses/201-admin-create-value-point"
          },
          "401": {
            "$ref": "#/components/responses/401-invalid-basic-auth"
          },
          "422": {
            "$ref": "#/components/responses/422-admin-create-update-rc-vp-invalid-request"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Créer un point de valeur",
        "tags": [
          "reward-chain-value-points-admin"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v2/project/{project_id}/admin/items/value_points/sku/{item_sku}": {
      "delete": {
        "description": "Supprime un point de valeur spécifique par son UGS.",
        "operationId": "admin-delete-value-point",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/item_sku-path-param"
          }
        ],
        "responses": {
          "204": {
            "content": {},
            "description": "Le point de valeur a été supprimé avec succès."
          },
          "401": {
            "$ref": "#/components/responses/401-invalid-basic-auth"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Supprimer des points de valeur",
        "tags": [
          "reward-chain-value-points-admin"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      },
      "get": {
        "description": "Récupère des informations sur un point de valeur par son UGS au sein d'un projet à des fins d'administration.",
        "operationId": "admin-get-value-point",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/item_sku-path-param"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/200-admin-get-value-point"
          },
          "401": {
            "$ref": "#/components/responses/401-invalid-basic-auth"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Lire un point de valeur",
        "tags": [
          "reward-chain-value-points-admin"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      },
      "put": {
        "description": "Met à jour un point de valeur spécifique par son UGS.",
        "operationId": "admin-update-value-point",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/item_sku-path-param"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/create-value-point"
        },
        "responses": {
          "204": {
            "content": {},
            "description": "Le point de valeur a été mis à jour avec succès."
          },
          "401": {
            "$ref": "#/components/responses/401-invalid-basic-auth"
          },
          "422": {
            "$ref": "#/components/responses/422-admin-create-update-rc-vp-invalid-request"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Mettre à jour un point de valeur",
        "tags": [
          "reward-chain-value-points-admin"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v2/project/{project_id}/admin/items/{value_point_sku}/value_points/rewards": {
      "delete": {
        "description": "Supprime les récompenses en points de valeur de TOUS les objets.",
        "operationId": "admin-delete-items-value-point-reward",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/value_point_sku-path-param"
          }
        ],
        "responses": {
          "204": {
            "content": {},
            "description": "Les récompenses en points de valeur des objets ont été supprimées avec succès."
          },
          "401": {
            "$ref": "#/components/responses/401-invalid-basic-auth"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Supprimer les points de valeur des objets",
        "tags": [
          "reward-chain-value-points-admin"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      },
      "get": {
        "description": "Récupère la liste de tous les objets ayant des points de valeur au sein d'un projet à des fins d'administration.",
        "operationId": "admin-get-items-value-point-reward",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/value_point_sku-path-param"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/200-admin-get-list-value-point-rewards"
          },
          "401": {
            "$ref": "#/components/responses/401-invalid-basic-auth"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Lire la liste des objets ayant des points de valeur",
        "tags": [
          "reward-chain-value-points-admin"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      },
      "patch": {
        "description": "Met à jour partiellement le nombre de points de valeur pour un ou plusieurs objets par UGS. Les utilisateurs reçoivent ces points de valeur après l'achat des objets spécifiés.\n\nPrincipes de mise à jour des points de valeur :\n * Si un objet ne possède pas encore de points de valeur, l'envoi d'une valeur non nulle dans le champ `amount`en crée.\n * Si un objet possède déjà des points de valeur, l'envoi d'une valeur non nulle dans le champ `amount` les met à jour.\n * Si le champ `amount` est fixé à 0, les points de valeur existants pour cet objet sont supprimés.\n\nContrairement à la méthode `PUT` ([Définir des points de valeur pour les objets](https://developers.xsolla.com/fr/api/shop-builder/operation/admin-set-items-value-point-reward/)), cette méthode `PATCH` n'écrase pas tous les points de valeur existants du projet, elle met uniquement à jour les objets spécifiés.\n\nUne seule requête peut mettre à jour jusqu'à 100 objets. Les UGS en double ne sont pas autorisés dans la même requête.",
        "operationId": "admin-patch-items-value-point-reward",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/value_point_sku-path-param"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/set-item-value-point-reward-for-patch"
        },
        "responses": {
          "204": {
            "content": {},
            "description": "Les récompenses en points de valeur des objets ont été mises à jour avec succès."
          },
          "401": {
            "$ref": "#/components/responses/401-invalid-basic-auth"
          },
          "404": {
            "$ref": "#/components/responses/sellable-item-by-sku_404"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Mettre à jour partiellement les points de valeur des objets",
        "tags": [
          "reward-chain-value-points-admin"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      },
      "put": {
        "description": "Attribue des points de valeur à un ou plusieurs objets par UGS. Les utilisateurs reçoivent des points de valeur en achetant ces objets.\n\nNotez que cette requête PUT écrase tous les points de valeur précédemment définis pour les objets du projet.\n\nPour éviter la suppression involontaire de points de valeur, incluez tous les objets et leurs points de valeur respectifs dans chaque requête PUT.\n\nSi vous souhaitez uniquement mettre à jour les points de valeur d'un objet spécifique tout en préservant les points de valeur des autres objets, vous devez récupérer l'ensemble actuel des points de valeur à l'aide d'une requête GET, modifier les points de valeur de l'objet souhaité, puis renvoyer l'ensemble modifié des points de valeur avec les points de valeur mis à jour pour l'objet spécifique.",
        "operationId": "admin-set-items-value-point-reward",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/value_point_sku-path-param"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/set-item-value-point-reward"
        },
        "responses": {
          "204": {
            "content": {},
            "description": "Les récompenses en points de valeur des objets ont été mises à jour avec succès."
          },
          "401": {
            "$ref": "#/components/responses/401-invalid-basic-auth"
          },
          "404": {
            "$ref": "#/components/responses/sellable-item-by-sku_404"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Définir des points de valeur pour les objets",
        "tags": [
          "reward-chain-value-points-admin"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v2/project/{project_id}/admin/offer_chain": {
      "get": {
        "description": "Récupère une liste de chaînes d'offres à des fins d'administration.\n<div class=\"notice\"><strong>Attention</strong><br><br>Tous les projets sont soumis à une limite de nombre d'objets pouvant être renvoyés dans une seule réponse. La valeur par défaut et la valeur maximale sont de <strong>10 objets par réponse</strong>. Pour obtenir plus de données, utilisez les paramètres de requête <code>limit</code> et <code>offset</code> pour la pagination.</div>",
        "operationId": "admin-get-offer-chains",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/limit-query-param"
          },
          {
            "$ref": "#/components/parameters/offset-query-param"
          },
          {
            "$ref": "#/components/parameters/enabled-query-param"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/200-admin-get-list-offer-chains"
          },
          "401": {
            "$ref": "#/components/responses/401-invalid-basic-auth"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Lire une liste de chaînes d'offres",
        "tags": [
          "offer-chain-admin"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      },
      "post": {
        "description": "Crée une chaîne d'offres",
        "operationId": "admin-create-offer-chain",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/create-offer-chain"
        },
        "responses": {
          "201": {
            "$ref": "#/components/responses/201-admin-create-offer-chain"
          },
          "401": {
            "$ref": "#/components/responses/401-invalid-basic-auth"
          },
          "422": {
            "$ref": "#/components/responses/422-create-error-list"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Créer une chaîne d'offres",
        "tags": [
          "offer-chain-admin"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v2/project/{project_id}/admin/offer_chain/id/{offer_chain_id}": {
      "delete": {
        "description": "Supprime une chaîne d'offres spécifique.\n\nAprès la suppression :<ul><li>Toutes les récompenses déjà reçues par les utilisateurs sont conservées.</li><li>Les étapes non achevées deviennent indisponibles et les récompenses correspondantes ne peuvent plus être obtenues.</li></ul>\n\nContrairement à la désactivation de la chaîne d'offres via l'appel <a href=\"/api/shop-builder/operation/admin-toggle-offer-chain\">Activer/désactiver une chaîne d'offres</a>, la suppression est irréversible et la progression de l'utilisateur n'est pas préservée.",
        "operationId": "admin-delete-offer-chain",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/offer_chain_id-path-param"
          }
        ],
        "responses": {
          "204": {
            "content": {},
            "description": "Chaîne d'offres supprimée avec succès."
          },
          "401": {
            "$ref": "#/components/responses/401-invalid-basic-auth"
          },
          "404": {
            "$ref": "#/components/responses/404-offer-chain-not-found"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Supprimer une chaîne d'offres",
        "tags": [
          "offer-chain-admin"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      },
      "get": {
        "description": "Récupère une chaîne d'offres spécifique à des fin d'administration.",
        "operationId": "admin-get-offer-chain",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/offer_chain_id-path-param"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/200-admin-get-offer-chain"
          },
          "401": {
            "$ref": "#/components/responses/401-invalid-basic-auth"
          },
          "404": {
            "$ref": "#/components/responses/404-offer-chain-not-found"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Lire une chaîne d'offre",
        "tags": [
          "offer-chain-admin"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      },
      "put": {
        "description": "Met à jour une chaîne d'offres spécifique.",
        "operationId": "admin-update-offer-chain",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/offer_chain_id-path-param"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/update-offer-chain"
        },
        "responses": {
          "204": {
            "content": {},
            "description": "Chaîne d'offres mise à jour avec succès."
          },
          "401": {
            "$ref": "#/components/responses/401-invalid-basic-auth"
          },
          "404": {
            "$ref": "#/components/responses/404-offer-chain-not-found"
          },
          "422": {
            "$ref": "#/components/responses/422-update-error-list"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Mettre à jour une chaîne",
        "tags": [
          "offer-chain-admin"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v2/project/{project_id}/admin/offer_chain/id/{offer_chain_id}/toggle": {
      "put": {
        "description": "Active ou désactive une chaîne d'offres.\n\nLorsque la chaîne d'offres est désactivée, les utilisateurs n'y ont temporairement plus accès, mais leur progression est préservée.\n\nLorsque la chaîne d'offres est réactivée, les utilisateurs peuvent continuer à partir de l'étape où ils se sont arrêtés.",
        "operationId": "admin-toggle-offer-chain",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/offer_chain_id-path-param"
          }
        ],
        "responses": {
          "204": {
            "content": {},
            "description": "Chaîne d'offres désactivée/activée."
          },
          "401": {
            "$ref": "#/components/responses/401-invalid-basic-auth"
          },
          "404": {
            "$ref": "#/components/responses/404-offer-chain-not-found"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Activer/désactiver une chaîne d'offres",
        "tags": [
          "offer-chain-admin"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v2/project/{project_id}/admin/promocode/{external_id}/activate": {
      "put": {
        "description": "Active une promotion par code promo.\n\nPar défaut, une promotion par code promo créée est désactivée.\nPour permettre l'échange de coupons, vous devez l'activer.\nUtilisez cet endpoint pour activer une promotion par code promo.",
        "operationId": "activate-promo-code",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/external_id-promotion-path-param"
          }
        ],
        "responses": {
          "204": {
            "description": "Le code promo a été activé avec succès."
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-basic-auth"
          },
          "404": {
            "$ref": "#/components/responses/Promotions_404-admin-promocode"
          },
          "422": {
            "$ref": "#/components/responses/Promotions_422-admin-promotion-error"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Activer une promotion par code promo",
        "tags": [
          "promotions-promo-codes"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v2/project/{project_id}/admin/promocode/{external_id}/code": {
      "get": {
        "description": "Récupère les codes d'une promotion par code promo.",
        "operationId": "get-promocode-codes",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/external_id-promotion-path-param"
          },
          {
            "$ref": "#/components/parameters/limit-query-param"
          },
          {
            "$ref": "#/components/parameters/offset-query-param"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Promotions_200-promocode-code-list"
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-basic-auth"
          },
          "404": {
            "$ref": "#/components/responses/Promotions_404-admin-promocode"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Lire les codes d'une promotion par code promo",
        "tags": [
          "promotions-promo-codes"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      },
      "post": {
        "description": "Crée un code pour une promotion par code promo.",
        "operationId": "create-promo-code-code",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/external_id-promotion-path-param"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/Promotions_create-coupon-promocode-code"
        },
        "responses": {
          "201": {
            "$ref": "#/components/responses/Promotions_201-coupon-promocode-code-created"
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-basic-auth"
          },
          "404": {
            "$ref": "#/components/responses/Promotions_404-admin-promocode"
          },
          "422": {
            "$ref": "#/components/responses/Promotions_422-coupon-promocode-same-code-exists"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Créer un code pour une promotion par code promo",
        "tags": [
          "promotions-promo-codes"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v2/project/{project_id}/admin/promocode/{external_id}/code/generate": {
      "put": {
        "description": "Génère des codes pour une promotion par code promo.",
        "operationId": "generate-promo-code-codes",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/external_id-promotion-path-param"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "count": {
                    "$ref": "#/components/schemas/Promotions_coupon-generate-count"
                  }
                },
                "required": [
                  "count"
                ],
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "count": 10
                    }
                  }
                },
                "schema": {
                  "properties": {
                    "count": {
                      "$ref": "#/components/schemas/Promotions_coupon-generate-count"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Les codes ont été générés avec succès."
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-basic-auth"
          },
          "404": {
            "$ref": "#/components/responses/Promotions_404-admin-promocode"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Générer des codes pour une promotion par code promo",
        "tags": [
          "promotions-promo-codes"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v2/project/{project_id}/admin/promocode/{external_id}/deactivate": {
      "put": {
        "description": "Désactive une promotion par code promo.\n\nPar défaut, une promotion par code promo créée est désactivée.\nPour permettre l'échange de coupons, vous devez l'activer.\nUtilisez cet endpoint pour désactiver une promotion par code promo.",
        "operationId": "deactivate-promo-code",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/external_id-promotion-path-param"
          }
        ],
        "responses": {
          "204": {
            "description": "Le coupon a été désactivé avec succès."
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-basic-auth"
          },
          "404": {
            "$ref": "#/components/responses/Promotions_404-admin-promocode"
          },
          "422": {
            "$ref": "#/components/responses/Promotions_422-admin-promotion-error"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Désactiver une promotion par code promo",
        "tags": [
          "promotions-promo-codes"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v2/project/{project_id}/admin/promotion/{promotion_id}/activate": {
      "put": {
        "description": "Active une promotion.",
        "operationId": "activate-promotion",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/promotion_id-path-param"
          }
        ],
        "responses": {
          "204": {
            "description": "La promotion a été activée avec succès."
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-basic-auth"
          },
          "422": {
            "$ref": "#/components/responses/Promotions_422-activate-deactivate-promotion"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Activer une promotion",
        "tags": [
          "promotions-common"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v2/project/{project_id}/admin/promotion/{promotion_id}/deactivate": {
      "put": {
        "description": "Désactive une promotion.",
        "operationId": "deactivate-promotion",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/promotion_id-path-param"
          }
        ],
        "responses": {
          "204": {
            "description": "La promotion a été désactivée avec succès."
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-basic-auth"
          },
          "422": {
            "$ref": "#/components/responses/Promotions_422-activate-deactivate-promotion"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Désactiver une promotion",
        "tags": [
          "promotions-common"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v2/project/{project_id}/admin/unique_catalog_offer/{external_id}/activate": {
      "put": {
        "description": "Active une offre promotionnelle unique du catalogue.\nUne offre promotionnelle unique créée dans le catalogue est désactivée par défaut.\nElle ne peut pas être utilisée tant que vous ne l'avez pas activée.\nUtilisez cet endpoint pour activer une promotion par coupon.",
        "operationId": "activate-unique-catalog-offer",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/external_id-promotion-path-param"
          }
        ],
        "responses": {
          "204": {
            "description": "L'offre unique du catalogue a été activée avec succès."
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-basic-auth"
          },
          "404": {
            "$ref": "#/components/responses/Promotions_404-admin-coupon"
          },
          "422": {
            "$ref": "#/components/responses/Promotions_422-admin-promotion-error"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Activer une offre promotionnelle unique du catalogue",
        "tags": [
          "promotions-unique-catalog-offers"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v2/project/{project_id}/admin/unique_catalog_offer/{external_id}/code": {
      "get": {
        "description": "Récupère les codes d'une offre unique du catalogue.",
        "operationId": "get-unique-catalog-offer-codes",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/external_id-promotion-path-param"
          },
          {
            "$ref": "#/components/parameters/limit-query-param"
          },
          {
            "$ref": "#/components/parameters/offset-query-param"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Promotions_200-unique-catalog-offer-code-list"
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-basic-auth"
          },
          "404": {
            "$ref": "#/components/responses/Promotions_404-admin-coupon"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Lire les codes d'une offre unique du catalogue",
        "tags": [
          "promotions-unique-catalog-offers"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      },
      "post": {
        "description": "Crée un code pour une offre unique du catalogue",
        "operationId": "create-unique-catalog-offer-code",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/external_id-promotion-path-param"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/Promotions_create-coupon-promocode-code"
        },
        "responses": {
          "201": {
            "$ref": "#/components/responses/Promotions_201-coupon-promocode-code-created"
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-basic-auth"
          },
          "404": {
            "$ref": "#/components/responses/Promotions_404-admin-coupon"
          },
          "422": {
            "$ref": "#/components/responses/Promotions_422-coupon-promocode-same-code-exists"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Créer un code pour une offre unique du catalogue",
        "tags": [
          "promotions-unique-catalog-offers"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v2/project/{project_id}/admin/unique_catalog_offer/{external_id}/code/generate": {
      "put": {
        "description": "Génère des codes pour une offre unique du catalogue.",
        "operationId": "generate-unique-catalog-offer-codes",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/external_id-promotion-path-param"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "count": {
                    "$ref": "#/components/schemas/Promotions_coupon-generate-count"
                  }
                },
                "required": [
                  "count"
                ],
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "count": 10
                    }
                  }
                },
                "schema": {
                  "properties": {
                    "count": {
                      "$ref": "#/components/schemas/Promotions_coupon-generate-count"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Les codes ont été générés avec succès."
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-basic-auth"
          },
          "404": {
            "$ref": "#/components/responses/Promotions_404-admin-promocode"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Générer des codes pour une offre unique du catalogue",
        "tags": [
          "promotions-unique-catalog-offers"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v2/project/{project_id}/admin/unique_catalog_offer/{external_id}/deactivate": {
      "put": {
        "description": "Désactive une offre promotionnelle unique du catalogue.\nUne offre promotionnelle unique créée dans le catalogue est désactivée par défaut.\nElle ne peut pas être utilisée tant que vous ne l'avez pas activée.\nUtilisez cet endpoint pour désactiver une promotion par coupon.",
        "operationId": "deactivate-unique-catalog-offer",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/external_id-promotion-path-param"
          }
        ],
        "responses": {
          "204": {
            "description": "L'offre unique du catalogue a été désactivée avec succès."
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-basic-auth"
          },
          "404": {
            "$ref": "#/components/responses/Promotions_404-admin-coupon"
          },
          "422": {
            "$ref": "#/components/responses/Promotions_422-admin-promotion-error"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Désactiver une offre promotionnelle unique du catalogue",
        "tags": [
          "promotions-unique-catalog-offers"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v2/project/{project_id}/admin/user/attribute/rule": {
      "get": {
        "description": "Récupère toutes les règles s'appliquant aux attributs utilisateur.",
        "operationId": "get-filter-rules",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/limit-query-param"
          },
          {
            "$ref": "#/components/parameters/offset-query-param"
          },
          {
            "$ref": "#/components/parameters/is_enabled-query-param"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "has_more": true,
                      "items": [
                        {
                          "attribute_conditions": [
                            {
                              "attribute": "race",
                              "can_be_missing": false,
                              "operator": "eq",
                              "type": "string",
                              "value": "ork"
                            }
                          ],
                          "is_enabled": true,
                          "is_satisfied_for_unauth": false,
                          "items": [
                            {
                              "item_id": 1,
                              "name": "Ork Armor",
                              "sku": "com.xsolla.ork_armor_1",
                              "type": "virtual_good"
                            },
                            {
                              "bundle_type": "standard",
                              "item_id": 2,
                              "name": "Potion pack",
                              "sku": "com.xsolla.potion_pack_1",
                              "type": "bundle"
                            }
                          ],
                          "name": "Ork race armor rule",
                          "rule_id": 1
                        }
                      ],
                      "total_items_count": 20
                    }
                  }
                },
                "schema": {
                  "properties": {
                    "has_more": {
                      "description": "S'il existe une autre page avec des règles.",
                      "type": "boolean"
                    },
                    "items": {
                      "items": {
                        "$ref": "#/components/schemas/user-attribute_personalized-catalog"
                      },
                      "type": "array"
                    },
                    "total_items_count": {
                      "description": "Nombre total de règles.",
                      "type": "number"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Les règles ont été reçues avec succès."
          },
          "401": {
            "$ref": "#/components/responses/Common_401-complex"
          },
          "403": {
            "$ref": "#/components/responses/403-auth-header-not-sent"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Lire la liste des règles de filtrage du catalogue",
        "tags": [
          "personalized-catalog"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      },
      "post": {
        "description": "Crée une règle pour les attributs utilisateur.",
        "operationId": "create-filter-rule",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/personalized-catalog_create-update-body"
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "rule_id": 1
                    }
                  }
                },
                "schema": {
                  "properties": {
                    "rule_id": {
                      "description": "ID de règle.",
                      "type": "number"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "La règle a été créée avec succès."
          },
          "401": {
            "$ref": "#/components/responses/Common_401-complex"
          },
          "422": {
            "$ref": "#/components/responses/Common_422-body-validation"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Créer une règle de filtrage du catalogue",
        "tags": [
          "personalized-catalog"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v2/project/{project_id}/admin/user/attribute/rule/all": {
      "get": {
        "description": "Récupère une liste de toutes les règles du catalogue pour la recherche côté client.\n<div class=\"notice\"><strong>Attention</strong><br><br>Renvoie uniquement l'ID et le nom de la règle et is_enabled</div>",
        "operationId": "get-all-filter-rules",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "items": [
                        {
                          "is_enabled": true,
                          "is_satisfied_for_unauth": false,
                          "name": "Ork race armor rule",
                          "rule_id": 1
                        },
                        {
                          "is_enabled": false,
                          "is_satisfied_for_unauth": false,
                          "name": "Age",
                          "rule_id": 2
                        }
                      ]
                    }
                  }
                },
                "schema": {
                  "properties": {
                    "items": {
                      "items": {
                        "$ref": "#/components/schemas/user-attribute_personalized-catalog_all"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Les règles ont été reçues avec succès."
          },
          "401": {
            "$ref": "#/components/responses/Common_401-complex"
          },
          "403": {
            "$ref": "#/components/responses/403-auth-header-not-sent"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Lire toutes les règles du catalogue pour une recherche côté client",
        "tags": [
          "personalized-catalog"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v2/project/{project_id}/admin/user/attribute/rule/{rule_id}": {
      "delete": {
        "description": "Supprime une règle spécifique.",
        "operationId": "delete-filter-rule-by-id",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/personalized-catalog-rule_id-path-param"
          }
        ],
        "responses": {
          "204": {
            "description": "La suppression a été effectuée avec succès."
          },
          "401": {
            "$ref": "#/components/responses/Common_401-complex"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Supprimer une règle de filtrage du catalogue",
        "tags": [
          "personalized-catalog"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      },
      "get": {
        "description": "Récupère des informations sur une règle spécifique s'appliquant aux attributs utilisateur.",
        "operationId": "get-filter-rule-by-id",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/personalized-catalog-rule_id-path-param"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "attribute_conditions": [
                        {
                          "attribute": "race",
                          "can_be_missing": false,
                          "operator": "eq",
                          "type": "string",
                          "value": "ork"
                        }
                      ],
                      "is_enabled": true,
                      "is_satisfied_for_unauth": true,
                      "items": [
                        {
                          "item_id": 1,
                          "name": "Ork Armor",
                          "sku": "com.xsolla.ork_armor_1"
                        }
                      ],
                      "name": "Ork race armor rule",
                      "rule_id": 1
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/user-attribute_personalized-catalog"
                }
              }
            },
            "description": "La règle a été reçue avec succès."
          },
          "401": {
            "$ref": "#/components/responses/Common_401-complex"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Lire une règle de filtrage du catalogue",
        "tags": [
          "personalized-catalog"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      },
      "patch": {
        "description": "Met à jour une règle spécifique s'appliquant aux attributs utilisateur. La valeur actuelle sera utilisée pour une propriété non spécifiée.",
        "operationId": "patch-filter-rule-by-id",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/personalized-catalog-rule_id-path-param"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "is_enabled": false
              },
              "schema": {
                "$ref": "#/components/schemas/user-attribute_personalized-catalog-body"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "La mise à jour a été effectuée avec succès."
          },
          "401": {
            "$ref": "#/components/responses/Common_401-complex"
          },
          "422": {
            "$ref": "#/components/responses/Common_422-body-validation"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Appliquer une règle de filtrage de catalogue",
        "tags": [
          "personalized-catalog"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      },
      "put": {
        "description": "Met à jour une règle spécifique s'appliquant aux attributs utilisateur. La valeur par défaut sera utilisée pour une propriété non spécifiée (si la propriété n'est pas requise).",
        "operationId": "update-filter-rule-by-id",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/personalized-catalog-rule_id-path-param"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/personalized-catalog_create-update-body"
        },
        "responses": {
          "204": {
            "description": "Mise à jour réussie."
          },
          "401": {
            "$ref": "#/components/responses/Common_401-complex"
          },
          "422": {
            "$ref": "#/components/responses/Common_422-body-validation"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Mettre à jour une règle de filtrage du catalogue",
        "tags": [
          "personalized-catalog"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v2/project/{project_id}/admin/user/limit/coupon/external_id/{external_id}": {
      "get": {
        "description": "Récupère le nombre restant de fois qu'un utilisateur spécifique peut utiliser le coupon.\n\nL'API des limites utilisateur vous permet de limiter le nombre de fois que les utilisateurs peuvent utiliser un coupon. Pour configurer les limites utilisateur, référez-vous à la section Administrateur :\n* [Coupons](https://developers.xsolla.com/fr/api/shop-builder/tag/promotions-coupons/)",
        "operationId": "get-coupon-user-limit",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/external_id-promotion-path-param"
          },
          {
            "$ref": "#/components/parameters/user_external_id-query-param"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/200-admin-get-user-coupon-limits"
          },
          "401": {
            "$ref": "#/components/responses/Common_401-invalid-basic-auth"
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "Coupon not found": {
                    "$ref": "#/components/examples/404-coupon-not-found"
                  },
                  "User not found": {
                    "$ref": "#/components/examples/404-user-not-found"
                  }
                },
                "schema": {
                  "properties": {
                    "errorCode": {
                      "type": "integer"
                    },
                    "errorMessage": {
                      "type": "string"
                    },
                    "statusCode": {
                      "type": "integer"
                    },
                    "transactionId": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Objet non trouvé."
          },
          "422": {
            "content": {
              "application/json": {
                "examples": {
                  "Invalid user_external_id": {
                    "$ref": "#/components/examples/Promotions_422-invalid-coupon"
                  }
                },
                "schema": {
                  "properties": {
                    "errorCode": {
                      "type": "integer"
                    },
                    "errorMessage": {
                      "type": "string"
                    },
                    "errorMessageExtended": {
                      "type": "array"
                    },
                    "statusCode": {
                      "type": "integer"
                    },
                    "transactionId": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Demande non valide."
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Lire la limite de coupon pour un utilisateur spécifique",
        "tags": [
          "promotions-coupons"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v2/project/{project_id}/admin/user/limit/promocode/external_id/{external_id}": {
      "get": {
        "description": "Récupère le nombre de fois restant qu'un utilisateur spécifique peut utiliser le code promo.\n\nL'API des limites utilisateur vous permet de limiter le nombre de fois que les utilisateurs peuvent utiliser un code promo. Pour configurer les limites utilisateur, référez-vous à la section Administrateur :\n* [Codes promo](https://developers.xsolla.com/fr/api/shop-builder/tag/promotions-promo-codes/)",
        "operationId": "get-promo-code-user-limit",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/external_id-promotion-path-param"
          },
          {
            "$ref": "#/components/parameters/user_external_id-query-param"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/200-admin-get-user-promo-code-limits"
          },
          "401": {
            "$ref": "#/components/responses/Common_401-invalid-basic-auth"
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "Promo code not found": {
                    "$ref": "#/components/examples/404-coupon-not-found"
                  },
                  "User not found": {
                    "$ref": "#/components/examples/404-user-not-found"
                  }
                },
                "schema": {
                  "properties": {
                    "errorCode": {
                      "type": "integer"
                    },
                    "errorMessage": {
                      "type": "string"
                    },
                    "statusCode": {
                      "type": "integer"
                    },
                    "transactionId": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Objet non trouvé."
          },
          "422": {
            "content": {
              "application/json": {
                "examples": {
                  "Invalid user_external_id": {
                    "$ref": "#/components/examples/Promotions_422-invalid-coupon"
                  }
                },
                "schema": {
                  "properties": {
                    "errorCode": {
                      "type": "integer"
                    },
                    "errorMessage": {
                      "type": "string"
                    },
                    "errorMessageExtended": {
                      "type": "array"
                    },
                    "statusCode": {
                      "type": "integer"
                    },
                    "transactionId": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Demande non valide."
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Lire la limite de code promo pour un utilisateur spécifique",
        "tags": [
          "promotions-promo-codes"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v2/project/{project_id}/admin/user/limit/promotion/all": {
      "delete": {
        "description": "Actualise toutes les limites de toutes les promotions pour un utilisateur spécifique afin qu'il puisse à nouveau utiliser ces promotions.\n\nL'API des limites utilisateur vous permet de limiter le nombre de fois qu'un utilisateur peut utiliser une promotion. Pour configurer les limites utilisateur, accédez à la section Administrateur du type de promotion souhaité :\n* [Promotions par réduction](https://developers.xsolla.com/fr/api/shop-builder/tag/promotions-discounts/)\n* [Promotions par bonus](https://developers.xsolla.com/fr/api/shop-builder/tag/promotions-bonuses/)",
        "operationId": "reset-all-user-promotions-limit",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/reset-user-limits"
        },
        "responses": {
          "200": {
            "description": "La limite de la promotion a été actualisée avec succès."
          },
          "401": {
            "$ref": "#/components/responses/Common_401-invalid-basic-auth"
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "User not found": {
                    "$ref": "#/components/examples/404-user-not-found"
                  }
                },
                "schema": {
                  "properties": {
                    "errorCode": {
                      "type": "integer"
                    },
                    "errorMessage": {
                      "type": "string"
                    },
                    "statusCode": {
                      "type": "integer"
                    },
                    "transactionId": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Objet non trouvé."
          },
          "422": {
            "content": {
              "application/json": {
                "examples": {
                  "Invalid user_external_id": {
                    "$ref": "#/components/examples/422-user_external_id_invalid"
                  }
                },
                "schema": {
                  "properties": {
                    "errorCode": {
                      "type": "integer"
                    },
                    "errorMessage": {
                      "type": "string"
                    },
                    "errorMessageExtended": {
                      "type": "array"
                    },
                    "statusCode": {
                      "type": "integer"
                    },
                    "transactionId": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Demande non valide."
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Actualiser toutes les limites de promotion pour un utilisateur spécifique",
        "tags": [
          "user-limits-admin"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v2/project/{project_id}/admin/user/limit/promotion/id/{promotion_id}": {
      "delete": {
        "description": "Réduit le nombre de fois qu'un utilisateur spécifique peut utiliser une promotion dans la limite appliquée.\n\nL'API des limites utilisateur vous permet de limiter le nombre de fois qu'un utilisateur peut utiliser une promotion. Pour configurer les limites utilisateur, accédez à la section Administrateur du type de promotion souhaité :\n* [Promotions par réduction](https://developers.xsolla.com/fr/api/shop-builder/tag/promotions-discounts/)\n* [Promotions par bonus](https://developers.xsolla.com/fr/api/shop-builder/tag/promotions-bonuses/)",
        "operationId": "remove-user-promotion-limit",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/promotion_id-path-param"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/update-user-limits-strict"
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/200-admin-get-user-promotion-limits"
          },
          "401": {
            "$ref": "#/components/responses/Common_401-invalid-basic-auth"
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "Item not found": {
                    "$ref": "#/components/examples/404-promotion-by-id-not-found"
                  },
                  "User not found": {
                    "$ref": "#/components/examples/404-user-not-found"
                  }
                },
                "schema": {
                  "properties": {
                    "errorCode": {
                      "type": "integer"
                    },
                    "errorMessage": {
                      "type": "string"
                    },
                    "statusCode": {
                      "type": "integer"
                    },
                    "transactionId": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Objet non trouvé."
          },
          "422": {
            "content": {
              "application/json": {
                "examples": {
                  "Available promotion limit is out of range": {
                    "$ref": "#/components/examples/422-promotion-out-of-range-available-user-limit"
                  },
                  "Invalid user_external_id": {
                    "$ref": "#/components/examples/422-user_external_id_invalid"
                  },
                  "Promotion does not have configured user limits": {
                    "$ref": "#/components/examples/422-promotion-without-user-limit"
                  }
                },
                "schema": {
                  "properties": {
                    "errorCode": {
                      "type": "integer"
                    },
                    "errorMessage": {
                      "type": "string"
                    },
                    "errorMessageExtended": {
                      "type": "array"
                    },
                    "statusCode": {
                      "type": "integer"
                    },
                    "transactionId": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Demande non valide."
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Réduire la limite de promotion pour un utilisateur spécifique",
        "tags": [
          "user-limits-admin"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      },
      "get": {
        "description": "Récupère le nombre de fois qu'un utilisateur spécifique peut utiliser la promotion dans la limite appliquée.\n\nL'API des limites utilisateur vous permet de limiter le nombre de fois qu'un utilisateur peut utiliser une promotion. Pour configurer les limites utilisateur, accédez à la section Administrateur du type de promotion souhaité :\n* [Promotions par réduction](https://developers.xsolla.com/fr/api/shop-builder/tag/promotions-discounts/)\n* [Promotions par bonus](https://developers.xsolla.com/fr/api/shop-builder/tag/promotions-bonuses/)",
        "operationId": "get-user-promotion-limit",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/promotion_id-path-param"
          },
          {
            "$ref": "#/components/parameters/user_external_id-query-param"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/200-admin-get-user-promotion-limits"
          },
          "401": {
            "$ref": "#/components/responses/Common_401-invalid-basic-auth"
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "Item not found": {
                    "$ref": "#/components/examples/404-promotion-by-id-not-found"
                  },
                  "User not found": {
                    "$ref": "#/components/examples/404-user-not-found"
                  }
                },
                "schema": {
                  "properties": {
                    "errorCode": {
                      "type": "integer"
                    },
                    "errorMessage": {
                      "type": "string"
                    },
                    "statusCode": {
                      "type": "integer"
                    },
                    "transactionId": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Objet non trouvé."
          },
          "422": {
            "content": {
              "application/json": {
                "examples": {
                  "Invalid user_external_id": {
                    "$ref": "#/components/examples/422-user_external_id_invalid"
                  },
                  "Promotion does not have configured user limits": {
                    "$ref": "#/components/examples/422-promotion-without-user-limit"
                  }
                },
                "schema": {
                  "properties": {
                    "errorCode": {
                      "type": "integer"
                    },
                    "errorMessage": {
                      "type": "string"
                    },
                    "errorMessageExtended": {
                      "type": "array"
                    },
                    "statusCode": {
                      "type": "integer"
                    },
                    "transactionId": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Demande non valide."
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Lire la limite de promotion pour un utilisateur spécifique",
        "tags": [
          "user-limits-admin"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      },
      "post": {
        "description": "Augmente le nombre de fois qu'un utilisateur spécifique peut utiliser la promotion dans la limite appliquée.\n\nL'API des limites utilisateur vous permet de limiter le nombre de fois qu'un utilisateur peut utiliser une promotion. Pour configurer les limites utilisateur, accédez à la section Administrateur du type de promotion souhaité :\n* [Promotions par réduction](https://developers.xsolla.com/fr/api/shop-builder/tag/promotions-discounts/)\n* [Promotions par bonus](https://developers.xsolla.com/fr/api/shop-builder/tag/promotions-bonuses/)",
        "operationId": "add-user-promotion-limit",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/promotion_id-path-param"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/update-user-limits-strict"
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/200-admin-get-user-promotion-limits"
          },
          "401": {
            "$ref": "#/components/responses/Common_401-invalid-basic-auth"
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "Item not found": {
                    "$ref": "#/components/examples/404-promotion-by-id-not-found"
                  },
                  "User not found": {
                    "$ref": "#/components/examples/404-user-not-found"
                  }
                },
                "schema": {
                  "properties": {
                    "errorCode": {
                      "type": "integer"
                    },
                    "errorMessage": {
                      "type": "string"
                    },
                    "statusCode": {
                      "type": "integer"
                    },
                    "transactionId": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Objet non trouvé."
          },
          "422": {
            "content": {
              "application/json": {
                "examples": {
                  "Available promotion limit is out of range": {
                    "$ref": "#/components/examples/422-promotion-out-of-range-available-user-limit"
                  },
                  "Invalid user_external_id": {
                    "$ref": "#/components/examples/422-user_external_id_invalid"
                  },
                  "Promotion does not have configured user limits": {
                    "$ref": "#/components/examples/422-promotion-without-user-limit"
                  }
                },
                "schema": {
                  "properties": {
                    "errorCode": {
                      "type": "integer"
                    },
                    "errorMessage": {
                      "type": "string"
                    },
                    "errorMessageExtended": {
                      "type": "array"
                    },
                    "statusCode": {
                      "type": "integer"
                    },
                    "transactionId": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Demande non valide."
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Augmenter la limite de promotion pour un utilisateur spécifique",
        "tags": [
          "user-limits-admin"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      },
      "put": {
        "description": "Définit le nombre de fois qu'un utilisateur spécifique peut utiliser une promotion dans la limite appliquée après une augmentation ou une diminution.\n\nL'API des limites utilisateur vous permet de limiter le nombre de fois qu'un utilisateur peut utiliser une promotion. Pour configurer les limites utilisateur, accédez à la section Administrateur du type de promotion souhaité :\n* [Promotions par réduction](https://developers.xsolla.com/fr/api/shop-builder/tag/promotions-discounts/)\n* [Promotions par bonus](https://developers.xsolla.com/fr/api/shop-builder/tag/promotions-bonuses/)",
        "operationId": "set-user-promotion-limit",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/promotion_id-path-param"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/update-user-limits-flexible"
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/200-admin-get-user-promotion-limits"
          },
          "401": {
            "$ref": "#/components/responses/Common_401-invalid-basic-auth"
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "Item not found": {
                    "$ref": "#/components/examples/404-promotion-by-id-not-found"
                  },
                  "User not found": {
                    "$ref": "#/components/examples/404-user-not-found"
                  }
                },
                "schema": {
                  "properties": {
                    "errorCode": {
                      "type": "integer"
                    },
                    "errorMessage": {
                      "type": "string"
                    },
                    "statusCode": {
                      "type": "integer"
                    },
                    "transactionId": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Objet non trouvé."
          },
          "422": {
            "content": {
              "application/json": {
                "examples": {
                  "Invalid user_external_id": {
                    "$ref": "#/components/examples/422-user_external_id_invalid"
                  },
                  "Promotion does not have configured user limits": {
                    "$ref": "#/components/examples/422-promotion-without-user-limit"
                  }
                },
                "schema": {
                  "properties": {
                    "errorCode": {
                      "type": "integer"
                    },
                    "errorMessage": {
                      "type": "string"
                    },
                    "errorMessageExtended": {
                      "type": "array"
                    },
                    "statusCode": {
                      "type": "integer"
                    },
                    "transactionId": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Demande non valide."
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Définir la limite de promotion pour un utilisateur spécifique",
        "tags": [
          "user-limits-admin"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v2/project/{project_id}/admin/user/limit/promotion/id/{promotion_id}/all": {
      "delete": {
        "description": "Actualise la limite de la promotion afin que l'utilisateur puisse à nouveau utiliser cette promotion. Si le paramètre *user* est défini sur `null`, cet appel actualise cette limite pour tous les utilisateurs.\n\nL'API des limites utilisateur vous permet de limiter le nombre de fois qu'un utilisateur peut utiliser une promotion. Pour configurer les limites utilisateur, accédez à la section Administrateur du type de promotion souhaité :\n* [Promotions par réduction](https://developers.xsolla.com/fr/api/shop-builder/tag/promotions-discounts/)\n* [Promotions par bonus](https://developers.xsolla.com/fr/api/shop-builder/tag/promotions-bonuses/)",
        "operationId": "reset-user-promotion-limit",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/promotion_id-path-param"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/reset-user-limits-flexible"
        },
        "responses": {
          "200": {
            "description": "La limite de la promotion a été actualisée avec succès."
          },
          "401": {
            "$ref": "#/components/responses/Common_401-invalid-basic-auth"
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "Item not found": {
                    "$ref": "#/components/examples/404-promotion-by-id-not-found"
                  },
                  "User not found": {
                    "$ref": "#/components/examples/404-user-not-found"
                  }
                },
                "schema": {
                  "properties": {
                    "errorCode": {
                      "type": "integer"
                    },
                    "errorMessage": {
                      "type": "string"
                    },
                    "statusCode": {
                      "type": "integer"
                    },
                    "transactionId": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Objet non trouvé."
          },
          "422": {
            "content": {
              "application/json": {
                "examples": {
                  "Invalid user_external_id": {
                    "$ref": "#/components/examples/422-user_external_id_invalid"
                  },
                  "Promotion does not have configured user limits": {
                    "$ref": "#/components/examples/422-promotion-without-user-limit"
                  }
                },
                "schema": {
                  "properties": {
                    "errorCode": {
                      "type": "integer"
                    },
                    "errorMessage": {
                      "type": "string"
                    },
                    "errorMessageExtended": {
                      "type": "array"
                    },
                    "statusCode": {
                      "type": "integer"
                    },
                    "transactionId": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Demande non valide."
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Actualiser la limite d'une promotion pour les utilisateurs",
        "tags": [
          "user-limits-admin"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v2/project/{project_id}/coupon/code/{coupon_code}/rewards": {
      "get": {
        "description": "Gets coupons rewards by its code.\nCan be used to allow users to choose one of many items as a bonus.\nThe usual case is choosing a DRM if the coupon contains a game as a bonus (`type=unit`). <br> <div class=\"note\">\n  <strong>Note</strong><br><br>\n    This API call uses a user JWT for authorization.<br><br>\n    Include the token in the <code>Authorization</code> header in the following format: <code>Bearer &lt;user_JWT&gt;</code>. For more information about user JWT, see the <strong>Security</strong> block for this call.\n</div>",
        "operationId": "get-coupon-rewards-by-code",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/coupon_code-path-param"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Promotions_200-coupon-rewards"
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-client-auth"
          },
          "403": {
            "$ref": "#/components/responses/Promotions_403-auth-header"
          },
          "404": {
            "$ref": "#/components/responses/Promotions_404-coupon"
          },
          "422": {
            "$ref": "#/components/responses/Promotions_422-rewards"
          }
        },
        "security": [
          {
            "XsollaLoginUserJWT": []
          }
        ],
        "summary": "Lire les récompenses d'un coupon",
        "tags": [
          "promotions-coupons"
        ],
        "x-badges": [
          {
            "color": "#80eaff",
            "name": "Client-side"
          }
        ]
      }
    },
    "/v2/project/{project_id}/coupon/redeem": {
      "post": {
        "description": "Redeems a coupon code. The user gets a bonus after a coupon is redeemed. <br> <div class=\"note\">\n  <strong>Note</strong><br><br>\n    This API call uses a user JWT for authorization.<br><br>\n    Include the token in the <code>Authorization</code> header in the following format: <code>Bearer &lt;user_JWT&gt;</code>. For more information about user JWT, see the <strong>Security</strong> block for this call.\n</div>",
        "operationId": "redeem-coupon",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/Promotions_redeem-coupon-model"
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Promotions_200-coupon-redeemed"
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-client-auth"
          },
          "403": {
            "$ref": "#/components/responses/Promotions_403-auth-header"
          },
          "404": {
            "$ref": "#/components/responses/Promotions_404-coupon"
          },
          "422": {
            "$ref": "#/components/responses/Promotions_422-redeem-coupon"
          }
        },
        "security": [
          {
            "XsollaLoginUserJWT": []
          }
        ],
        "summary": "Échanger un code de coupon",
        "tags": [
          "promotions-coupons"
        ],
        "x-badges": [
          {
            "color": "#80eaff",
            "name": "Client-side"
          }
        ]
      }
    },
    "/v2/project/{project_id}/items/upsell": {
      "get": {
        "description": "Gets a list of upsell items in a project if they have already been set up. <br> <div class=\"note\">\n  <strong>Note</strong><br><br>\n    This API call uses a user JWT for authorization.<br><br>\n    Include the token in the <code>Authorization</code> header in the following format: <code>Bearer &lt;user_JWT&gt;</code>. For more information about user JWT, see the <strong>Security</strong> block for this call.\n</div>",
        "operationId": "get-upsell-for-project-client",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Upsell-200-get-client-list"
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-client-auth"
          }
        },
        "security": [
          {
            "XsollaLoginUserJWT": []
          }
        ],
        "summary": "Lire la liste des objets de vente incitative dans le projet",
        "tags": [
          "upsell-client"
        ],
        "x-badges": [
          {
            "color": "#80eaff",
            "name": "Client-side"
          }
        ]
      }
    },
    "/v2/project/{project_id}/promocode/code/{promocode_code}/rewards": {
      "get": {
        "description": "Gets promo code rewards by its code.\nCan be used to allow users to choose one of many items as a bonus.\nThe usual case is choosing a DRM if the promo code contains a game as a bonus (`type=unit`). <br> <div class=\"note\">\n  <strong>Note</strong><br><br>\n    This API call uses a user JWT for authorization.<br><br>\n    Include the token in the <code>Authorization</code> header in the following format: <code>Bearer &lt;user_JWT&gt;</code>. For more information about user JWT, see the <strong>Security</strong> block for this call.\n</div>",
        "operationId": "get-promo-code-rewards-by-code",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/promocode_code-path-param"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Promotions_200-promocode-rewards"
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-client-auth"
          },
          "403": {
            "$ref": "#/components/responses/Promotions_403-auth-header"
          },
          "404": {
            "$ref": "#/components/responses/Promotions_404-promo-code"
          },
          "422": {
            "$ref": "#/components/responses/Promotions_422-rewards"
          }
        },
        "security": [
          {
            "XsollaLoginUserJWT": []
          }
        ],
        "summary": "Lire les récompenses d'un code promo",
        "tags": [
          "promotions-promo-codes"
        ],
        "x-badges": [
          {
            "color": "#80eaff",
            "name": "Client-side"
          }
        ]
      }
    },
    "/v2/project/{project_id}/promocode/redeem": {
      "post": {
        "description": "Échange un code d'une promotion par code promo.\nAprès avoir échangé un code de promo, l'utilisateur reçoit des biens gratuits et/ou le prix du panier et/ou des objets spécifiques sera réduit.",
        "operationId": "redeem-promo-code",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/Promotions_redeem-promo-code-model"
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Promotions_200-promo-code-redeemed"
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-client-auth"
          },
          "403": {
            "$ref": "#/components/responses/Promotions_403-auth-header"
          },
          "404": {
            "$ref": "#/components/responses/Promotions_404-promo-code"
          },
          "422": {
            "$ref": "#/components/responses/Promotions_422-redeem-coupon"
          }
        },
        "security": [
          {
            "AuthForCart": []
          }
        ],
        "summary": "Échanger un code promo",
        "tags": [
          "promotions-promo-codes"
        ],
        "x-badges": [
          {
            "color": "#80eaff",
            "name": "Client-side"
          }
        ]
      }
    },
    "/v2/project/{project_id}/promocode/remove": {
      "put": {
        "description": "Supprime un code promo d'un panier.\nAprès la suppression du code promo, le prix total de tous les objets du panier sera recalculé sans les bonus et les remises accordés par un code promo.",
        "operationId": "remove-cart-promo-code",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/Promotions_cancel-promo-code-model"
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/Promotions_200-promo-code-canceled"
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-client-auth"
          },
          "403": {
            "$ref": "#/components/responses/Promotions_403-auth-header"
          },
          "422": {
            "$ref": "#/components/responses/Promotions_422-cancel-promo-code"
          }
        },
        "security": [
          {
            "AuthForCart": []
          }
        ],
        "summary": "Supprimer un code promo du panier",
        "tags": [
          "promotions-promo-codes"
        ],
        "x-badges": [
          {
            "color": "#80eaff",
            "name": "Client-side"
          }
        ]
      }
    },
    "/v2/project/{project_id}/promotion/code/{code}/verify": {
      "get": {
        "description": "Determines if the code is a promo code or coupon code and if the user can apply it. <br> <div class=\"note\">\n  <strong>Note</strong><br><br>\n    This API call uses a user JWT for authorization.<br><br>\n    Include the token in the <code>Authorization</code> header in the following format: <code>Bearer &lt;user_JWT&gt;</code>. For more information about user JWT, see the <strong>Security</strong> block for this call.\n</div>",
        "operationId": "verify-promotion-code",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/code-path-param"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Promotions_200-verify-promo-code"
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-client-auth"
          },
          "403": {
            "$ref": "#/components/responses/Promotions_403-auth-header"
          },
          "404": {
            "$ref": "#/components/responses/Promotions_404-verify-promo-code"
          },
          "422": {
            "$ref": "#/components/responses/Promotions_422-verify-promo-code"
          }
        },
        "security": [
          {
            "XsollaLoginUserJWT": []
          }
        ],
        "summary": "Vérifier un code promotionnel",
        "tags": [
          "promotions-common"
        ],
        "x-badges": [
          {
            "color": "#80eaff",
            "name": "Client-side"
          }
        ]
      }
    },
    "/v2/project/{project_id}/user/clan/contributors/{reward_chain_id}/top": {
      "get": {
        "description": "Retrieves the list of top 10 contributors to the specific reward chain under the current user's clan. If a user doesn't belong to a clan, the call returns an empty array. <br> <div class=\"note\">\n  <strong>Note</strong><br><br>\n    This API call uses a user JWT for authorization.<br><br>\n    Include the token in the <code>Authorization</code> header in the following format: <code>Bearer &lt;user_JWT&gt;</code>. For more information about user JWT, see the <strong>Security</strong> block for this call.\n</div>",
        "operationId": "get-user-clan-top-contributors",
        "parameters": [
          {
            "description": "ID de projet.",
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "example": 44056,
              "type": "integer"
            }
          },
          {
            "description": "ID de la chaîne de récompenses.",
            "in": "path",
            "name": "reward_chain_id",
            "required": true,
            "schema": {
              "example": 101,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "clan": {
                    "summary": "L'utilisateur appartient à un clan",
                    "value": [
                      {
                        "contributed_amount": 555,
                        "name": "winner"
                      },
                      {
                        "contributed_amount": 398,
                        "name": "Rocket"
                      },
                      {
                        "contributed_amount": 201,
                        "name": "MrJoe"
                      },
                      {
                        "contributed_amount": 1,
                        "name": "beginner"
                      }
                    ]
                  },
                  "without-clan": {
                    "summary": "L'utilisateur n'appartient pas à un clan",
                    "value": []
                  }
                },
                "schema": {
                  "items": {
                    "properties": {
                      "contributed_amount": {
                        "description": "Nombre de points de valeur apportés par l'utilisateur.",
                        "example": 100,
                        "type": "integer"
                      },
                      "name": {
                        "description": "ID de l'utilisateur. Il s'agit de l'ID envoyé à Xsolla lors de l'autorisation. Cet ID lie l'utilisateur à votre projet Xsolla Login.",
                        "example": "Rocket",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              }
            },
            "description": "Liste des 10 premiers contributeurs à la chaîne de récompenses de clan."
          }
        },
        "security": [
          {
            "XsollaLoginUserJWT": []
          }
        ],
        "summary": "Lire les 10 premiers contributeurs à la chaîne de récompense au sein du clan",
        "tags": [
          "clan-reward-chain-client"
        ],
        "x-badges": [
          {
            "color": "#80eaff",
            "name": "Client-side"
          }
        ]
      }
    },
    "/v2/project/{project_id}/user/clan/update": {
      "put": {
        "description": "Updates a current user's clan via user attributes. Claims all rewards from reward chains that were not claimed for a previous clan and returns them in the response. If the user was in a clan and now is not — their inclusion in the clan will be revoked. If the user changed the clan — the clan will be changed. <br> <div class=\"note\">\n  <strong>Note</strong><br><br>\n    This API call uses a user JWT for authorization.<br><br>\n    Include the token in the <code>Authorization</code> header in the following format: <code>Bearer &lt;user_JWT&gt;</code>. For more information about user JWT, see the <strong>Security</strong> block for this call.\n</div>",
        "operationId": "user-clan-update",
        "parameters": [
          {
            "description": "ID de projet.",
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "default": 44056,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/200-client-update-user-clan"
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-client-auth"
          }
        },
        "security": [
          {
            "XsollaLoginUserJWT": []
          }
        ],
        "summary": "Mise à jour du clan de l'utilisateur actuel",
        "tags": [
          "clan-reward-chain-client"
        ],
        "x-badges": [
          {
            "color": "#80eaff",
            "name": "Client-side"
          }
        ]
      }
    },
    "/v2/project/{project_id}/user/daily_chain": {
      "get": {
        "description": "Client endpoint. Gets the current user's daily rewards.\n<div class=\"notice\"><strong>Notice</strong><br><br>A method returns a paginated list of items. The maximum and default value is <strong>50 items per response.</strong> To get more items from the list, use the <code>limit</code> and <code>offset</code> parameters and fetch more pages. For example, when calling a method with <code>limit = 25</code> and <code>offset = 100</code>, the response returns 25 items starting from the 101st item in the overall list.</div> <br> <div class=\"note\">\n  <strong>Note</strong><br><br>\n    This API call uses a user JWT for authorization.<br><br>\n    Include the token in the <code>Authorization</code> header in the following format: <code>Bearer &lt;user_JWT&gt;</code>. For more information about user JWT, see the <strong>Security</strong> block for this call.\n</div>",
        "operationId": "get-daily-chains-list",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/limit-query-param"
          },
          {
            "$ref": "#/components/parameters/offset-query-param"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/200-client-get-daily-chains-list"
          },
          "401": {
            "$ref": "#/components/responses/401-client-auth-error"
          }
        },
        "security": [
          {
            "XsollaLoginUserJWT": []
          }
        ],
        "summary": "Lire les récompenses quotidiennes de l'utilisateur actuel",
        "tags": [
          "daily-chain-client"
        ],
        "x-badges": [
          {
            "color": "#80eaff",
            "name": "Client-side"
          }
        ]
      }
    },
    "/v2/project/{project_id}/user/daily_chain/{daily_chain_id}": {
      "get": {
        "description": "Client endpoint. Gets the current user’s daily reward by its ID. <br> <div class=\"note\">\n  <strong>Note</strong><br><br>\n    This API call uses a user JWT for authorization.<br><br>\n    Include the token in the <code>Authorization</code> header in the following format: <code>Bearer &lt;user_JWT&gt;</code>. For more information about user JWT, see the <strong>Security</strong> block for this call.\n</div>",
        "operationId": "get-user-daily-chain-by-id",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/daily_chain_id-path-param"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "$ref": "#/components/examples/200-client-daily-chain"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/client-daily-chain-model"
                }
              }
            },
            "description": "Récompense quotidienne de l'utilisateur récupérée avec succès."
          },
          "404": {
            "$ref": "#/components/responses/404-daily-chain-not-found"
          }
        },
        "security": [
          {
            "XsollaLoginUserJWT": []
          }
        ],
        "summary": "Lire la récompense quotidienne de l'utilisateur actuel par son ID",
        "tags": [
          "daily-chain-client"
        ],
        "x-badges": [
          {
            "color": "#80eaff",
            "name": "Client-side"
          }
        ]
      }
    },
    "/v2/project/{project_id}/user/daily_chain/{daily_chain_id}/step/number/{step_number}/claim": {
      "post": {
        "description": "Client endpoint. Claims the current user's step reward from a daily reward. All steps can only be claimed in sequential order. The reward for a missed step cannot be obtained for virtual or real currency, or by watching an ad <br> <div class=\"note\">\n  <strong>Note</strong><br><br>\n    This API call uses a user JWT for authorization.<br><br>\n    Include the token in the <code>Authorization</code> header in the following format: <code>Bearer &lt;user_JWT&gt;</code>. For more information about user JWT, see the <strong>Security</strong> block for this call.\n</div>",
        "operationId": "claim-user-daily-chain-step-reward",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/daily_chain_id-path-param"
          },
          {
            "$ref": "#/components/parameters/daily_chain_step_number-path-param"
          }
        ],
        "responses": {
          "204": {
            "description": "Récompense de l'utilisateur actuel pour l'étape de la récompense quotidienne réclamée avec succès."
          },
          "401": {
            "$ref": "#/components/responses/401-client-auth-error"
          },
          "404": {
            "$ref": "#/components/responses/404-daily-chain-step-not-found"
          },
          "422": {
            "content": {
              "application/json": {
                "examples": {
                  "invalid-step": {
                    "$ref": "#/components/examples/422-daily-chain-claim-error-invalid-step"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/daily-chain-error-model"
                }
              }
            },
            "description": "Impossible de réclamer l'étape."
          }
        },
        "security": [
          {
            "XsollaLoginUserJWT": []
          }
        ],
        "summary": "Réclamer une étape de récompense quotidienne",
        "tags": [
          "daily-chain-client"
        ],
        "x-badges": [
          {
            "color": "#80eaff",
            "name": "Client-side"
          }
        ]
      }
    },
    "/v2/project/{project_id}/user/offer_chain": {
      "get": {
        "description": "Gets the current user’s offer chains.\n<div class=\"notice\"><strong>Notice</strong><br><br>All projects have a limit on the number of items that can be returned in a single response. The default and maximum value is <strong>30 items per response</strong>. To get more data, use the <code>limit</code> and <code>offset</code> query parameters for pagination.</div> <br> <div class=\"note\">\n  <strong>Note</strong><br><br>\n    This API call uses a user JWT for authorization.<br><br>\n    Include the token in the <code>Authorization</code> header in the following format: <code>Bearer &lt;user_JWT&gt;</code>. For more information about user JWT, see the <strong>Security</strong> block for this call.\n</div>",
        "operationId": "get-offer-chains-list",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/limit-query-param"
          },
          {
            "$ref": "#/components/parameters/offset-query-param"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/200-client-get-offer-chains-list"
          }
        },
        "security": [
          {
            "XsollaLoginUserJWT": []
          }
        ],
        "summary": "Lire les chaînes d'offres de l'utilisateur actuel",
        "tags": [
          "offer-chain-client"
        ],
        "x-badges": [
          {
            "color": "#80eaff",
            "name": "Client-side"
          }
        ]
      }
    },
    "/v2/project/{project_id}/user/offer_chain/{offer_chain_id}": {
      "get": {
        "description": "Gets the current user’s offer chain by the offer chain's ID. <br> <div class=\"note\">\n  <strong>Note</strong><br><br>\n    This API call uses a user JWT for authorization.<br><br>\n    Include the token in the <code>Authorization</code> header in the following format: <code>Bearer &lt;user_JWT&gt;</code>. For more information about user JWT, see the <strong>Security</strong> block for this call.\n</div>",
        "operationId": "get-user-offer-chain-by-id",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/offer_chain_id-path-param"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "$ref": "#/components/examples/200-client-offer-chain"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/client-offer-chain-model"
                }
              }
            },
            "description": "Chaîne d'offres de l'utilisateur récupérée avec succès."
          },
          "404": {
            "$ref": "#/components/responses/404-offer-chain-not-found"
          }
        },
        "security": [
          {
            "XsollaLoginUserJWT": []
          }
        ],
        "summary": "Lire une chaîne d'offres de l'utilisateur actuel par ID",
        "tags": [
          "offer-chain-client"
        ],
        "x-badges": [
          {
            "color": "#80eaff",
            "name": "Client-side"
          }
        ]
      }
    },
    "/v2/project/{project_id}/user/offer_chain/{offer_chain_id}/step/number/{step_number}/claim": {
      "post": {
        "description": "Completes the current user’s progression through the offer chain step and grants the associated reward.\n<div class=\"notice\">\n  <strong>Notice</strong><br><br>\n    Use this call only for free steps in the offer chain.\n    For steps that require payment in real currency, use the <a href=\"/api/shop-builder/operation/order-user-offer-chain-step-reward\">Create order for paid offer chain step</a> call instead.\n</div> <br> <div class=\"note\">\n  <strong>Note</strong><br><br>\n    This API call uses a user JWT for authorization.<br><br>\n    Include the token in the <code>Authorization</code> header in the following format: <code>Bearer &lt;user_JWT&gt;</code>. For more information about user JWT, see the <strong>Security</strong> block for this call.\n</div>",
        "operationId": "claim-user-offer-chain-step-reward",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/offer_chain_id-path-param"
          },
          {
            "$ref": "#/components/parameters/offer_chain_step_number-path-param"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "order_id": 641
                    }
                  }
                },
                "schema": {
                  "properties": {
                    "order_id": {
                      "description": "ID de commande.",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Étape gratuite réclamée avec succès et récompense attribuée."
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-client-auth"
          },
          "404": {
            "$ref": "#/components/responses/404-offer-chain-step-not-found"
          },
          "422": {
            "content": {
              "application/json": {
                "examples": {
                  "invalid-step": {
                    "$ref": "#/components/examples/422-offer-chain-claim-error-invalid-step"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/offer-chain-error-model"
                }
              }
            },
            "description": "Impossible de réclamer l'étape. Assurez-vous que toutes les étapes précédentes sont terminées et que l'étape est bien marquée comme gratuite."
          }
        },
        "security": [
          {
            "XsollaLoginUserJWT": []
          }
        ],
        "summary": "Réclamer une étape de chaîne d'offres gratuite",
        "tags": [
          "offer-chain-client"
        ],
        "x-badges": [
          {
            "color": "#80eaff",
            "name": "Client-side"
          }
        ]
      }
    },
    "/v2/project/{project_id}/user/offer_chain/{offer_chain_id}/step/number/{step_number}/order": {
      "post": {
        "description": "Creates an order for the item associated with the specified paid offer chain step. The created order gets the `new` order status.\n\nTo open the payment UI in a new window, use the following link: `https://secure.xsolla.com/paystation4/?token={token}`, where `{token}` is the received token.\n\nFor testing purposes, use this URL: `https://sandbox-secure.xsolla.com/paystation4/?token={token}`.\n\n<div class=\"notice\">\n  <strong>Notice</strong> <br><br>\n    This method must be used on the client side. The user's IP address is used to determine the country, which affects the currency and available payment methods. Using this method from the server side may result in incorrect currency detection and affect payment methods in <a href=\"https://developers.xsolla.com/fr/doc/pay-station/\">Pay Station</a>.\n</div><br>\n\n<div class=\"notice\">\n  <strong>Notice</strong><br><br>\n    Use this call only for paid offer chain steps.\n    For free steps, use the <a href=\"/api/shop-builder/operation/claim-user-offer-chain-step-reward\">Claim free offer chain step</a> call instead.\n</div>\n<br>\n<div class=\"note\">\n  <strong>Note</strong><br><br>\n    This API call uses a user JWT for authorization.<br><br>\n    Include the token in the <code>Authorization</code> header in the following format: <code>Bearer &lt;user_JWT&gt;</code>. For more information about user JWT, see the <strong>Security</strong> block for this call.\n</div>",
        "operationId": "order-user-offer-chain-step-reward",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/offer_chain_id-path-param"
          },
          {
            "$ref": "#/components/parameters/offer_chain_step_number-path-param"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Cart-Payment_200-order-created"
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-client-auth"
          },
          "404": {
            "$ref": "#/components/responses/404-offer-chain-step-not-found"
          },
          "422": {
            "content": {
              "application/json": {
                "examples": {
                  "invalid-step": {
                    "$ref": "#/components/examples/422-offer-chain-claim-error-invalid-step"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/offer-chain-error-model"
                }
              }
            },
            "description": "Impossible d'acheter l'étape."
          }
        },
        "security": [
          {
            "XsollaLoginUserJWT": []
          }
        ],
        "summary": "Créer une commande pour une étape payante de la chaîne d'offres",
        "tags": [
          "offer-chain-client",
          "payment-client-side"
        ],
        "x-badges": [
          {
            "color": "#80eaff",
            "name": "Client-side"
          }
        ]
      }
    },
    "/v2/project/{project_id}/user/reward_chain": {
      "get": {
        "description": "Client endpoint. Gets the current user’s reward chains.\n<div class=\"notice\">\n  <strong>Attention</strong><br><br>\n    All projects have the limitation to the number of items that you can\n    get in the response. The default and maximum value is <strong>50 items\n    per response.</strong> To get more data page by page, use <b>limit</b>\n    and <b>offset</b> fields.\n</div> <br> <div class=\"note\">\n  <strong>Note</strong><br><br>\n    This API call uses a user JWT for authorization.<br><br>\n    Include the token in the <code>Authorization</code> header in the following format: <code>Bearer &lt;user_JWT&gt;</code>. For more information about user JWT, see the <strong>Security</strong> block for this call.\n</div>",
        "operationId": "get-reward-chains-list",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/limit-query-param"
          },
          {
            "$ref": "#/components/parameters/offset-query-param"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/200-client-get-reward-chains-list"
          }
        },
        "security": [
          {
            "XsollaLoginUserJWT": []
          }
        ],
        "summary": "Lire les chaînes de récompenses de l'utilisateur actuel",
        "tags": [
          "reward-chain-client"
        ],
        "x-badges": [
          {
            "color": "#80eaff",
            "name": "Client-side"
          }
        ]
      }
    },
    "/v2/project/{project_id}/user/reward_chain/{reward_chain_id}/balance": {
      "get": {
        "description": "Client endpoint. Gets the current user’s value point balance. <br> <div class=\"note\">\n  <strong>Note</strong><br><br>\n    This API call uses a user JWT for authorization.<br><br>\n    Include the token in the <code>Authorization</code> header in the following format: <code>Bearer &lt;user_JWT&gt;</code>. For more information about user JWT, see the <strong>Security</strong> block for this call.\n</div>",
        "operationId": "get-user-reward-chain-balance",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/reward_chain_id-path-param"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/200-client-get-user-reward-chain-balance"
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-client-auth"
          }
        },
        "security": [
          {
            "XsollaLoginUserJWT": []
          }
        ],
        "summary": "Lire le solde de points de valeur de l'utilisateur actuel",
        "tags": [
          "reward-chain-client"
        ],
        "x-badges": [
          {
            "color": "#80eaff",
            "name": "Client-side"
          }
        ]
      }
    },
    "/v2/project/{project_id}/user/reward_chain/{reward_chain_id}/step/{step_id}/claim": {
      "post": {
        "description": "Client endpoint. Claims the current user’s step reward from a reward chain. <br> <div class=\"note\">\n  <strong>Note</strong><br><br>\n    This API call uses a user JWT for authorization.<br><br>\n    Include the token in the <code>Authorization</code> header in the following format: <code>Bearer &lt;user_JWT&gt;</code>. For more information about user JWT, see the <strong>Security</strong> block for this call.\n</div>",
        "operationId": "claim-user-reward-chain-step-reward",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/reward_chain_id-path-param"
          },
          {
            "$ref": "#/components/parameters/reward_chain_step_id-path-param"
          }
        ],
        "responses": {
          "204": {
            "description": "Récompense de l'utilisateur actuel pour l'étape de la chaîne de récompenses réclamée avec succès."
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-client-auth"
          },
          "404": {
            "$ref": "#/components/responses/404-reward-chain-step-not-found"
          },
          "422": {
            "$ref": "#/components/responses/422-reward-chain-step-reward-can-not-claimed"
          }
        },
        "security": [
          {
            "XsollaLoginUserJWT": []
          }
        ],
        "summary": "Réclamer la récompense d'une étape",
        "tags": [
          "reward-chain-client"
        ],
        "x-badges": [
          {
            "color": "#80eaff",
            "name": "Client-side"
          }
        ]
      }
    },
    "/v3/project/{project_id}/admin/coupon": {
      "get": {
        "description": "Récupère la liste des promotions par coupon d'un projet.",
        "operationId": "get-coupons",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/limit-query-param"
          },
          {
            "$ref": "#/components/parameters/offset-query-param"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Promotions_200-get-coupons"
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-basic-auth"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Lire la liste des promotions par coupon",
        "tags": [
          "promotions-coupons"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      },
      "post": {
        "description": "Crée une promotion par coupon.",
        "operationId": "admin-create-coupon",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/Promotions_coupon-create"
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "external_id": "coupon_external_id"
                    }
                  }
                },
                "schema": {
                  "properties": {
                    "external_id": {
                      "$ref": "#/components/schemas/Promotions_coupon-external_id"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Le coupon a été créé avec succès."
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-basic-auth"
          },
          "422": {
            "$ref": "#/components/responses/Promotions_422-invalid-coupon"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Créer une promotion par coupon",
        "tags": [
          "promotions-coupons"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v3/project/{project_id}/admin/coupon/{external_id}": {
      "delete": {
        "description": "Supprime la [promotion par coupon](https://developers.xsolla.com/fr/doc/shop-builder/features/coupons/). Les conséquences suivantes s'en suivent :\n* La promotion disparaît de la liste des promotions configurées dans votre projet ;\n* Elle n'est plus appliquée au catalogue des objets. L'utilisateur ne peut plus obtenir d'objets bonus à travers cette promotion.\n\nAprès la suppression, la promotion ne peut pas être restaurée.\nLes coupons de la promotion supprimée peuvent être [ajoutés](https://developers.xsolla.com/fr/api/shop-builder/operation/create-coupon-code/) à des promotions existantes.",
        "operationId": "delete-coupon-promotion",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/external_id-promotion-path-param"
          }
        ],
        "responses": {
          "204": {
            "description": "Promotion par coupon supprimée avec succès."
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-basic-auth"
          },
          "404": {
            "$ref": "#/components/responses/Promotions_404-admin-coupon"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Supprimer une promotion par coupon",
        "tags": [
          "promotions-coupons"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      },
      "get": {
        "description": "Récupère des informations sur une promotion par coupon spécifique.",
        "operationId": "get-coupon",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/external_id-promotion-path-param"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "bonus": [
                        {
                          "quantity": 100,
                          "sku": "com.xsolla.diamonds_1"
                        }
                      ],
                      "external_id": "summer20221",
                      "is_enabled": true,
                      "name": {
                        "en-US": "Coupon name",
                        "ru-RU": "Название купона"
                      },
                      "promotion_periods": [
                        {
                          "date_from": "2020-04-15T18:16:00+05:00",
                          "date_until": "2020-04-25T18:16:00+05:00"
                        },
                        {
                          "date_from": "2020-05-15T18:16:00+05:00",
                          "date_until": "2020-05-25T18:16:00+05:00"
                        }
                      ],
                      "redeem_code_limit": null,
                      "redeem_total_limit": 100,
                      "redeem_user_limit": null,
                      "total_limit_state": {
                        "available": 50,
                        "reserved": 10,
                        "used": 40
                      }
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/admin-promotions_200-get-coupon-promotion-model"
                }
              }
            },
            "description": "Le coupon a été reçu avec succès."
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-basic-auth"
          },
          "404": {
            "$ref": "#/components/responses/Promotions_404-admin-coupon"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Lire une promotion par coupon",
        "tags": [
          "promotions-coupons"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      },
      "put": {
        "description": "Met à jour une promotion par coupon",
        "operationId": "update-coupon-promotion",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/external_id-promotion-path-param"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/Promotions_coupon-update"
        },
        "responses": {
          "204": {
            "description": "Le coupon a été mis à jour avec succès."
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-basic-auth"
          },
          "404": {
            "$ref": "#/components/responses/Promotions_404-admin-coupon"
          },
          "422": {
            "$ref": "#/components/responses/Promotions_422-invalid-coupon"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Mettre à jour une promotion par coupon",
        "tags": [
          "promotions-coupons"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v3/project/{project_id}/admin/promocode": {
      "get": {
        "description": "Récupère la liste des codes promo d'un projet.",
        "operationId": "get-promo-codes",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/limit-query-param"
          },
          {
            "$ref": "#/components/parameters/offset-query-param"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Promotions_200-get-promocodes"
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-basic-auth"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Lire la liste des promotions par code promo",
        "tags": [
          "promotions-promo-codes"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      },
      "post": {
        "description": "Crée une promotion par code promo.",
        "operationId": "create-promo-code",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/Promotions_promocode-create"
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "external_id": "coupon_external_id"
                    }
                  }
                },
                "schema": {
                  "properties": {
                    "external_id": {
                      "$ref": "#/components/schemas/Promotions_coupon-external_id"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Le code promo a été créé avec succès."
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-basic-auth"
          },
          "422": {
            "$ref": "#/components/responses/Promotions_422-invalid-coupon"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Créer une promotion par code promo",
        "tags": [
          "promotions-promo-codes"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v3/project/{project_id}/admin/promocode/{external_id}": {
      "delete": {
        "description": "Supprime la [promotion par code promo](https://developers.xsolla.com/fr/doc/shop-builder/features/promo-codes/). Les conséquences suivantes s'en suivent :\n* La promotion disparaît de la liste des promotions configurées dans votre projet ;\n* Elle n'est plus appliquée au catalogue des objets ni au panier. L'utilisateur ne peut plus obtenir d'objets bonus ou acheter des objets à travers cette promotion.\n\nAprès la suppression, la promotion ne peut pas être restaurée.\nLes codes promo de la promotion supprimée peuvent être [ajoutés](https://developers.xsolla.com/fr/api/shop-builder/operation/create-promo-code-code/) à des promotions existantes.",
        "operationId": "delete-promo-code",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/external_id-promotion-path-param"
          }
        ],
        "responses": {
          "204": {
            "description": "Code promo supprimé avec succès."
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-basic-auth"
          },
          "404": {
            "$ref": "#/components/responses/Promotions_404-admin-promocode"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Supprimer une promotion par code promo",
        "tags": [
          "promotions-promo-codes"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      },
      "get": {
        "description": "Récupère des informations sur une promotion par code promo spécifique.",
        "operationId": "get-promo-code",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/external_id-promotion-path-param"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "simple": {
                    "value": {
                      "bonus": [
                        {
                          "quantity": 100,
                          "sku": "com.xsolla.diamonds_1"
                        }
                      ],
                      "discount": {
                        "percent": "10.99"
                      },
                      "discounted_items": null,
                      "excluded_promotions": [
                        23,
                        45
                      ],
                      "external_id": "summer20221",
                      "is_enabled": true,
                      "name": {
                        "en-US": "Coupon name",
                        "ru-RU": "Название купона"
                      },
                      "promotion_periods": [
                        {
                          "date_from": "2020-04-15T18:16:00+05:00",
                          "date_until": "2020-04-25T18:16:00+05:00"
                        },
                        {
                          "date_from": "2020-05-15T18:16:00+05:00",
                          "date_until": "2020-05-25T18:16:00+05:00"
                        }
                      ],
                      "redeem_code_limit": 1,
                      "redeem_total_limit": 100,
                      "redeem_user_limit": null,
                      "total_limit_state": {
                        "available": 50,
                        "reserved": 10,
                        "used": 40
                      }
                    }
                  },
                  "with item price conditions": {
                    "value": {
                      "bonus": [
                        {
                          "quantity": 100,
                          "sku": "com.xsolla.diamonds_3"
                        }
                      ],
                      "discount": {
                        "percent": "10.99"
                      },
                      "discounted_items": null,
                      "excluded_promotions": [
                        23,
                        45
                      ],
                      "external_id": "summer20221",
                      "is_enabled": true,
                      "item_price_conditions": [
                        {
                          "operator": "gt",
                          "value": "10.0000"
                        },
                        {
                          "operator": "lt",
                          "value": "50.0000"
                        }
                      ],
                      "name": {
                        "en-US": "Coupon name",
                        "ru-RU": "Название купона"
                      },
                      "promotion_periods": [
                        {
                          "date_from": "2020-04-15T18:16:00+05:00",
                          "date_until": "2020-04-25T18:16:00+05:00"
                        }
                      ],
                      "redeem_code_limit": 1,
                      "redeem_total_limit": 100,
                      "redeem_user_limit": null,
                      "total_limit_state": {
                        "available": 50,
                        "reserved": 10,
                        "used": 40
                      }
                    }
                  },
                  "with price conditions": {
                    "value": {
                      "bonus": [
                        {
                          "quantity": 100,
                          "sku": "com.xsolla.diamonds_2"
                        }
                      ],
                      "discount": {
                        "percent": "10.99"
                      },
                      "discounted_items": null,
                      "external_id": "summer20221",
                      "is_enabled": true,
                      "name": {
                        "en-US": "Coupon name",
                        "ru-RU": "Название купона"
                      },
                      "price_conditions": [
                        {
                          "operator": "gt",
                          "value": "10.0000"
                        },
                        {
                          "operator": "lt",
                          "value": "50.0000"
                        }
                      ],
                      "promotion_periods": [
                        {
                          "date_from": "2020-04-15T18:16:00+05:00",
                          "date_until": "2020-04-25T18:16:00+05:00"
                        }
                      ],
                      "redeem_code_limit": 1,
                      "redeem_total_limit": 100,
                      "redeem_user_limit": null,
                      "total_limit_state": {
                        "available": 50,
                        "reserved": 10,
                        "used": 40
                      }
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Promotions_200-get-promocode-promotion-model"
                }
              }
            },
            "description": "Le code promo a été reçu avec succès."
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-basic-auth"
          },
          "404": {
            "$ref": "#/components/responses/Promotions_404-admin-promocode"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Lire une promotion par code promo",
        "tags": [
          "promotions-promo-codes"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      },
      "put": {
        "description": "Met à jour une promotion par code promo.",
        "operationId": "update-promo-code",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/external_id-promotion-path-param"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/Promotions_promocode-update"
        },
        "responses": {
          "204": {
            "description": "Le code promo a été mis à jour avec succès."
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-basic-auth"
          },
          "404": {
            "$ref": "#/components/responses/Promotions_404-admin-promocode"
          },
          "422": {
            "$ref": "#/components/responses/Promotions_422-invalid-coupon"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Mettre à jour une promotion par code promo",
        "tags": [
          "promotions-promo-codes"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v3/project/{project_id}/admin/promotion": {
      "get": {
        "description": "Récupère la liste des promotions d'un projet.",
        "operationId": "get-promotion-list",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/limit-query-param"
          },
          {
            "$ref": "#/components/parameters/offset-query-param"
          },
          {
            "$ref": "#/components/parameters/enabled-query-param"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Promotions_200-get-promotions"
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-basic-auth"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Lire la liste de toutes les promotions",
        "tags": [
          "promotions-common"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v3/project/{project_id}/admin/promotion/bonus": {
      "get": {
        "description": "Récupère la liste des promotions par bonus au sein d'un projet.\n\nLa promotion ajoute des objets bonus gratuits à l'achat effectué par l'utilisateur.\nLa promotion peut être appliquée à chaque achat au sein d'un projet ou à un achat comprenant des objets particuliers.",
        "operationId": "get-bonus-promotion-list",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/limit-query-param"
          },
          {
            "$ref": "#/components/parameters/offset-query-param"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Promotions_200-get-bonus-promotions"
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-basic-auth"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Lire la liste des promotions par bonus",
        "tags": [
          "promotions-bonuses"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      },
      "post": {
        "description": "Crée une promotion par bonus.\n\nLa promotion ajoute des objets bonus gratuits à l'achat effectué par l'utilisateur.\nLa promotion peut être appliquée à chaque achat au sein d'un projet ou à un achat comprenant des objets particuliers.",
        "operationId": "create-bonus-promotion",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/Promotions_create-update-bonus-promotion"
        },
        "responses": {
          "201": {
            "$ref": "#/components/responses/Promotions_201-create-promotion"
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-basic-auth"
          },
          "422": {
            "$ref": "#/components/responses/Promotions_422-admin-promotion-missed-bonus-property"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Créer une promotion par bonus",
        "tags": [
          "promotions-bonuses"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v3/project/{project_id}/admin/promotion/item": {
      "get": {
        "description": "Récupère la liste des promotions sur les objets d'un projet.\n\nLes promotions offrent une remise (%) sur les objets.\nLa remise s'applique à tous les prix des objets spécifiés.",
        "operationId": "get-item-promotion-list",
        "parameters": [
          {
            "description": "ID de projet.",
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "default": 59080,
              "type": "integer"
            }
          },
          {
            "description": "Nombre maximal d'éléments sur une page.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "type": "integer"
            }
          },
          {
            "description": "Numéro de l'élément à partir duquel la liste est générée (le décompte commence à 0).",
            "in": "query",
            "name": "offset",
            "required": false,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Promotions_200-get-item-promotions"
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-basic-auth"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Lire la liste des promotions sur des objets",
        "tags": [
          "promotions-discounts"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      },
      "post": {
        "description": "Crée une promotion par réduction pour un objet.\n\nLes promotions offrent une remise (%) sur les objets.\nLa remise s'applique à tous les prix des objets spécifiés.",
        "operationId": "create-item-promotion",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/Promotions_create-update-item-promotion"
        },
        "responses": {
          "201": {
            "$ref": "#/components/responses/Promotions_201-create-promotion"
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-basic-auth"
          },
          "422": {
            "$ref": "#/components/responses/Promotions_422-admin-promotion-missed-items-property"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Créer une promotion par réduction pour un objet",
        "tags": [
          "promotions-discounts"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v3/project/{project_id}/admin/promotion/redeemable/code/{code}": {
      "get": {
        "description": "Récupère des informations sur la promotion par un code promo ou un code de coupon.",
        "operationId": "get-redeemable-promotion-by-code",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/code-path-param"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/200-admin-get-redeemable-by-code"
          },
          "401": {
            "$ref": "#/components/responses/401-invalid-basic-auth"
          },
          "404": {
            "$ref": "#/components/responses/404-code-not-found"
          },
          "405": {
            "$ref": "#/components/responses/405-method-not-found"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Lire une promotion utilisable par code",
        "tags": [
          "promotions-common"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v3/project/{project_id}/admin/promotion/{promotion_id}/bonus": {
      "delete": {
        "description": "Supprime la [promotion par bonus](https://developers.xsolla.com/fr/doc/shop-builder/features/bonuses/). Les conséquences suivantes s'en suivent :\n* La promotion disparaît de la liste des promotions configurées dans votre projet ;\n* Elle n'est plus appliquée au catalogue des objets ni au panier. L'utilisateur ne peut plus obtenir d'objets bonus à travers cette promotion.\n\nAprès la suppression, la promotion ne peut pas être restaurée.",
        "operationId": "delete-bonus-promotion",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/promotion_id-path-param"
          }
        ],
        "responses": {
          "204": {
            "description": "Promotion supprimée avec succès."
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-basic-auth"
          },
          "404": {
            "$ref": "#/components/responses/Promotions_404-admin-promotion"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Supprimer une promotion par bonus",
        "tags": [
          "promotions-bonuses"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      },
      "get": {
        "description": "Récupère des informations sur une promotion par bonus.\n\nLa promotion ajoute des objets bonus gratuits à l'achat effectué par l'utilisateur.\nLa promotion peut être appliquée à chaque achat au sein d'un projet ou à un achat comprenant des objets particuliers.",
        "operationId": "get-bonus-promotion",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/promotion_id-path-param"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Promotions_200-admin-get-bonus-promotion"
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-basic-auth"
          },
          "404": {
            "$ref": "#/components/responses/Promotions_404-admin-promotion"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Lire une promotion par bonus",
        "tags": [
          "promotions-bonuses"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      },
      "put": {
        "description": "Met à jour une promotion.\n\n<div class='note'><b>Note</b><br><br>Les nouvelles données remplaceront les anciennes. Si vous souhaitez mettre à jour une promotion partiellement, assurez-vous de passer toutes les données requises dans la requête.</div>\n\nLa promotion ajoute des objets bonus gratuits à l'achat effectué par l'utilisateur.\nLa promotion peut être appliquée à chaque achat au sein d'un projet ou à un achat comprenant des objets particuliers.",
        "operationId": "update-bonus-promotion",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/promotion_id-path-param"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/Promotions_create-update-bonus-promotion"
        },
        "responses": {
          "204": {
            "description": "La promotion a été mise à jour avec succès."
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-basic-auth"
          },
          "422": {
            "$ref": "#/components/responses/Promotions_422-admin-promotion-missed-bonus-property"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Mettre à jour une promotion par bonus",
        "tags": [
          "promotions-bonuses"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v3/project/{project_id}/admin/promotion/{promotion_id}/item": {
      "delete": {
        "description": "Supprime la [promotion par réduction](https://developers.xsolla.com/fr/doc/shop-builder/features/discounts/). Les conséquences suivantes s'en suivent :\n* La promotion disparaît de la liste des promotions configurées dans votre projet ;\n* Elle n'est plus appliquée au catalogue des objets ni au panier. L'utilisateur ne peut plus acheter d'objets à travers cette promotion.\n\nAprès la suppression, la promotion ne peut pas être restaurée.",
        "operationId": "delete-item-promotion",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/promotion_id-path-param"
          }
        ],
        "responses": {
          "204": {
            "description": "Promotion supprimée avec succès."
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-basic-auth"
          },
          "404": {
            "$ref": "#/components/responses/Promotions_404-admin-promotion"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Supprimer une promotion sur les objets",
        "tags": [
          "promotions-discounts"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      },
      "get": {
        "description": "Récupère des informations sur les promotions qui s'appliquent à des objets spécifiques.\n\nLes promotions offrent une remise (%) sur des objets.\nLa remise s'applique à tous les prix des objets spécifiés.",
        "operationId": "get-item-promotion",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/promotion_id-path-param"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "discount": {
                        "percent": "20.00"
                      },
                      "excluded_promotions": [
                        23,
                        45
                      ],
                      "id": 1,
                      "is_enabled": true,
                      "items": [
                        {
                          "sku": "com.xsolla.elven_helmet_1"
                        },
                        {
                          "sku": "com.xsolla.elven_armor_1"
                        }
                      ],
                      "limits": {
                        "per_item": null,
                        "per_user": {
                          "total": 10
                        },
                        "recurrent_schedule": {
                          "per_user": {
                            "day_of_month": null,
                            "day_of_week": null,
                            "displayable_reset_next_date": "2023-02-28T11:00:00+08:00",
                            "displayable_reset_start_date": "2023-02-28T11:00:00+08:00",
                            "interval_type": "daily",
                            "reset_next_date": 1677553200,
                            "time": "11:00:00+08:00"
                          }
                        }
                      },
                      "name": {
                        "en-US": "Promotion",
                        "ru-RU": "Акция"
                      },
                      "price_conditions": [
                        {
                          "operator": "ge",
                          "value": "10.0000"
                        },
                        {
                          "operator": "le",
                          "value": "50.0000"
                        }
                      ],
                      "promotion_periods": [
                        {
                          "date_from": "2020-04-15T18:16:00+05:00",
                          "date_until": "2020-04-25T18:16:00+05:00"
                        }
                      ]
                    }
                  }
                },
                "schema": {
                  "example": {
                    "discount": {
                      "percent": "15.00"
                    },
                    "id": 1,
                    "is_enabled": true,
                    "items": [
                      {
                        "sku": "com.xsolla.elven_sword_1"
                      },
                      {
                        "sku": "com.xsolla.elven_helmet_1"
                      },
                      {
                        "sku": "com.xsolla.elven_armor_1"
                      }
                    ],
                    "name": {
                      "en-US": "Promotion",
                      "ru-RU": "Акция"
                    },
                    "promotion_periods": [
                      {
                        "date_from": "2020-04-15T18:16:00+05:00",
                        "date_until": "2020-04-25T18:16:00+05:00"
                      }
                    ]
                  },
                  "properties": {
                    "attribute_conditions": {
                      "$ref": "#/components/schemas/promotion_user-attribute_conditions_model-get"
                    },
                    "discount": {
                      "properties": {
                        "percent": {
                          "default": "10.00",
                          "description": "Pourcentage de la remise.\nLe prix de l'objet sera diminué d'une valeur calculée à l'aide de ce pourcentage.",
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      },
                      "type": "object"
                    },
                    "excluded_promotions": {
                      "$ref": "#/components/schemas/excluded_promotions"
                    },
                    "id": {
                      "description": "ID de la promotion. Identifiant unique de la promotion au sein du projet.",
                      "type": "integer"
                    },
                    "is_enabled": {
                      "$ref": "#/components/schemas/Promotions_is_enabled"
                    },
                    "items": {
                      "items": {
                        "description": "Liste des objets qui seront concernés par la remise.",
                        "properties": {
                          "sku": {
                            "default": "elven_sword",
                            "description": "UGS de l'objet.",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "type": [
                        "array",
                        "null"
                      ]
                    },
                    "limits": {
                      "$ref": "#/components/schemas/Promotions_promotion_limits_response"
                    },
                    "name": {
                      "additionalProperties": {
                        "example": {
                          "en-US": "Promotion",
                          "ru-RU": "Акция"
                        },
                        "type": "string"
                      },
                      "description": "Nom de la promotion. Doit comprendre des paires clé/valeur,\noù la clé est une région au format \"^[a-z]{2}-[A-Z]{2}$\", la valeur est une chaîne.",
                      "type": "object"
                    },
                    "price_conditions": {
                      "$ref": "#/components/schemas/price_conditions_discount"
                    },
                    "promotion_periods": {
                      "$ref": "#/components/schemas/promotion_periods"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "La promotion sur les objets a été reçu avec succès."
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-basic-auth"
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "errorCode": 9502,
                      "errorMessage": "[0401-9502]: Can not find promotion with ID = 111425 in project 59080",
                      "statusCode": 404
                    }
                  }
                },
                "schema": {
                  "properties": {
                    "errorCode": {
                      "example": 9502,
                      "type": "integer"
                    },
                    "errorMessage": {
                      "example": "[0401-9502]: Can not find promotion with ID = 111425 in project 59080",
                      "type": "string"
                    },
                    "statusCode": {
                      "example": 404,
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Promotion non trouvée. Assurez-vous que le paramètre `promotion_id` est correct."
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Lire une promotion sur les objets",
        "tags": [
          "promotions-discounts"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      },
      "put": {
        "description": "Met à jour la promotion.\n\n<div class='note'><b>Note</b><br><br>Les nouvelles données remplaceront les anciennes. Si vous souhaitez mettre à jour une promotion partiellement, assurez-vous de passer toutes les données requises dans la requête.</div>\n\nLes promotions offrent une remise (%) sur les objets.\nLa remise s'applique à tous les prix des objets spécifiés.",
        "operationId": "update-item-promotion",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/promotion_id-path-param"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/Promotions_create-update-item-promotion"
        },
        "responses": {
          "204": {
            "description": "La promotion a été mise à jour avec succès."
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-basic-auth"
          },
          "404": {
            "$ref": "#/components/responses/Promotions_404-admin-promotion"
          },
          "422": {
            "$ref": "#/components/responses/Promotions_422-admin-promotion-missed-items-property"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Mettre à jour une promotion sur les objets",
        "tags": [
          "promotions-discounts"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v3/project/{project_id}/admin/reward_chain": {
      "get": {
        "description": "Récupère une liste de chaînes de récompenses.\n\n<div class=\"notice\"><strong>Attention</strong><br><br>Tous les projets sont soumis à une limite de nombre d'objets que vous pouvez obtenir dans la réponse. La valeur par défaut et la valeur maximale sont <strong>10 éléments par réponse.</strong> Pour obtenir plus de données page par page, utilisez les champs <b>limit</b> et <b>offset</b>.</div>",
        "operationId": "admin-get-reward-chains",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/limit-query-param"
          },
          {
            "$ref": "#/components/parameters/offset-query-param"
          },
          {
            "$ref": "#/components/parameters/enabled-query-param"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/200-admin-get-list-reward-chains"
          },
          "401": {
            "$ref": "#/components/responses/401-invalid-basic-auth"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Lire une liste de chaînes de récompenses",
        "tags": [
          "reward-chain-value-points-admin"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      },
      "post": {
        "description": "Crée une chaîne de récompenses.",
        "operationId": "admin-create-reward-chain",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/create-reward-chain"
        },
        "responses": {
          "201": {
            "$ref": "#/components/responses/201-admin-create-reward-chain"
          },
          "401": {
            "$ref": "#/components/responses/401-invalid-basic-auth"
          },
          "422": {
            "$ref": "#/components/responses/422-admin-create-update-rc-vp-invalid-request"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Créer une chaîne de récompenses",
        "tags": [
          "reward-chain-value-points-admin"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v3/project/{project_id}/admin/reward_chain/id/{reward_chain_id}": {
      "delete": {
        "description": "Supprime une chaîne de récompenses spécifique.",
        "operationId": "admin-delete-reward-chain",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/reward_chain_id-path-param"
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204-admin-delete-reward-chain"
          },
          "401": {
            "$ref": "#/components/responses/401-invalid-basic-auth"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Supprimer une chaîne de récompenses",
        "tags": [
          "reward-chain-value-points-admin"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      },
      "get": {
        "description": "Récupère des informations sur une chaîne de récompenses spécifique.",
        "operationId": "admin-get-reward-chain",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/reward_chain_id-path-param"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/200-admin-get-reward-chain"
          },
          "401": {
            "$ref": "#/components/responses/401-invalid-basic-auth"
          },
          "404": {
            "$ref": "#/components/responses/404-admin-reward-chain-not-found"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Lire une chaîne de récompenses",
        "tags": [
          "reward-chain-value-points-admin"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      },
      "put": {
        "description": "Met à jour une chaîne de récompenses spécifique.",
        "operationId": "admin-update-reward-chain",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/reward_chain_id-path-param"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/update-reward-chain"
        },
        "responses": {
          "204": {
            "$ref": "#/components/responses/204-admin-update-reward-chain"
          },
          "401": {
            "$ref": "#/components/responses/401-invalid-basic-auth"
          },
          "404": {
            "$ref": "#/components/responses/404-admin-reward-chain-not-found"
          },
          "422": {
            "$ref": "#/components/responses/422-admin-create-update-rc-vp-invalid-request"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Mettre à jour une chaîne de récompenses",
        "tags": [
          "reward-chain-value-points-admin"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v3/project/{project_id}/admin/reward_chain/id/{reward_chain_id}/reset": {
      "post": {
        "description": "Resets the value points balance and progress of all users in the reward chain.<br> The balance is tied to the value points type, not to a specific reward chain. If these value points are used in other chains, the balance will be reset in all chains that use these value points.<br> After the reset, you can update the reward chain’s validity period, and users will be able to progress through it again.<br> The clan balance is calculated as the sum of its members’ balances. Therefore, after the reset, the clan balance is also reset.<br> This request is irreversible and applies to all users of the project.\n\n<div class=\"notice\"><strong>Notice</strong>\n  <br><br>\n  You should not reset the reward chain during its validity period. In this case, users may lose earned value points before they claim their reward.\n</div>",
        "operationId": "admin-reset-reward-chain",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/reward_chain_id-path-param"
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204-admin-reset-reward-chain"
          },
          "401": {
            "$ref": "#/components/responses/401-invalid-basic-auth"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Réinitialiser la chaîne de récompenses",
        "tags": [
          "reward-chain-value-points-admin"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v3/project/{project_id}/admin/reward_chain/id/{reward_chain_id}/toggle": {
      "put": {
        "description": "Active/désactive la chaîne de récompenses.",
        "operationId": "admin-toggle-reward-chain",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/reward_chain_id-path-param"
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204-admin-toggle-reward-chain"
          },
          "401": {
            "$ref": "#/components/responses/401-invalid-basic-auth"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Basculer une chaîne de récompenses",
        "tags": [
          "reward-chain-value-points-admin"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v3/project/{project_id}/admin/unique_catalog_offer": {
      "get": {
        "description": "Récupère la liste des offres promotionnelles uniques d'un projet.",
        "operationId": "get-unique-catalog-offers",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/limit-query-param"
          },
          {
            "$ref": "#/components/parameters/offset-query-param"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Promotions_200-get-unique-catalog-offers"
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-basic-auth"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Lire la liste des offres promotionnelles uniques du catalogue",
        "tags": [
          "promotions-unique-catalog-offers"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      },
      "post": {
        "description": "Crée une offre promotionnelle unique dans le catalogue.",
        "operationId": "admin-create-unique-catalog-offer",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/Promotions_unique_catalog_offer-create"
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "external_id": "coupon_external_id"
                    }
                  }
                },
                "schema": {
                  "properties": {
                    "external_id": {
                      "$ref": "#/components/schemas/Promotions_coupon-external_id"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "L'offre unique a été créée avec succès dans le catalogue."
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-basic-auth"
          },
          "422": {
            "$ref": "#/components/responses/Promotions_422-invalid-coupon"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Créer une offre promotionnelle unique dans le catalogue",
        "tags": [
          "promotions-unique-catalog-offers"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    },
    "/v3/project/{project_id}/admin/unique_catalog_offer/{external_id}": {
      "delete": {
        "description": "Supprime la [promotion par offre unique du catalogue](https://developers.xsolla.com/fr/doc/shop-builder/features/unique-offer/). Les conséquences suivantes s'en suivent :\n* La promotion disparaît de la liste des promotions configurées dans votre projet ;\n* Elle n'est plus appliquée au catalogue des objets ni au panier. L'utilisateur ne peut plus acheter d'objets à travers cette promotion.\n\nAprès la suppression, la promotion ne peut pas être restaurée.",
        "operationId": "delete-unique-catalog-offer-promotion",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/external_id-promotion-path-param"
          }
        ],
        "responses": {
          "204": {
            "description": "Offre unique du catalogue supprimée avec succès."
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-basic-auth"
          },
          "404": {
            "$ref": "#/components/responses/Promotions_404-admin-coupon"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Supprimer une promotion par offre unique du catalogue",
        "tags": [
          "promotions-unique-catalog-offers"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      },
      "get": {
        "description": "Récupère une promotion par offre unique du catalogue spécifique.",
        "operationId": "get-unique-catalog-offer",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/external_id-promotion-path-param"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "value": {
                      "external_id": "secret_shop",
                      "is_enabled": true,
                      "items": [
                        "helmet",
                        "sword",
                        "shield"
                      ],
                      "name": {
                        "en-US": "Secret shop",
                        "ru-RU": "Секретный магазин"
                      },
                      "promotion_periods": [
                        {
                          "date_from": "2020-04-15T18:16:00+05:00",
                          "date_until": "2020-04-25T18:16:00+05:00"
                        },
                        {
                          "date_from": "2020-05-15T18:16:00+05:00",
                          "date_until": "2020-05-25T18:16:00+05:00"
                        }
                      ],
                      "redeem_code_limit": 1,
                      "redeem_total_limit": 100,
                      "redeem_user_limit": 1,
                      "total_limit_state": {
                        "available": 50,
                        "reserved": 10,
                        "used": 40
                      }
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Promotions_200-get-unique-catalog-offer-promotion-model"
                }
              }
            },
            "description": "Offre unique du catalogue reçue avec succès."
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-basic-auth"
          },
          "404": {
            "$ref": "#/components/responses/Promotions_404-admin-coupon"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Lire une promotion par offre unique du catalogue",
        "tags": [
          "promotions-unique-catalog-offers"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      },
      "put": {
        "description": "Met à jour une promotion par offre unique du catalogue.",
        "operationId": "update-unique-catalog-offer-promotion",
        "parameters": [
          {
            "$ref": "#/components/parameters/project_id-path-param"
          },
          {
            "$ref": "#/components/parameters/external_id-promotion-path-param"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/Promotions_unique_catalog_offer-update"
        },
        "responses": {
          "204": {
            "description": "Offre unique du catalogue mise à jour avec succès."
          },
          "401": {
            "$ref": "#/components/responses/Promotions_401-invalid-basic-auth"
          },
          "404": {
            "$ref": "#/components/responses/Promotions_404-admin-coupon"
          },
          "422": {
            "$ref": "#/components/responses/Promotions_422-invalid-coupon"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Mettre à jour une promotion par offre unique du catalogue",
        "tags": [
          "promotions-unique-catalog-offers"
        ],
        "x-badges": [
          {
            "color": "#95ff80",
            "name": "Server-side"
          },
          {
            "color": "#d7dee0",
            "name": "Admin"
          }
        ]
      }
    }
  },
  "servers": [
    {
      "url": "https://store.xsolla.com/api"
    }
  ],
  "tags": [
    {
      "description": "Promotion usage limits allow you to restrict the number of times a specific user can use a promotion. You can also configure scheduled limit resets.\n\nLimits are stored on the Xsolla side and are configured in the promotion settings in [Publisher Account](https://publisher.xsolla.com/0/projects/0/storefront/promotions) or via the `limits` object in the following API calls:\n* [Create discount promotion for item](/fr/api/liveops/promotions-discounts/create-item-promotion/) or [Update discount promotion](/fr/api/liveops/promotions-discounts/update-item-promotion)\n* [Create bonus promotion](/fr/api/liveops/promotions-bonuses/create-bonus-promotion/) or [Update bonus promotion](/fr/api/liveops/promotions-bonuses/update-bonus-promotion)\n\nLimit information is returned in the `items.promotions.limits` object in the following API calls for retrieving the items catalog:\n* [Get virtual items list](/fr/api/catalog/virtual-items-currency-catalog/get-virtual-items/)\n* [Get virtual currency list](/fr/api/catalog/virtual-items-currency-catalog/get-virtual-currency/)\n* [Get virtual currency packages list](/fr/api/catalog/virtual-items-currency-catalog/get-virtual-currency-package/)\n* [Get bundles list](/fr/api/catalog/bundles-catalog/get-bundle-list/)\n* [Get games list](/fr/api/catalog/game-keys-catalog/get-games-list/)\n\nThe API calls in the **Management** subsection of the **Limits** group allow you to retrieve the current state of limits and update them for a specific user — for example, reset the counter after a quest is completed or manually adjust the remaining quantity.\n\n<div class=\"note\">\n  <b>Note</b><br><br>\n  For detailed information on configuring limits in the catalog, refer to the <a href=\"/liveops/promotion-tools/liveops-number-limits/\">Promotion usage limits</a> section.\n</div>\n\nYou can configure [limits.per_user](/fr/api/liveops/promotions-discounts/create-item-promotion#promotions-discounts/create-item-promotion/t=request&path=limits) — a limit on the number of times a promotion can be used by a single user.\n\nUnauthenticated users always see the maximum number of promotion uses.\n\nTo show the user's remaining promotion uses with the active limit applied, pass user authorization data when requesting the items catalog.\n\nTo configure a scheduled reset period — daily, weekly, or monthly — pass the `limits.recurrent_schedule` object when [creating](/fr/api/liveops/promotions-discounts/create-item-promotion#promotions-discounts/create-item-promotion/t=request&path=limits/recurrent_schedule) or [updating](/fr/api/liveops/promotions-discounts/update-item-promotion#promotions-discounts/update-item-promotion/t=request&path=limits/recurrent_schedule) a promotion.\n\n**Limit configuration and enforcement scenario**\n\n1. You create a promotion using the [Create discount promotion for item](/fr/api/liveops/promotions-discounts/create-item-promotion/) or [Create bonus promotion](/fr/api/liveops/promotions-bonuses/create-bonus-promotion/) API call and pass the `limits` object.\n2. You request the catalog for an unauthenticated user — the response returns the maximum number of promotion uses in the `items.promotions.limits` object.\n3. The user logs in.\n4. You request the catalog with the user's authorization token — the response returns the remaining number of uses with the active limit applied.\n5. The user selects a promotional item and makes a purchase.\n6. After successful payment, Xsolla updates the `items.promotions.limits.per_user` value. When it reaches `0`, the item is returned in the catalog API calls without a discount or bonus.\n7. You can update the limit using the API calls from the **Management** subsection:\n   * [refresh all promotion limits for specified user](/fr/api/liveops/user-limits-admin/reset-all-user-promotions-limit/) or [refresh limits for a specific promotion](/fr/api/liveops/user-limits-admin/reset-user-promotion-limit/)\n   * [set a specific limit value](/fr/api/liveops/user-limits-admin/set-user-promotion-limit/)\n   * [increase](/fr/api/liveops/user-limits-admin/add-user-promotion-limit/) or [decrease the available number of uses](/fr/api/liveops/user-limits-admin/remove-user-promotion-limit/)\n8. You retrieve the updated limit value in `items.promotions.limits` on the next catalog request made with the user's authorization token and display it to the user.\n\n![Promotion limits](https://cdn.xsolla.net/developers/current/images/api_docs/promotion-limit.svg)",
      "name": "promotion-limits-overview",
      "x-displayName": "Overview"
    },
    {
      "description": "Promotions are marketing tools designed to attract new users and increase sales. Using Xsolla API, you can configure the following promotions:\n\n* Discounts — reduced prices on selected items.\n* Bonuses — items granted to users along with their purchase.\n* Coupons — codes that allow users to receive one or more bonus items when redeeming.\n* Promo codes — codes that allow users to receive bonus items, a discount on a specific item, or a discount on the entire cart. Unlike coupons that are redeemed after the user enters them, promo codes are redeemed during a purchase (at checkout).\n* Unique offers — hidden items displayed in the catalog to users who have entered a unique offer code. If the code is not entered, the items are not displayed.\n\nExample flow for configuring a discount promotion:\n1. Create items using the calls from the **Admin** subsection of the [Virtual items and currency](/fr/api/catalog/virtual-items-currency-admin/admin-get-virtual-items-list/), [Bundles](/fr/api/catalog/bundles-admin/admin-create-bundle), or [Game keys](/fr/api/catalog/game-keys-admin) groups.\n2. Create a promotion using the [Create discount promotion for item](/fr/api/liveops/promotions-discounts/create-item-promotion/) call. In the `items` array, pass the necessary item SKUs.\n3. Set up promotion validity periods. To do this, call the [Create discount promotion for item](/fr/api/liveops/promotions-discounts/create-item-promotion/) or [Update item promotion](/fr/api/liveops/promotions-discounts/update-item-promotion/) methods, and pass the `promotion_periods` field as an array of objects where `date_from` defines the start, and `date_until` defines the end date of the validity period.\n4. Activate a promotion using the [Update item promotion](/fr/api/liveops/promotions-discounts/update-item-promotion/) call. Pass the `\"is_enabled\": true` parameter.\n5. To get information about item prices, including discounted prices, call the client API methods for getting an item catalog from the [Common > Catalog](/fr/api/catalog/tag/common-catalog/), [Virtual Items and Currency > Catalog](/fr/api/catalog/virtual-items-currency-catalog/get-virtual-items/), and [Bundles > Catalog](/fr/api/catalog/bundles-catalog/get-bundle-list/) subsections.\n\n![Promotion configuration example](https://cdn.xsolla.net/developers/current/images/api_docs/promo-overview.svg)\n\nRefer to our documentation for detailed information about configuring promotions:\n* [Discounts](https://developers.xsolla.com/fr/liveops/promotion-tools/discounts/)\n* [Bonuses](https://developers.xsolla.com/fr/liveops/promotion-tools/bonuses/)\n* [Coupons](https://developers.xsolla.com/fr/liveops/promotion-tools/coupons/)\n* [Promo codes](https://developers.xsolla.com/fr/liveops/promotion-tools/promo-codes/)\n* [Unique catalog offers](https://developers.xsolla.com/fr/liveops/promotion-tools/unique-offer/)",
      "name": "promotions-overview",
      "x-displayName": "Overview"
    },
    {
      "description": "You can call API methods from this subsection to manage different types of promotions.",
      "name": "promotions-common",
      "x-displayName": "Common API calls"
    },
    {
      "description": "Call API methods from this subsection to configure and manage coupon promotions.\n\n<div class=\"note\">\n  <p><b>Note</b></p>\n  <p>Refer to our <a href=\"https://developers.xsolla.com/fr/liveops/promotion-tools/coupons/\">documentation</a> for detailed information about coupons.</p>\n</div>",
      "name": "promotions-coupons",
      "x-displayName": "Coupons"
    },
    {
      "description": "Call API methods from this subsection to configure and manage promo code promotions.\n\n<div class=\"note\">\n  <p><b>Note</b></p>\n  <p>Refer to our <a href=\"https://developers.xsolla.com/fr/liveops/promotion-tools/promo-codes/\">documentation</a> for detailed information about promo codes.</p>\n</div>",
      "name": "promotions-promo-codes",
      "x-displayName": "Codes promo"
    },
    {
      "description": "Call API methods from this subsection to configure and manage unique catalog offers.\n\n<div class=\"note\">\n  <p><b>Note</b></p>\n  <p>Refer to our <a href=\"https://developers.xsolla.com/fr/liveops/promotion-tools/unique-offer/\">documentation</a> for detailed information about unique offers.</p>\n</div>",
      "name": "promotions-unique-catalog-offers",
      "x-displayName": "Offres uniques du catalogue"
    },
    {
      "description": "Call API methods from this subsection to configure and manage discount promotions.\n\n<div class=\"note\">\n  <p><b>Note</b></p>\n  <p>Refer to our <a href=\"https://developers.xsolla.com/fr/liveops/promotion-tools/discounts/\">documentation</a> for detailed information about discounts.</p>\n</div>",
      "name": "promotions-discounts",
      "x-displayName": "Remises"
    },
    {
      "description": "Call API methods from this subsection to configure and manage bonus promotions.\n\n<div class=\"note\">\n  <p><b>Note</b></p>\n  <p>Refer to our <a href=\"https://developers.xsolla.com/fr/liveops/promotion-tools/bonuses/\">documentation</a> for detailed information about bonuses.</p>\n</div>",
      "name": "promotions-bonuses",
      "x-displayName": "Bonus"
    },
    {
      "description": "Personalization allows you to specify the conditions for displaying the item catalog and applying promotions only for specific authorized users. Conditions are defined based on user attributes and allow you to offer items and promotions that are most relevant to particular users.\n\nThe following personalization types are available:\n\n\n* [Xsolla-side personalization](/fr/liveops/promotion-tools/personalization/#guides_personalization_on_xsolla_side). Personalization rules and logic are configured and stored on the Xsolla side. You pass user attributes, and Xsolla uses them to generate a personalized catalog.\n* [Partner-side personalization](/fr/liveops/promotion-tools/personalization/#guides_personalization_on_partner_side). You configure personalization rules and logic on your side and send a final catalog payload for a specific user to Xsolla.\n\n<div class=\"note\">\n  <b>Note</b><br><br>\n  You can use only one personalization type. To change it, follow the\n  <a href=\"/liveops/promotion-tools/personalization/#guides_personalization_change\">instructions</a>.\n</div>\n\n\nTo configure personalization on the Xsolla side using the Xsolla API:\n\n1. Create items using the API calls from the **Admin** subsection of the [Virtual items and currency](/fr/api/catalog/virtual-items-currency-admin/admin-get-virtual-items-list/), [Bundles](/fr/api/catalog/bundles-admin/admin-create-bundle) or [Game keys](/fr/api/catalog/game-keys-admin) groups.\n2. [Set up user attributes using the Xsolla Login API](/fr/liveops/promotion-tools/personalization/#web_shop_guide_personalization_setting_attributes) and keep them synchronized by updating data in Xsolla whenever changes occur in your game.\n3. Configure personalization for items or promotions:\n    * To personalize the item catalog, define catalog display rules using the [Create catalog filter rule](/fr/api/liveops/personalized-catalog/create-filter-rule) API call:\n        * In the [attribute_conditions](/fr/api/liveops/personalized-catalog/create-filter-rule#personalized-catalog/create-filter-rule/t=request&path=attribute_conditions) array, specify the conditions that determine item availability based on user attributes.\n        * In the [items](/fr/api/liveops/personalized-catalog/create-filter-rule#personalized-catalog/create-filter-rule/t=request&path=items) array, provide the list of items that should be visible to the user if their attributes match the specified conditions.\n    * To configure personalized promotions, use the [create and update API calls for the required promotion type](/fr/api/liveops/promotions-discounts/create-item-promotion). In the [attribute_conditions](/fr/api/liveops/promotions-discounts/create-item-promotion) array, specify the conditions that determine promotion availability based on user attributes.\n\n4. Pass the [user JWT](/fr/api/login/getting-user-token#getting-user-token) with user attributes to the [catalog retrieval API calls](https://developers.xsolla.com/fr/api/catalog/virtual-items-currency-catalog/get-virtual-items) to receive a personalized catalog.\n\n**Sequence for configuring and applying Xsolla-side personalization for item catalog:**\n\n![Personalization for item catalog](https://cdn.xsolla.net/developers/current/images/api_docs/personalization-catalog.png)\n\n**Sequence for configuring and applying Xsolla-side personalization for promotions:**\n\n![Personalization for promotions](https://cdn.xsolla.net/developers/current/images/api_docs/personalization-liveops.png)\n\n<div class=\"note\">\n<b>Note</b><br><br>\nDetailed information is provided:\n<ul>\n  <li>in the <a href=\"/liveops/promotion-tools/personalization/\">guide to configuring personalization on the Xsolla side and the partner side</a></li>\n  <li>in the step-by-step tutorial on <a href=\"/doc/shop-builder/tutorials/personalization-tutorial/\">item catalog personalization on the Xsolla side</a></li>\n</ul>\n</div>",
      "name": "personalized-catalog",
      "x-displayName": "Catalogue personnalisé"
    },
    {
      "name": "user-limits-admin",
      "x-displayName": "Gestion"
    },
    {
      "name": "reward-chain-value-points-admin",
      "x-displayName": "Administrateur"
    },
    {
      "name": "reward-chain-client",
      "x-displayName": "Client"
    },
    {
      "name": "clan-reward-chain-client",
      "x-displayName": "Client clans"
    },
    {
      "name": "daily-chain-admin",
      "x-displayName": "Administrateur"
    },
    {
      "name": "daily-chain-client",
      "x-displayName": "Client"
    },
    {
      "name": "offer-chain-admin",
      "x-displayName": "Administrateur"
    },
    {
      "name": "offer-chain-client",
      "x-displayName": "Client"
    },
    {
      "name": "upsell-admin",
      "x-displayName": "Administrateur"
    },
    {
      "name": "upsell-client",
      "x-displayName": "Client"
    }
  ],
  "x-tagGroups": [
    {
      "name": "PROMOTIONS",
      "tags": [
        "promotions-overview",
        "promotions-common",
        "promotions-coupons",
        "promotions-promo-codes",
        "promotions-unique-catalog-offers",
        "promotions-discounts",
        "promotions-bonuses"
      ]
    },
    {
      "name": "PERSONNALISATION",
      "tags": [
        "personalized-catalog"
      ]
    },
    {
      "name": "LIMITES",
      "tags": [
        "promotion-limits-overview",
        "user-limits-admin"
      ]
    },
    {
      "name": "CHAÎNES DE RÉCOMPENSE ET POINTS DE VALEUR",
      "tags": [
        "reward-chain-value-points-admin",
        "reward-chain-client",
        "clan-reward-chain-client"
      ]
    },
    {
      "name": "CHAINES QUOTIDIENNES",
      "tags": [
        "daily-chain-admin",
        "daily-chain-client"
      ]
    },
    {
      "name": "CHAÎNES D'OFFRES",
      "tags": [
        "offer-chain-admin",
        "offer-chain-client"
      ]
    },
    {
      "name": "UPSELL",
      "tags": [
        "upsell-admin",
        "upsell-client"
      ]
    }
  ]
}