openapi: 3.1.0
info:
  description: "# Aperçu\n\n* **Version :** 2.0.0\n* **Serveurs** : `https://store.xsolla.com/api`\n* **[Contactez-nous par e-mail](mailto:integration@xsolla.com)**\n* **URL de contact :** https://xsolla.com/\n* **Version TLS requise :** 1.2\n\nLiveOps est un ensemble d'outils permettant de stimuler l'engagement continu des joueurs grâce à des promotions et des offres personnalisées.\n\nUtilisez l'API pour gérer les fonctionnalités suivantes\_:\n\n* **Promotions** — créez et gérez des campagnes par coupons, codes promo, réductions et bonus.\n* **Personnalisation** — spécifiez les conditions d'affichage du catalogue des objets et appliquez des promotions uniquement pour certains utilisateurs autorisés.\n* **Limites de promotion** — définissez une limite sur le nombre d'utilisations d'une promotion par utilisateur et configurez des réinitialisations planifiées de ces limites.\n* **Chaînes de récompenses et points de valeur** — configurez des parcours de récompenses débloqués progressivement selon l'accumulation de points de valeur.\n* **Chaînes quotidiennes** — configurez des récompenses quotidiennes récurrentes pour encourager les connexions régulières.\n* **Chaînes d'offres** — créez des offres d'achat séquentielles avec une tarification par paliers et des options de récompense gratuite.\n* **Upsell** — méthode de vente consistant à proposer à l'utilisateur l'achat d'un objet à valeur ajoutée.\n\n## Appels API\n\nL'API est divisée en **groupes suivants** :\n\n* **<nt>Admin</nt>** — appels pour créer, mettre à jour, activer et supprimer des campagnes et des configurations de chaînes. Authentifié via [authentification d'accès de base](https://developers.xsolla.com/fr/payment-ui-and-flow/payment-ui/how-to-get-payment-token/#payments_solution_get_user_auth_token_basic_auth) avec vos identifiants de commerçant ou de projet.\n* **<nt>Client</nt>** — appels pour récupérer les promotions disponibles, obtenir des chaînes actives, utiliser des codes et réclamer des récompenses au nom des utilisateurs finaux authentifiés. Authentifié via JWT utilisateur.\n\n# Authentification\n\nLes appels API nécessitent une authentification au nom d'un utilisateur ou d'un projet. Le schéma d'authentification à utiliser figure dans la section **Security** de la description de chaque appel.\n\n## Authentification à l'aide du JWT utilisateur\n\nL'authentification par JWT utilisateur est utilisée lorsqu'une requête provient d'un navigateur, d'une application mobile ou d'un jeu. Par défaut, le schéma `XsollaLoginUserJWT` s'applique. Pour savoir comment créer un jeton, consultez la [documentation de l'API Xsolla Login](/fr/api/login/authentication-schemes#getting-user-token).\n\nTransmettez le jeton dans l'en-tête `Authorization` au format suivant\_: `Authorization: Bearer <user_JWT>`, où `<user_JWT>` représente le jeton utilisateur. Ce jeton identifie l'utilisateur et donne accès à ses données personnalisées.\n\nVous pouvez également utiliser un [jeton pour ouvrir l’interface de paiement](/fr/api/pay-station/token/create-token).\n\n## Authentification HTTP basique\n\nL'authentification HTTP basique est utilisée pour les interactions serveur à serveur, lorsqu'un appel API est envoyé directement depuis votre serveur plutôt que depuis le navigateur ou l'application mobile d'un utilisateur. Elle repose généralement sur une [clé API](/fr/api/getting-started/#api_keys_overview).\n\n<div class=\"note\"><b>Note</b><br><br>La clé API est confidentielle et ne doit jamais être stockée ni utilisée dans une application cliente.</div>\n\nAvec l'authentification basique côté serveur, toutes les requêtes API doivent inclure l'en-tête suivant\_:\n\n- pour `basicAuth` — `Authorization: Basic <your_authorization_basic_key>`, où `your_authorization_basic_key` est la paire `project_id:api_key` encodée en Base64\n- pour `basicMerchantAuth` — `Authorization: Basic <your_authorization_basic_key>`, où `your_authorization_basic_key` est la paire `merchant_id:api_key` encodée en Base64\n\nVous trouverez les valeurs des paramètres dans le [Compte éditeur](https://publisher.xsolla.com/)\_:\n\n- `merchant_id` s'affiche\_:\n  - Dans **Company settings > Company***.\n  - Dans l'URL dans la barre d'adresse du navigateur sur n'importe quelle page du Compte éditeur. L'URL a le format suivant : `https://publisher.xsolla.com/<merchant_id>`.\n- `project_id` s'affiche\_:\n  - À côté du nom du projet dans le Compte éditeur.\n  - Dans l'URL dans la barre d'adresse du navigateur lors de l'utilisation d'un projet dans le Compte éditeur. L'URL a le format suivant\_: `https://publisher.xsolla.com/<merchant_id>/projects/<project_id>`.\n- `api_key` s'affiche dans le Compte éditeur uniquement au moment de la création et doit être stockée en toute sécurité de votre côté. Vous pouvez créer une clé API dans les sections suivantes\_:\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>Remarque</b><br><br>Si un appel API requis n'inclut pas le paramètre de chemin <code>project_id</code>, utilisez une clé API valide pour l'ensemble des projets de l'entreprise pour l'autorisation.</div>\n\nPour plus d'informations sur l'utilisation des clés API, consultez les [références API](/fr/api/getting-started/#api_keys_overview).\n\n## Authentification avec prise en charge de l'accès invité\n\nLe schéma d’authentification `AuthForCart` est utilisé pour les achats via le panier et prend en charge deux modes\_:\n\n1. **Authentification par JWT utilisateur.** Le jeton est passé dans l'en-tête `Authorization` au format suivant : `Authorization: Bearer <user_JWT>`, où `<user_JWT>` est le jeton utilisateur. Le jeton identifie l'utilisateur et donne accès aux données personnalisées. Vous pouvez également utiliser un [jeton pour ouvrir l'interface de paiement](/fr/api/pay-station/token/create-token).\n\n2. **Mode simplifié sans en-tête Authorization.** Ce mode est réservé aux utilisateurs non authentifiés et peut être utilisé uniquement pour la [vente de clés de jeu](/fr/doc/buy-button/how-to/set-up-authentication/#guides_buy_button_selling_items_not_authenticated_users). Au lieu d'un jeton, la requête doit inclure les en-têtes suivants\_:\n   - `x-unauthorized-id` avec un identifiant de requête\n   - `x-user` avec l'adresse e-mail de l'utilisateur encodée en Base64\n\n## Liens utiles\n\n- [Appels API par modèle d'interaction](https://developers.xsolla.com/fr/api/catalog/)\n- [Types de enpoints](https://developers.xsolla.com/fr/api/catalog/)\n- [Gestion des erreurs](https://developers.xsolla.com/fr/api/catalog/)\n- [Clés API](https://developers.xsolla.com/fr/api/catalog/)\n\n# Structure de l'entité principale\n\nLes objets de tous types (objets virtuels, lots, monnaie virtuelle et clés) partagent une structure de données similaire. Comprendre cette structure de base facilite l’utilisation de l'API et la navigation dans la documentation.\n\n<div class=\"note\"><b>Note</b><br><br>Certains appels peuvent inclure des champs supplémentaires, mais ils ne modifient pas la structure de base.</div>\n\n**Identification**\n\n- `merchant_id` — ID de l'entreprise dans le [Compte éditeur](https://publisher.xsolla.com/)\n- `project_id` — ID de projet dans le Compte éditeur\n- `sku` — UGS de l'objet, unique au sein du projet\n\n**Affichage en magasin**\n\n- `name` — nom de l'objet\n- `description` — description de l'objet\n- `image_url` — URL de l'image\n- `is_enabled` — disponibilité de l'objet\n- `is_show_in_store` — affichage de l'objet dans le catalogue\n\nPour plus d'informations sur la gestion de la disponibilité des objets dans le catalogue, consultez la [documentation](/fr/items-catalog/catalog-features/items-availability/).\n\n**Organisation**\n\n- `type` — type d'objet, par exemple, un objet virtuel (`virtual_item`) ou un lot (`bundle`)\n- `groups` — groupes auxquels l'objet appartient\n- `order` — ordre d'affichage dans le catalogue\n\n**Conditions de vente**\n\n- `prices` — prix en devise réelle ou monnaie virtuelle\n- `limits` — limites d'achat\n- `periods` — périodes de disponibilité\n- `regions` — restrictions régionales\n\n**Exemple de structure d'entité principale\_:**\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# Processus d'achat de base\n\nL'API Xsolla vous permet d'implémenter la logique de magasin en jeu, notamment la récupération du catalogue des objets, la gestion du panier, la création de commandes et le suivi de leur statut. Selon le scénario d'intégration, les appels API sont répartis en sections **Administrateur** et **Catalogue**, qui utilisent différents [schémas d'authentification](/fr/api/catalog/section/authentication).\n\nL'exemple suivant montre un processus de base pour configurer et exploiter un magasin, de la création d'objets à l'achat.\n\n## Création d'objets et de groupes (Administrateur)\n\nCréez un catalogue des objets pour votre magasin, tels que des objets virtuels, des lots ou de la monnaie virtuelle.\n\nExemples d'appels API :\n- [Créer un objet virtuel](/fr/api/catalog/virtual-items-currency-admin/admin-create-virtual-item)\n- [Créer un lot](/fr/api/catalog/bundles-admin/admin-create-bundle)\n- [Créer une monnaie virtuelle](/fr/api/catalog/virtual-items-currency-admin/admin-create-virtual-currency)\n\n## Configuration de promotions, chaînes et limites (Administrateur)\n\nConfigurez des outils d'acquisition d'utilisateurs et de monétisation, tels que des remises, des bonus, des récompenses quotidiennes ou des chaînes d'offres.\n\nExemples d'appels API :\n- [Créer une promotion de bonus](/fr/api/liveops/promotions-bonuses/create-bonus-promotion)\n- [Créer une récompense quotidienne](/fr/api/liveops/daily-chain-admin/admin-create-daily-chain)\n- [Créer une offre de catalogue unique](/fr/api/liveops/promotions-unique-catalog-offers/admin-create-unique-catalog-offer)\n\n## Récupération d'informations sur un objet (Client)\n\nConfigurez l'affichage des objets dans l'application.\n\n<div class=\"notice\">\n  <b>Remarque</b><br><br>\n    N'utilisez pas les appels API de la sous-section Administrateur pour créer un catalogue utilisateur. Ces appels API présentent des <a href=\"https://developers.xsolla.com/fr/api/getting-started/#api_rate_limits\" target=\"_blank\">limites de taux</a> et ne sont pas destinés au trafic utilisateur.\n</div>\n\n<br>\n\nExemples d'appels API :\n- [Lire la liste des objets virtuels](/fr/api/catalog/virtual-items-currency-catalog/get-virtual-items)\n- [Lire la liste des groupes d'objets](/fr/api/catalog/virtual-items-currency-catalog/get-item-groups)\n- [Lire la liste des lots](/fr/api/catalog/bundles-catalog/get-bundle-list)\n- [Lire la liste des objets vendables](/fr/api/catalog/common-catalog/get-sellable-items)\n\n<div class=\"note\">\n  <b>Note</b><br><br>\n    Par défaut, les appels API du catalogue renvoient les objets disponibles dans la boutique au moment de la requête. Pour récupérer les objets inactifs ou à durée limitée, ajoutez le paramètre <code>\"show_inactive_time_limited_items\": 1</code> dans la requête du catalogue.\n</div>\n\n## Vente des objets\n\nVous pouvez vendre des objets en utilisant les méthodes suivantes :\n- Achat rapide — vendre une UGS plusieurs fois.\n- Achat via le panier — l'utilisateur ajoute des objets au panier, supprime des objets et modifie les quantités dans une seule commande.\n\nSi un objet est acheté en utilisant de la monnaie virtuelle au lieu des devises réelles, utilisez l'appel API [Créer une commande à partir d'un objet spécifique en monnaie virtuelle](/fr/api/catalog/virtual-payment/create-order-with-item-for-virtual-currency). L'interface de paiement n'est pas requise, car le coût est traité lors de l'exécution de l'appel API.\n\nPour l'achat d'un objet gratuit, utilisez l'appel API [Créer une commande avec un bien gratuit spécifique](/fr/api/catalog/free-item/create-free-order-with-item) ou l'appel API [Créer une commande à partir d'un panier gratuit](/fr/api/catalog/free-item/create-free-order). L'interface de paiement n'est pas requise, la commande est immédiatement définie sur le statut <code>done</code>.\n\n### Achat rapide\n\nUtilisez l'appel API côté client pour [créer une commande à partir d'un objet spécifique](/fr/api/catalog/payment-client-side/create-order-with-item). L'appel renvoie un jeton utilisé pour ouvrir l'interface de paiement.\n\n<div class=\"note\">\n  <b>Note</b><br><br>\n    Les informations sur les remises sont disponibles pour l'utilisateur uniquement dans l'interface de paiement. Les codes promo ne sont pas pris en charge.\n</div>\n\n### Achat via le panier\n\nLa configuration et les achats du panier peuvent être gérés côté client ou côté serveur.\n\n**Configuration et achat du panier côté client**\n\nImplémentez vous-même la logique d'ajout et de suppression des objets. Avant d'appeler l'API pour configurer un panier, vous ne disposerez pas d'informations sur les promotions qui s'appliqueront à l'achat. Le coût total ainsi que les informations des objets bonus ajoutés ne seront donc pas encore connus.\n\nImplémentez la logique suivante pour le panier\_:\n1. Après que le joueur a rempli un panier, utilisez l'appel API [Remplir le panier d'objets](/fr/api/shop-builder/operation/cart-fill/). L'appel renvoie les informations actuelles sur les objets sélectionnés (prix avant et après remises, objets bonus).\n2. Mettez à jour le contenu du panier en fonction des actions utilisateur\_:\n   - Pour ajouter un objet ou modifier la quantité de l'objet, utilisez l'appel API [Mettre à jour un objet du panier par ID de panier](/fr/api/shop-builder/operation/put-item-by-cart-id/).\n   - Pour supprimer un objet, utilisez l'appel API [Supprimer un objet du panier par ID de panier](/fr/api/shop-builder/operation/delete-item-by-cart-id/).\n\n<div class=\"note\">\n  <b>Note</b><br><br>\n    Pour obtenir le statut actuel du panier, utilisez l'appel API Lire le panier de l'utilisateur actuel.\n</div>\n\n3. Utilisez l'appel API [Créer une commande à partir de tous les objets du panier actuel](/fr/api/shop-builder/operation/create-order/). L'appel renvoie l'ID de commande et le jeton de paiement. La commande nouvellement créée est définie sur le statut <code>new</code> par défaut.\n\n**Configuration et achat du panier côté serveur**\n\nCette approche peut nécessiter davantage de temps pour configurer le panier, car chaque modification doit être effectuée via des appels API.\n\nImplémentez la logique suivante pour le panier :\n1. Après que le joueur a rempli un panier, utilisez l'appel API [Remplir le panier d'objets](/fr/api/catalog/cart-server-side). L'appel renvoie les informations à jour sur les objets sélectionnés (prix avant et après remises, objets bonus).\n2. Utilisez l'appel API [Créer une commande à partir de tous les objets du panier actuel](/fr/api/shop-builder/operation/create-order/). L'appel renvoie l'ID de commande et le jeton de paiement. La commande nouvellement créée est définie sur le statut <code>new</code> par défaut.\n\n## Ouverture de l'interface de paiement\n\nUtilisez le jeton renvoyé pour ouvrir l'interface de paiement dans une nouvelle fenêtre. D'autres méthodes d'ouverture de l'interface de paiement sont décrites dans la [documentation](/fr/payment-ui-and-flow/payment-ui/how-to-open-payment-ui/#open_payment_ui).\n\n| Action                          | Endpoint                                                                  |\n|:--------------------------------|:--------------------------------------------------------------------------|\n| Ouverture dans l'environnement de production. | <code>https://secure.xsolla.com/paystation4/?token={token}</code>         |\n| Ouverture en mode bac à sable.           | <code>https://sandbox-secure.xsolla.com/paystation4/?token={token}</code> |\n\n<div class=\"note\">\n  <b>Note</b><br><br>\n    Utilisez le mode bac à sable pendant le développement et les tests. Les achats de test n'entraînent aucun débit sur des comptes réels. Vous pouvez utiliser des <a href=\"https://developers.xsolla.com/fr/dev-resources/testing/test-cards/\">cartes bancaires de test</a>.\n\n    Après le premier paiement réel, une politique stricte du mode bac à sable s'applique. Les paiements en mode bac à sable sont disponibles uniquement pour les utilisateurs spécifiés dans la section [Company settings > Users](https://publisher.xsolla.com/0/settings/users) du Compte éditeur.\n\n    L'achat de monnaie virtuelle et d'objets en devise réelle n'est possible qu'après la signature d'un contrat de licence avec Xsolla. Pour cela, dans le [Compte éditeur](https://publisher.xsolla.com/), accédez à **Agreements & Taxes > Agreements**, complétez le formulaire et attendez la validation. Le traitement du contrat peut prendre jusqu'à 3 jours ouvrés.\n </div>\n\nPour activer ou désactiver le mode bac à sable, modifiez la valeur du paramètre `sandbox` dans la requête pour l'achat rapide et l'achat via le panier. Le mode bac à sable est désactivé par défaut.\n\nStatuts de commande possibles :\n- `new` — commande créée\n- `paid` — paiement reçu\n- `done` — objet attribué\n- `canceled` — commande annulée\n- `expired` — commande expirée\n\nSuivez le statut de la commande en utilisant l'une des méthodes suivantes\_:\n- [webhooks configurés sur votre serveur](/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- [API WebSocket](/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## Liens utiles\n\n- Authentification\n- [Appels API par modèle d'interaction](/fr/api/catalog/section/authentication)\n- [Test de paiement](/fr/dev-resources/testing/general-info/#general_overview)\n- [Configurer le suivi du statut de la commande](/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- [Limites de taux](/fr/api/login/rate-limits)\n- [Gestion des erreurs](/fr/api/getting-started/#api_errors_handling)\n- [Clés API](/fr/api/getting-started/#api_keys_overview)\n\n# Pagination\n\nLes appels API qui renvoient de grands ensembles d'enregistrements (par exemple lors de la création d'un catalogue) utilisent la pagination. La pagination est un mécanisme qui limite le nombre d'objets renvoyés dans une seule réponse et permet de récupérer les pages suivantes de manière séquentielle.\n\nUtilisez les paramètres suivants pour contrôler le nombre d'objets renvoyés\_:\n\n- `limit` — nombre d'objets par page\n- `offset` — indice du premier objet sur la page (la numérotation commence à 0)\n- `has_more` — indique si une autre page est disponible\n- `total_items_count` — nombre total d'objets\n\nExemple de requête :\n\n```\nGET /items?limit=20&offset=40\n```\n\nExemple de réponse :\n\n```json\n{\n  \"items\": [...],\n  \"has_more\": true,\n  \"total_items_count\": 135\n}\n```\n\nIl est recommandé d'envoyer des requêtes successives jusqu'à ce que la réponse renvoie `has_more = false`.\n\n# Format de date et d'heure\n\nLes dates et les valeurs temporelles sont transmises au format [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601).\n\nLes valeurs suivantes sont prises en charge\_:\n\n- Décalage UTC\n- Valeur `null` lorsqu'il n'y a pas de restriction temporelle pour l'affichage d'un objet\n- [Horodatage Unix](https://www.unixtimestamp.com/) (en secondes) utilisé dans certains champs\n\nFormat\_: `YYYY-MM-DDTHH:MM:SS±HH:MM`\n\nExemple\_: `2026-03-16T10:00:00+03:00`\n\n# Localisation\n\nXsolla prend en charge la localisation des champs destinés aux utilisateurs, tels que le nom et la description de l'objet. Les valeurs localisées sont transmises sous forme d'objet, où le code de langue est utilisé comme clé. La liste complète des langues prises en charge est disponible dans la [documentation](/fr/doc/shop-builder/references/supported-languages/).\n\n**Champs pris en charge**\n\nLes paramètres suivants peuvent être localisés\_:\n\n- `name`\n- `description`\n- `long_description`\n\n**Format de langue**\n\nLa clé de la langue peut être spécifiée dans l'un des formats suivants\_:\n\n- Code de langue à deux lettres\_: `en`, `ru`\n- Code de langue à cinq lettres\_: `en-US`, `ru-RU`, `de-DE`\n\n**Exemples**\n\nExemple avec un code de langue à deux lettres :\n\n```json\n{\n  \"name\": {\n    \"en\": \"Starter Pack\",\n    \"ru\": \"Стартовый набор\"\n  }\n}\n```\n\nExemple avec un code de langue à cinq lettres :\n\n```json\n{\n  \"description\": {\n    \"en-US\": \"Premium bundle\",\n    \"de-DE\": \"Premium-Paket\"\n  }\n}\n```\n\n# Format de réponse d'erreur\n\nEn cas d'erreur, l'API renvoie un statut HTTP ainsi qu'un corps de réponse au format JSON. La liste complète des erreurs liées au magasin est disponible dans la [documentation](/fr/dev-resources/references/errors/store-errors/).\n\n**Exemple de réponse :**\n\n```json\n{\n  \"errorCode\": 1102,\n  \"errorMessage\": \"Validation error\",\n  \"statusCode\": 422,\n  \"transactionId\": \"c9e1a...\"\n}\n```\n\n- `errorCode` — code d'erreur.\n- `errorMessage` — courte description de l'erreur.\n- `statusCode` — statut de la réponse HTTP.\n- `transactionId` — ID de la requête. Retourné uniquement dans certains cas.\n- `errorMessageExtended` — informations supplémentaires sur l'erreur, telles que les paramètres de la requête. Retournées uniquement dans certains cas.\n\n**Exemple de réponse détaillée\_:**\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**Codes de statut HTTP courants**\n\n- `400` — requête non valide\n- `401` — erreur d'authentification\n- `403` — permissions insuffisantes\n- `404` — ressource non trouvée\n- `422` — erreur de validation\n- `429` — limite de taux dépassée\n\n**Recommandations**\n\n- Gérez ensemble le statut HTTP et le corps de la réponse.\n- Utilisez `errorCode` pour traiter les erreurs liées à la logique de l'application.\n- Utilisez `transactionId` pour identifier plus rapidement les requêtes lors de l'analyse des erreurs."
  version: 2.0.0
  title: LiveOps API
servers:
  - url: https://store.xsolla.com/api
tags:
  - name: promotion-limits-overview
    x-displayName: Aperçu
    description: "Les limites d'utilisation des promotions permettent de restreindre le nombre de fois qu'un utilisateur peut utiliser une promotion. Vous pouvez également configurer des réinitialisations de limites planifiées.\n\nLes limites sont stockées côté de Xsolla et configurées dans les paramètres de promotion dans le [Compte éditeur](https://publisher.xsolla.com/0/projects/0/storefront/promotions) ou via l'objet `limits` dans les appels API suivants :\n* [Créer une promotion par réduction pour un objet](/fr/api/liveops/promotions-discounts/create-item-promotion/) ou [Mettre à jour une promotion par réduction](/fr/api/liveops/promotions-discounts/update-item-promotion)\n* [Créer une promotion par bonus](/fr/api/liveops/promotions-bonuses/create-bonus-promotion/) ou [Mettre à jour une promotion par bonus](/fr/api/liveops/promotions-bonuses/update-bonus-promotion)\n\nLes informations sur les limites sont renvoyées dans l'objet `items.promotions.limits` dans les appels API suivants de récupération du catalogue des objets\_:\n* [Lire la liste des objets virtuels](/fr/api/catalog/virtual-items-currency-catalog/get-virtual-items)\n* [Lire la liste des monnaies virtuelles](/fr/api/catalog/virtual-items-currency-catalog/get-virtual-currency)\n* [Lire la liste des packages de monnaie virtuelle](/fr/api/catalog/virtual-items-currency-catalog/get-virtual-currency-packages)\n* [Lire la liste des lots](/fr/api/catalog/bundles-catalog/get-bundle-list)\n* [Lire la liste des jeux](/fr/api/catalog/game-keys-catalog/get-games-list)\n\nLes appels API de la sous-section **Gestion** du groupe **Limites** vous permettent de récupérer l'état actuel des limites et de les mettre à jour pour un utilisateur spécifique, par exemple, réinitialiser le compteur après la fin d'une quête ou ajuster manuellement la quantité restante.\n\n<div class=\"note\">\n  <b>Note</b><br><br>\n  Pour des informations détaillées sur la configuration des limites dans le catalogue, consultez la section <a href=\"/fr/liveops/promotion-tools/liveops-number-limits/\">Promotion usage limits</a>.\n</div>\n\nVous pouvez configurer [limits.per_user](/fr/api/liveops/promotions-discounts/create-item-promotion#promotions-discounts/create-item-promotion/t=request&path=limits) — une limite du nombre d'utilisations d'une promotion par utilisateur unique.\n\nLes utilisateurs non authentifiés voient toujours le nombre maximal d'utilisations de la promotion.\n\nPour afficher le nombre d'utilisations restantes d'une promotion pour un utilisateur, avec la limite active appliquée, passez les données d'autorisation de l'utilisateur lors de la requête du catalogue des objets.\n\nPour configurer une période de réinitialisation planifiée, quotidienne, hebdomadaire ou mensuelle — passez l'objet `limits.recurrent_schedule` lors de la [création](/fr/api/liveops/promotions-discounts/create-item-promotion#promotions-discounts/create-item-promotion/t=request&path=limits/recurrent_schedule) ou de la [mise à jour](/fr/api/liveops/promotions-discounts/update-item-promotion#promotions-discounts/update-item-promotion/t=request&path=limits/recurrent_schedule) d'une promotion.\n\n**Scénario de configuration et d'application des limites**\n\n1. Vous créez une promotion en utilisant l'appel API [Créer une promotion par réduction pour un objet](/fr/api/liveops/promotions-discounts/create-item-promotion/) ou l'appel API [Créer une promotion par bonus](/fr/api/liveops/promotions-bonuses/create-bonus-promotion/) et vous passez l'objet `limits`.\n2. Vous interrogez le catalogue pour un utilisateur non authentifié, la réponse renvoie le nombre maximum d'utilisations de la promotion dans l'objet `items.promotions.limits`.\n3. L'utilisateur se connecte.\n4. Vous demandez le catalogue avec le jeton d'autorisation de l'utilisateur, la réponse renvoie le nombre d'utilisations restantes avec la limite active appliquée.\n5. L'utilisateur sélectionne un objet promotionnel et effectue un achat.\n6. Après un paiement réussi, Xsolla met à jour la valeur `items.promotions.limits.per_user`. Lorsqu'elle atteint `0`, l'objet est retourné dans les appels API du catalogue sans remise ni bonus.\n7. Vous pouvez mettre à jour la limite en utilisant les appels API de la sous-section **Management** :\n   * [Actualiser toutes les limites de promotion pour un utilisateur spécifique](/fr/api/liveops/user-limits-admin/reset-all-user-promotions-limit/) ou [réinitialiser les limites pour une promotion spécifique](/fr/api/liveops/user-limits-admin/reset-user-promotion-limit/)\n   * [Définir une valeur de limite spécifique](/fr/api/liveops/user-limits-admin/set-user-promotion-limit/)\n   * [augmenter](/fr/api/liveops/user-limits-admin/add-user-promotion-limit/) ou [diminuer le nombre d'utilisations disponibles](/fr/api/liveops/user-limits-admin/remove-user-promotion-limit/)\n8. Vous récupérez la valeur de limite mise à jour dans `items.promotions.limits` lors de la prochaine requête du catalogue effectuée avec le jeton d'autorisation de l'utilisateur, puis vous l'affichez à l'utilisateur.\n\n![Limites de promotion](https://cdn.xsolla.net/developers/current/images/api_docs/promotion-limit.svg)"
  - name: promotions-overview
    x-displayName: Aperçu
    description: "Les promotions sont des outils marketing conçus pour attirer de nouveaux utilisateurs et augmenter les ventes. Avec l'API Xsolla, vous pouvez configurer les promotions suivantes\_:\n\n* Réductions\_— prix réduits sur des objets sélectionnés.\n* Bonus\_— objets accordés aux utilisateurs lors d'un achat.\n* Coupons\_— codes permettant aux utilisateurs d'obtenir un ou plusieurs objets bonus lors de leur utilisation.\n* Codes promo\_— codes permettant aux utilisateurs d'obtenir des objets bonus, une remise sur un objet spécifique ou une remise sur l'ensemble du panier. Contrairement aux coupons, qui sont utilisés après avoir été saisis par l'utilisateur, les codes promo s'appliquent lors de l'achat, au moment du paiement.\n* Offres uniques\_— objets cachés affichés dans le catalogue uniquement aux utilisateurs ayant saisi un code d'offre unique. Sans ce code, les objets ne sont pas affichés.\n\nExemple de flux de configuration d'une promotion par réduction :\n1. Créez des objets en utilisant les appels de la sous-section **Administrateur** des groupes [Objets et devises virtuels](/fr/api/catalog/virtual-items-currency-admin/admin-get-virtual-items-list/), [Lots](/fr/api/catalog/bundles-admin/admin-create-bundle), ou [Clés de jeu](/fr/api/catalog/game-keys-admin).\n2. Créez une promotion en utilisant l'appel [Créer une promotion par réduction pour un objet](/fr/api/liveops/promotions-discounts/create-item-promotion/). Dans le tableau `items`, passez les UGS des objets nécessaires.\n3. Configurez les périodes de validité de la promotion. Pour ce faire, appelez les méthodes [Créer une promotion par réduction pour un objet](/fr/api/liveops/promotions-discounts/create-item-promotion/) ou [Mettre à jour la promotion pour un objet](/fr/api/liveops/promotions-discounts/update-item-promotion/), et passez le champ `promotion_periods` comme un tableau d'objets où `date_from` définit la date de début et `date_until` définit la date de fin de la période de validité.\n4. Activez la promotion en utilisant l'appel [Mettre à jour la promotion sur les objets](/fr/api/liveops/promotions-discounts/update-item-promotion/). Passez le paramètre `\"is_enabled\": true`.\n5. Pour obtenir des informations sur les prix des objets, y compris les prix réduits, appelez les méthodes API client de récupération du catalogue des objets à partir des sous-sections [Common > Catalog](/fr/api/catalog/tag/common-catalog/), [Virtual Items and Currency > Catalog](/fr/api/catalog/virtual-items-currency-catalog/get-virtual-items/), et [Bundles > Catalog](/fr/api/catalog/bundles-catalog/get-bundle-list/).\n\n![Exemple de configuration de promotion](https://cdn.xsolla.net/developers/current/images/api_docs/promo-overview.svg)\n\nConsultez notre documentation pour obtenir des informations détaillées sur la configuration des promotions\_:\n* [Réductions](https://developers.xsolla.com/fr/liveops/promotion-tools/discounts/)\n* [Bonus](https://developers.xsolla.com/fr/liveops/promotion-tools/bonuses/)\n* [Coupons](https://developers.xsolla.com/fr/liveops/promotion-tools/coupons/)\n* [Codes promo](https://developers.xsolla.com/fr/liveops/promotion-tools/promo-codes/)\n* [Offres de catalogue uniques](https://developers.xsolla.com/fr/liveops/promotion-tools/unique-offer/)"
  - name: promotions-common
    x-displayName: Appels API communs
    description: >-
      Appelez les méthodes API de cette sous-section pour gérer différents types
      de promotions.
  - name: promotions-coupons
    x-displayName: Coupons
    description: >-
      Appelez les méthodes API de cette sous-section pour configurer et gérer
      les promotions par coupon.


      <div class="note">
        <p><b>Note</b></p>
        <p>Consultez notre <a href="https://developers.xsolla.com/fr/liveops/promotion-tools/coupons/">documentation</a> pour obtenir des informations détaillées sur les coupons.</p>
      </div>
  - name: promotions-promo-codes
    x-displayName: Codes promo
    description: >-
      Appelez les méthodes API de cette sous-section pour configurer et gérer
      les promotions par code promo.


      <div class="note">
        <p><b>Note</b></p>
        <p>Consultez notre <a href="https://developers.xsolla.com/fr/liveops/promotion-tools/promo-codes/">documentation</a> pour obtenir des informations détaillées sur les codes promo.</p>
      </div>
  - name: promotions-unique-catalog-offers
    x-displayName: Offres uniques du catalogue
    description: >-
      Appelez les méthodes API de cette sous-section pour configurer et gérer
      les offres de catalogue uniques.


      <div class="note">
        <p><b>Note</b></p>
        <p>Consultez notre <a href="https://developers.xsolla.com/fr/liveops/promotion-tools/unique-offer/">documentation</a> pour des informations détaillées sur les offres uniques.</p>
      </div>
  - name: promotions-discounts
    x-displayName: Remises
    description: >-
      Appelez les méthodes API de cette sous-section pour configurer et gérer
      les promotions par réduction.


      <div class="note">
        <p><b>Note</b></p>
        <p>Consultez notre <a href="https://developers.xsolla.com/fr/liveops/promotion-tools/discounts/">documentation</a> pour obtenir des informations détaillées sur les remises.</p>
      </div>
  - name: promotions-bonuses
    x-displayName: Bonus
    description: >-
      Appelez les méthodes API de cette sous-section pour configurer et gérer
      les promotions par bonus.


      <div class="note">
        <p><b>Note</b></p>
        <p>Consultez notre <a href="https://developers.xsolla.com/fr/liveops/promotion-tools/bonuses/">documentation</a> pour obtenir des informations détaillées sur les bonus.</p>
      </div>
  - name: personalized-catalog
    x-displayName: Catalogue personnalisé
    description: "La personnalisation permet de définir des conditions d’affichage du catalogue d’objets et d’appliquer des promotions uniquement à certains utilisateurs autorisés. Ces conditions, basées sur les attributs utilisateur, permettent de proposer des objets et des promotions adaptés à des profils spécifiques.\n\nLes types de personnalisation suivants sont disponibles\_:\n\n* [Personnalisation côté Xsolla](/fr/liveops/promotion-tools/personalization/#guides_personalization_on_xsolla_side) — les règles et la logique de personnalisation sont configurées et stockées côté Xsolla. Vous transmettez les attributs utilisateur, puis Xsolla les utilise pour générer un catalogue personnalisé.\n* [Personnalisation côté partenaire](/fr/liveops/promotion-tools/personalization/#guides_personalization_on_partner_side) — vous configurez les règles et la logique de personnalisation de votre côté, puis envoyez à Xsolla la charge utile du catalogue final pour un utilisateur spécifique.\n\n<div class=\"note\">\n  <b>Note</b><br><br>\n  Vous ne pouvez utiliser qu'un seul type de personnalisation. Pour le changer, suivez les\n  <a href=\"/fr/liveops/promotion-tools/personalization/#guides_personalization_change\">instructions</a>.\n</div>\n\nPour configurer la personnalisation côté Xsolla en utilisant l'API Xsolla\_:\n\n1. Créez des objets via les appels API de la sous-section **Administrateur** des groupes [Objets et monnaie virtuels](/fr/api/catalog/virtual-items-currency-admin/admin-get-virtual-items-list/), [Lots](/fr/api/catalog/bundles-admin/admin-create-bundle) ou [Clés de jeu](/fr/api/catalog/game-keys-admin).\n2. [Configurez les attributs utilisateur en utilisant Xsolla Login API](/fr/liveops/promotion-tools/personalization/#web_shop_guide_personalization_setting_attributes) et maintenez-les synchronisés en mettant à jour les données dans Xsolla à chaque changement dans votre jeu.\n3. Configurez la personnalisation pour les objets ou les promotions :\n    * Pour personnaliser le catalogue des objets, définissez les règles d'affichage du catalogue via l'appel API [Créer une règle de filtrage du catalogue](/fr/api/liveops/personalized-catalog/create-filter-rule) :\n        * Dans le tableau [attribute_conditions](/fr/api/liveops/personalized-catalog/create-filter-rule#personalized-catalog/create-filter-rule/t=request&path=attribute_conditions), spécifiez les conditions qui déterminent la disponibilité des objets en fonction des attributs utilisateur.\n        * Dans le tableau [items](/fr/api/liveops/personalized-catalog/create-filter-rule#personalized-catalog/create-filter-rule/t=request&path=items), fournissez la liste des objets qui sont visibles pour l'utilisateur si ses attributs correspondent aux conditions spécifiées.\n    * Pour configurer des promotions personnalisées, utilisez les appels API de [création et de mise à jour pour le type de promotion requis](/fr/api/liveops/promotions-discounts/create-item-promotion). Dans le tableau [attribute_conditions](/fr/api/liveops/promotions-discounts/create-item-promotion), spécifiez les conditions qui déterminent la disponibilité de la promotion en fonction des attributs utilisateur.\n\n4. Passez le [JWT utilisateur](/fr/api/login/getting-user-token?#getting-user-token) avec les attributs utilisateur aux [appels API de récupération du catalogue](https://developers.xsolla.com/fr/api/catalog/virtual-items-currency-catalog/get-virtual-items) pour recevoir un catalogue personnalisé.\n\n**Séquence pour configurer et appliquer la personnalisation côté Xsolla pour le catalogue des objets\_:**\n\n![Personnalisation pour le catalogue des objets](https://cdn.xsolla.net/developers/current/images/api_docs/personalization-catalog.png)\n\n**Séquence pour configurer et appliquer la personnalisation côté Xsolla pour les promotions\_:**\n\n![Personnalisation pour les promotions](https://cdn.xsolla.net/developers/current/images/api_docs/personalization-liveops.png)\n\n<div class=\"note\">\n<b>Note</b><br><br>\nDes informations détaillées sont fournies\_:\n<ul>\n  <li>dans le <a href=\"/fr/liveops/promotion-tools/personalization/\">guide de configuration de la personnalisation côté Xsolla et côté partenaire</a></li>\n  <li>dans le tutoriel étape par étape sur la <a href=\"/fr/doc/shop-builder/tutorials/personalization-tutorial/\">personnalisation du catalogue des objets côté Xsolla</a></li>\n</ul>\n</div>"
  - name: user-limits-admin
    x-displayName: Gestion
  - name: reward-chain-value-points-overview
    x-displayName: Aperçu
    description: "Les chaînes de récompense incitent les utilisateurs à effectuer des achats en magasin avec des devises réelles. Chaque achat génère des points de valeur et fait progresser la chaîne de récompenses. Dans les clans, les achats contribuent également aux points de valeur de l'ensemble du clan. Pour plus d'informations sur la configuration des chaînes de récompenses, consultez la section [Système de récompenses](https://developers.xsolla.com/fr/liveops/promotion-tools/reward-system/).\n\nConfigurez les chaînes de récompense via les appels API de la section **Administrateur**. Pour les afficher et récupérer les récompenses, utilisez les appels API de la section **Client**. Gérez les chaînes de clans via les appels API de la section **Client clans**.\n\n<b>Exemple de flux de configuration d'une chaîne de récompenses\_:</b>\n\n1. Créez des objets via les appels API de la sous-section **Administrateur** des groupes [Objets et monnaie virtuels](https://developers.xsolla.com/fr/api/catalog/virtual-items-currency-overview) ou [Lots](https://developers.xsolla.com/fr/api/catalog/bundles-admin).\n2. Créez des points de valeur via l'appel API [Créer un point de valeur](https://developers.xsolla.com/fr/api/liveops/reward-chain-value-points-admin/admin-create-value-points).\n3. Attribuez des points de valeur aux objets en utilisant l'appel API [Définir des points de valeur pour des objets](https://developers.xsolla.com/fr/api/liveops/reward-chain-value-points-admin/admin-set-items-value-point-reward). Les utilisateurs reçoivent des points de valeur à l'achat de ces objets.\n4. Créez une chaîne à l'aide de l'appel API [Créer une chaîne de récompenses](https://developers.xsolla.com/fr/api/liveops/reward-chain-value-points-admin/admin-create-reward-chain). Pour activer la chaîne, passez le paramètre `is_enabled: true`.\n5. Implémentez l'affichage de la chaîne de récompenses. Pour ce faire, demandez la liste des chaînes disponibles à l'aide de l'appel API [Lire les chaînes de récompenses actuelles d'un utilisateur](https://developers.xsolla.com/fr/api/liveops/reward-chain-client/get-reward-chains-list). La réponse contient toutes les chaînes actives, avec leurs étapes et leurs statuts.\n6. Implémentez l'affichage du solde de points de valeur. Pour ce faire, utilisez l'appel API [Lire le solde de points de valeur de l'utilisateur actuel](https://developers.xsolla.com/fr/api/liveops/reward-chain-client/get-user-reward-chain-balance).\n7. Implémentez le système de réclamation des récompenses par étape. Pour ce faire, utilisez l'appel API [Réclamer la récompense d'une étape](https://developers.xsolla.com/fr/api/liveops/reward-chain-client/claim-user-reward-chain-step-reward) .\n8. Configurez le suivi du statut des commandes, par exemple via des [webhooks](https://developers.xsolla.com/fr/webhooks/section/overview), afin de recevoir rapidement les données des récompenses réclamées et de les attribuer aux utilisateurs.\n\n![Flux de configuration de la chaîne de récompenses](https://cdn.xsolla.net/developers/current/images/api_docs/reward-chains-and-value-points-overview.svg)"
  - 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-overview
    x-displayName: Aperçu
    description: "Les récompenses quotidiennes encouragent les utilisateurs à se connecter chaque jour au magasin pour recevoir des objets gratuits. Le comportement en cas de jour manqué dépend du [type de chaîne](/fr/api/liveops/daily-chain-admin/admin-create-daily-chain#daily-chain-admin/admin-create-daily-chain/t=request&path=&oneof=0/type). Pour fonctionner correctement, les récompenses quotidiennes nécessitent la configuration de [l'authentification utilisateur](/fr/api/catalog#section/Authentication). Les utilisateurs non authentifiés peuvent voir toute la chaîne de récompenses, mais ne peuvent pas récupérer les objets. Pour plus d'informations sur la configuration, consultez la section [Récompenses quotidiennes](/fr/liveops/promotion-tools/daily-rewards/).\n\nConfigurez les chaînes via les appels API de la sous-section **Administrateur** et attribuez les récompenses via ceux de la sous-section **Client**.\n\nScénario de configuration d'une chaîne quotidienne\_:\n\n1. Créez des objets en utilisant les appels API de la sous-section **Administrateur** des groupes [Objets et monnaie virtuels](/fr/api/catalog/virtual-items-currency-admin/admin-get-virtual-items-list/) ou [Lots](/fr/api/catalog/bundles-admin/admin-create-bundle).\n2. Créez une chaîne en utilisant l'appel API [Créer une récompense quotidienne](/fr/api/liveops/daily-chain-admin/admin-create-daily-chain).\n3. Activez la chaîne en définissant le paramètre `\"is_enabled\": true` dans l'appel API [Créer une récompense quotidienne](/fr/api/liveops/daily-chain-admin/admin-create-daily-chain/).\n4. Récupérez la liste des chaînes disponibles avec l'appel API [Lire les récompenses quotidiennes de l'utilisateur actuel](/fr/api/liveops/daily-chain-client/get-daily-chains-list), en passant le [JWT utilisateur](/fr/api/catalog/section/authentication/authentication-using-user's-jwt). La réponse contient toutes les chaînes actives avec leurs étapes et statuts.\n5. Configurez l'attribution des objets via des [webhooks](/fr/webhooks/section/osnovnye-polozheniya).\n6. Attribuez la récompense quotidienne à l'utilisateur avec l'appel API [Réclamer une étape de récompense quotidienne](/fr/api/liveops/daily-chain-client/claim-user-daily-chain-step-reward), en passant `daily_chain_id` et `step_number`.\n\n![Récompenses quotidiennes](https://cdn.xsolla.net/developers/current/images/api_docs/daily-rewards.svg)"
  - name: daily-chain-admin
    x-displayName: Administrateur
  - name: daily-chain-client
    x-displayName: Client
  - name: offer-chains-overview
    x-displayName: Aperçu
    description: "Les chaînes d'offres sont une suite d'étapes contenant chacune un objet, que les utilisateurs peuvent recevoir gratuitement ou acheter dans le cadre d'une offre active. Elles peuvent inclure des objets exclusifs disponibles uniquement dans la chaine, ainsi que des objets à prix réduit par rapport au magasin. Pour plus d'informations sur la configuration de cet outil marketing, consultez la section [Chaînes d'offres](https://developers.xsolla.com/fr/liveops/promotion-tools/offer-chains/).\n\nPour configurer les chaînes d'offres, utilisez les appels API de la sous-section **Administrateur**. Pour afficher les chaînes et implémenter la logique de gestion des objets reçus par les utilisateurs, utilisez les appels API de la sous-section **Client**.\n\n<b>Exemple de flux de configuration d'une chaîne de d'offres\_:</b>\n\n1. Créez des objets en utilisant les appels API de la sous-section **Administrateur** des groupes [Objets et monnaie virtuels](https://developers.xsolla.com/fr/api/catalog/virtual-items-currency-overview) ou [Lots](https://developers.xsolla.com/fr/api/catalog/bundles-admin).\n\n2. Créez une chaîne en utilisant l'appel API [Créer une chaîne d'offres](https://developers.xsolla.com/fr/api/liveops/offer-chain-admin/admin-create-offer-chain). Pour activer la chaîne, passez le paramètre `is_enabled: true`.\n\n3. Implémentez l'affichage des chaînes d'offres. Pour ce faire, récupérez la liste des chaînes disponibles en utilisant l'appel API [Lire les chaînes d'offres de l'utilisateur actuel](https://developers.xsolla.com/fr/api/liveops/offer-chain-client/get-offer-chains-list). La réponse contient toutes les chaînes actives avec leurs étapes et leurs statuts.\n\n4. Implémentez la logique pour traiter les objets que les utilisateurs reçoivent\_:\n\n    - Si l'étape est gratuite, utilisez l'appel API [Réclamer une étape de chaîne d'offres gratuite](https://developers.xsolla.com/fr/api/liveops/offer-chain-client/claim-user-offer-chain-step-reward). Passez `offer_chain_id` et `step_number` dans la requête.\n\n    - Si l'étape est payante, utilisez l'appel API [Créer une commande pour une étape de chaîne d'offres payante](https://developers.xsolla.com/fr/api/liveops/offer-chain-client/order-user-offer-chain-step-reward). Passez `offer_chain_id` et `step_number` dans la requête. La réponse renvoie un `order_id` et un jeton permettant d'ouvrir l'interface de paiement.\n\n5. Configurez le suivi du statut des commandes, par exemple en utilisant des [webhooks](https://developers.xsolla.com/fr/webhooks/section/overview), afin de recevoir rapidement les informations sur les objets réclamés ou achetés et de les attribuer à l'utilisateur.\n\n![Flux de configuration de la chaîne de récompenses](https://cdn.xsolla.net/developers/current/images/api_docs/offer-chains-overview.svg)"
  - name: offer-chain-admin
    x-displayName: Administrateur
  - name: offer-chain-client
    x-displayName: Client
  - name: upsell-overview
    x-displayName: Aperçu
    description: "L'upsell (vente incitative) est une méthode de vente qui consiste à proposer à l'utilisateur un objet avec une valeur ajoutée, par exemple, un objet particulièrement populaire auprès des autres utilisateurs. Vous pouvez également configurer des restrictions régionales pour ces objets. Pour plus d'informations, consultez la section [Upsell](/fr/liveops/promotion-tools/upsell/).\n\nLa méthode API [Lire les informations sur les ventes incitatives dans le projet](/fr/api/liveops/upsell-admin/get-upsell-configurations-for-project-admin) renvoie la liste des objets d'upsell configurés et leur statut (activé ou désactivé). Côté client, la méthode [Lire la liste des objets de vente incitative dans le projet](/fr/api/liveops/upsell-client/get-upsell-for-project-client) renvoie ces objets, qui sont affichés à l'utilisateur au moment clé du parcours d'achat.\n\nScénario de configuration d'upsell\_:\n\n1. Créez les objets en utilisant des appels API de la sous-section **Administrateur** des groupes [Objets et monnaie virtuels](/fr/api/catalog/virtual-items-currency-admin/admin-get-virtual-items-list/), [Lots](/fr/api/catalog/bundles-admin/admin-create-bundle) ou [Clés de jeu](/fr/api/catalog/game-keys-admin).\n2. Configurez l'upsell avec l'appel API [Créer une vente incitative](/fr/api/liveops/upsell-admin/post-upsell), puis ajoutez les UGS des objets dans le tableau `items`.\n3. Activez l'upsell pour le projet en utilisant l'appel API [Activer/désactiver la vente incitative d'un projet](/fr/api/liveops/upsell-admin/put-upsell-toggle-active-inactive).\n4. Affichez l'offre d'upsell à l'utilisateur au moment approprié du parcours d'achat en utilisant l'appel API [Lire la liste des objets de vente incitative dans le projet](/fr/api/liveops/upsell-client/get-upsell-for-project-client).\n5. Implémentez l'ouverture de l'interface de paiement pour régler la commande. Par exemple, utilisez l'appel API [Créer une commande à partir de tous les objets d'un panier spécifique](/fr/api/catalog/payment-client-side/create-order-by-cart-id). La réponse renvoie un jeton permettant d'ouvrir l'interface de paiement.\n6. Configurez le suivi du statut des commandes, par exemple avec un [webhooks](/fr/webhooks/overview), afin de recevoir rapidement les données relatives aux objets dont le paiement a été effectué avec succès et de les attribuer à l'utilisateur.\n\n![Scénario d'upsell](https://cdn.xsolla.net/developers/current/images/api_docs/Upsell.svg)"
  - name: upsell-admin
    x-displayName: Administrateur
  - name: upsell-client
    x-displayName: Client
paths:
  /v3/project/{project_id}/admin/promotion:
    get:
      summary: Lire la liste de toutes les promotions
      description: Récupère la liste des promotions d'un projet.
      operationId: get-promotion-list
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      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'
      tags:
        - promotions-common
      responses:
        '200':
          $ref: '#/components/responses/Promotions_200-get-promotions'
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
      security:
        - basicAuth: []
  /v2/project/{project_id}/admin/promotion/{promotion_id}/activate:
    put:
      summary: Activer une promotion
      description: Active une promotion.
      operationId: activate-promotion
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/promotion_id-path-param'
      security:
        - basicAuth: []
      tags:
        - promotions-common
      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'
  /v2/project/{project_id}/admin/promotion/{promotion_id}/deactivate:
    put:
      summary: Désactiver une promotion
      description: Désactive une promotion.
      operationId: deactivate-promotion
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/promotion_id-path-param'
      security:
        - basicAuth: []
      tags:
        - promotions-common
      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'
  /v3/project/{project_id}/admin/promotion/redeemable/code/{code}:
    get:
      summary: Lire une promotion utilisable par code
      description: >-
        Récupère des informations sur la promotion par un code promo ou un code
        de coupon.
      operationId: get-redeemable-promotion-by-code
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/code-path-param'
      security:
        - basicAuth: []
      tags:
        - promotions-common
      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'
  /v2/project/{project_id}/coupon/redeem:
    post:
      summary: Échanger un code de coupon
      description: "Utilise un code de coupon. L'utilisateur reçoit un bonus après l'utilisation d'un coupon. <br>\n\n<div class=\"note\">\n  <strong>Note</strong><br><br>\n    Cet appel API utilise un JWT utilisateur pour l'autorisation.<br><br>\n    Incluez le jeton dans l'en-tête <code>Authorization</code> au format suivant\_: <code>Bearer &lt;user_JWT&gt;</code>. Pour plus d'informations sur le JWT utilisateur, consultez le bloc <strong>Security</strong> pour cet appel.\n</div>"
      operationId: redeem-coupon
      x-badges:
        - name: Client-side
          color: '#80eaff'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
      tags:
        - promotions-coupons
      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: []
  /v2/project/{project_id}/coupon/code/{coupon_code}/rewards:
    get:
      summary: Lire les récompenses d'un coupon
      description: "Récupère les récompenses associées à un coupon à partir de son code.\nPeut être utilisé pour permettre aux utilisateurs de choisir un objet parmi plusieurs bonus disponibles.\nUn cas courant consiste à choisir un DRM lorsque le coupon inclut un jeu comme bonus (`type=unit`). <br>\n\n<div class=\"note\">\n  <strong>Note</strong><br><br>\n    Cet appel API utilise un JWT utilisateur pour l'autorisation.<br><br>\n    Incluez le jeton dans l'en-tête <code>Authorization</code> au format suivant\_: <code>Bearer &lt;user_JWT&gt;</code>. Pour plus d'informations sur le JWT utilisateur, consultez le bloc <strong>Security</strong> pour cet appel.\n</div>"
      operationId: get-coupon-rewards-by-code
      x-badges:
        - name: Client-side
          color: '#80eaff'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/coupon_code-path-param'
      tags:
        - promotions-coupons
      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: []
  /v3/project/{project_id}/admin/coupon:
    post:
      summary: Créer une promotion par coupon
      description: Crée une promotion par coupon.
      operationId: admin-create-coupon
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
      tags:
        - promotions-coupons
      security:
        - basicAuth: []
      requestBody:
        $ref: '#/components/requestBodies/Promotions_coupon-create'
      responses:
        '201':
          description: Le coupon a été créé avec succès.
          content:
            application/json:
              schema:
                type: object
                properties:
                  external_id:
                    $ref: '#/components/schemas/Promotions_coupon-external_id'
              examples:
                response:
                  value:
                    external_id: coupon_external_id
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
        '422':
          $ref: '#/components/responses/Promotions_422-invalid-coupon'
    get:
      tags:
        - promotions-coupons
      security:
        - basicAuth: []
      operationId: get-coupons
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      summary: Lire la liste des promotions par coupon
      description: Récupère la liste des promotions par coupon d'un projet.
      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'
  /v3/project/{project_id}/admin/coupon/{external_id}:
    put:
      summary: Mettre à jour une promotion par coupon
      description: Met à jour une promotion par coupon
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
      tags:
        - promotions-coupons
      security:
        - basicAuth: []
      operationId: update-coupon-promotion
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      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'
    get:
      tags:
        - promotions-coupons
      security:
        - basicAuth: []
      operationId: get-coupon
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      summary: Lire une promotion par coupon
      description: Récupère des informations sur une promotion par coupon spécifique.
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
      responses:
        '200':
          description: Le coupon a été reçu avec succès.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/admin-promotions_200-get-coupon-promotion-model
              examples:
                response:
                  value:
                    external_id: summer20221
                    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'
                    name:
                      en-US: Coupon name
                      ru-RU: Название купона
                    is_enabled: true
                    bonus:
                      - sku: com.xsolla.diamonds_1
                        quantity: 100
                    redeem_user_limit: null
                    redeem_total_limit: 100
                    redeem_code_limit: null
                    total_limit_state:
                      available: 50
                      reserved: 10
                      used: 40
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/Promotions_404-admin-coupon'
    delete:
      summary: Supprimer une promotion par coupon
      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."
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
      tags:
        - promotions-coupons
      security:
        - basicAuth: []
      operationId: delete-coupon-promotion
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      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'
  /v2/project/{project_id}/admin/coupon/{external_id}/activate:
    put:
      summary: Activer une promotion par coupon
      description: |-
        Active une promotion par coupon.
        Par défaut, une promotion par coupon créée est désactivée.
        Pour permettre l'échange de coupons, vous devez l'activer.
        Utilisez cet endpoint pour activer une promotion par coupon.
      operationId: activate-coupon
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
      tags:
        - promotions-coupons
      security:
        - basicAuth: []
      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'
  /v2/project/{project_id}/admin/coupon/{external_id}/deactivate:
    put:
      summary: Désactiver une promotion par coupon
      description: |-
        Désactive une promotion par coupon.
        Par défaut, une promotion par coupon créée est désactivée.
        Pour permettre l'échange de coupons, vous devez l'activer.
        Utilisez cet endpoint pour désactiver une promotion par coupon.
      operationId: deactivate-coupon
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
      tags:
        - promotions-coupons
      security:
        - basicAuth: []
      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'
  /v2/project/{project_id}/admin/coupon/{external_id}/code:
    post:
      operationId: create-coupon-code
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      summary: Créer un code de coupon
      description: Crée un code de coupon.
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
      tags:
        - promotions-coupons
      security:
        - basicAuth: []
      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
    get:
      operationId: get-coupon-codes
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      summary: Lire les codes de coupon
      description: >-
        Récupère les codes de coupon.


        La réponse comprend le nombre total de codes de la promotion
        (`total_count`) et les codes de la page actuelle (`codes`). Pour
        récupérer la page suivante, augmentez la valeur `offset` de `limit` (par
        exemple, `“offset”: 100`, puis “offset”: 200`) jusqu'à récupérer tous
        les codes.


        Dans la plupart des cas, `"limit": 100` ou `"limit": 1000` suffit.
        Réservez les valeurs plus élevées, telles que `"limit": 10000`, aux
        exportations en masse ponctuelles, et évitez d'utiliser `"limit": 50000`
        sauf en cas de nécessité.
      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'
      tags:
        - promotions-coupons
      security:
        - basicAuth: []
      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'
  /v2/project/{project_id}/admin/coupon/{external_id}/code/generate:
    put:
      summary: Générer des codes de coupon
      description: "Génère des codes de coupon.\n\nLignes directrices pour la génération de code\_:\n\n* Aucune limite maximale ne s'applique au nombre total de codes par promotion, mais chaque requête est limitée à 50\_000 codes. Les requêtes dépassant cette limite renvoient une erreur `422 Unprocessable Entity`. Si vous avez besoin de plus de 50\_000 codes, envoyez plusieurs requêtes.\n\n* Pour une meilleure fiabilité, il est recommandé de générer les codes par lots plus petits, jusqu'à 10\_000 par requête. Par exemple, pour créer 100\_000 codes, envoyez 10 requêtes avec `\"count\": 10000` plutôt que 2\_requêtes avec `\"count\": 50000`. Attendez une réponse réussie pour chaque requête avant d'envoyer la suivante.\n\n* N'oubliez pas que la limite de débit est fixée à 15\_requêtes par seconde. Lorsque vous générez de grands volumes, envoyez les requêtes les unes après les autres afin d'éviter de dépasser cette limite et de recevoir une erreur `429`.\n\n* Pour récupérer la liste des codes, appelez la méthode [Lire des codes promo](/fr/api/liveops/promotions-coupons/get-coupon-codes).\n\n| Paramètre | Valeur |\n|---|---|\n| Nombre minimum de codes par requête. | 1 |\n| Nombre maximum de codes par requête. Utilisez uniquement lorsque vous avez besoin du plus grand lot unique possible. | 50\_000 |\n| Nombre recommandé de codes par requête. | Jusqu'à 10\_000. Si vous devez en créer davantage, envoyez plusieurs requêtes consécutives. |"
      operationId: generate-coupon-codes
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
      tags:
        - promotions-coupons
      security:
        - basicAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                count:
                  $ref: '#/components/schemas/Promotions_coupon-generate-count'
              required:
                - count
      responses:
        '200':
          description: Les codes ont été générés avec succès.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    $ref: '#/components/schemas/Promotions_coupon-generate-count'
              examples:
                response:
                  value:
                    count: 10
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/Promotions_404-admin-promocode'
  /v2/project/{project_id}/promocode/redeem:
    post:
      summary: Échanger un code promo
      description: >-
        Échange un code d'une promotion par code promo.

        Aprè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
      x-badges:
        - name: Client-side
          color: '#80eaff'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
      tags:
        - promotions-promo-codes
      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: []
  /v2/project/{project_id}/promocode/remove:
    put:
      summary: Supprimer un code promo du panier
      description: >-
        Supprime un code promo d'un panier.

        Aprè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
      x-badges:
        - name: Client-side
          color: '#80eaff'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
      tags:
        - promotions-promo-codes
      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: []
  /v2/project/{project_id}/promocode/code/{promocode_code}/rewards:
    get:
      summary: Lire les récompenses d'un code promo
      description: "Récupère les récompenses associées à un code promo à partir de son code.\nPeut être utilisé pour permettre aux utilisateurs de choisir un objet parmi plusieurs bonus disponibles.\nUn cas courant consiste à choisir un DRM lorsque le code promo inclut un jeu comme bonus (`type=unit`). <br>\n\n<div class=\"note\">\n  <strong>Note</strong><br><br>\n    Cet appel API utilise un JWT utilisateur pour l'autorisation.<br><br>\n    Incluez le jeton dans l'en-tête <code>Authorization</code> au format suivant\_: <code>Bearer &lt;user_JWT&gt;</code>. Pour plus d'informations sur le JWT utilisateur, consultez le bloc <strong>Security</strong> pour cet appel.\n</div>"
      operationId: get-promo-code-rewards-by-code
      x-badges:
        - name: Client-side
          color: '#80eaff'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/promocode_code-path-param'
      tags:
        - promotions-promo-codes
      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: []
  /v3/project/{project_id}/admin/promocode:
    post:
      operationId: create-promo-code
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      summary: Créer une promotion par code promo
      description: Crée une promotion par code promo.
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
      tags:
        - promotions-promo-codes
      security:
        - basicAuth: []
      requestBody:
        $ref: '#/components/requestBodies/Promotions_promocode-create'
      responses:
        '201':
          description: Le code promo a été créé avec succès.
          content:
            application/json:
              schema:
                type: object
                properties:
                  external_id:
                    $ref: '#/components/schemas/Promotions_coupon-external_id'
              examples:
                response:
                  value:
                    external_id: coupon_external_id
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
        '422':
          $ref: '#/components/responses/Promotions_422-invalid-coupon'
    get:
      tags:
        - promotions-promo-codes
      security:
        - basicAuth: []
      operationId: get-promo-codes
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      summary: Lire la liste des promotions par code promo
      description: Récupère la liste des codes promo d'un projet.
      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'
  /v3/project/{project_id}/admin/promocode/{external_id}:
    put:
      summary: Mettre à jour une promotion par code promo
      description: Met à jour une promotion par code promo.
      operationId: update-promo-code
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
      tags:
        - promotions-promo-codes
      security:
        - basicAuth: []
      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'
    get:
      tags:
        - promotions-promo-codes
      security:
        - basicAuth: []
      operationId: get-promo-code
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      summary: Lire une promotion par code promo
      description: Récupère des informations sur une promotion par code promo spécifique.
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
      responses:
        '200':
          description: Le code promo a été reçu avec succès.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/Promotions_200-get-promocode-promotion-model
              examples:
                simple:
                  value:
                    external_id: summer20221
                    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'
                    name:
                      en-US: Coupon name
                      ru-RU: Название купона
                    is_enabled: true
                    bonus:
                      - sku: com.xsolla.diamonds_1
                        quantity: 100
                    redeem_user_limit: null
                    redeem_total_limit: 100
                    redeem_code_limit: 1
                    discount:
                      percent: '10.99'
                    discounted_items: null
                    total_limit_state:
                      available: 50
                      reserved: 10
                      used: 40
                    excluded_promotions:
                      - 23
                      - 45
                with price conditions:
                  value:
                    external_id: summer20221
                    promotion_periods:
                      - date_from: '2020-04-15T18:16:00+05:00'
                        date_until: '2020-04-25T18:16:00+05:00'
                    name:
                      en-US: Coupon name
                      ru-RU: Название купона
                    is_enabled: true
                    bonus:
                      - sku: com.xsolla.diamonds_2
                        quantity: 100
                    redeem_user_limit: null
                    redeem_total_limit: 100
                    redeem_code_limit: 1
                    discount:
                      percent: '10.99'
                    discounted_items: null
                    total_limit_state:
                      available: 50
                      reserved: 10
                      used: 40
                    price_conditions:
                      - operator: gt
                        value: '10.0000'
                      - operator: lt
                        value: '50.0000'
                with item price conditions:
                  value:
                    external_id: summer20221
                    promotion_periods:
                      - date_from: '2020-04-15T18:16:00+05:00'
                        date_until: '2020-04-25T18:16:00+05:00'
                    name:
                      en-US: Coupon name
                      ru-RU: Название купона
                    is_enabled: true
                    bonus:
                      - sku: com.xsolla.diamonds_3
                        quantity: 100
                    redeem_user_limit: null
                    redeem_total_limit: 100
                    redeem_code_limit: 1
                    discount:
                      percent: '10.99'
                    discounted_items: null
                    total_limit_state:
                      available: 50
                      reserved: 10
                      used: 40
                    item_price_conditions:
                      - operator: gt
                        value: '10.0000'
                      - operator: lt
                        value: '50.0000'
                    excluded_promotions:
                      - 23
                      - 45
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/Promotions_404-admin-promocode'
    delete:
      summary: Supprimer une promotion par code promo
      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
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
      tags:
        - promotions-promo-codes
      security:
        - basicAuth: []
      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'
  /v2/project/{project_id}/admin/promocode/{external_id}/activate:
    put:
      summary: Activer une promotion par code promo
      description: |-
        Active une promotion par code promo.

        Par défaut, une promotion par code promo créée est désactivée.
        Pour permettre l'échange de coupons, vous devez l'activer.
        Utilisez cet endpoint pour activer une promotion par code promo.
      operationId: activate-promo-code
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
      tags:
        - promotions-promo-codes
      security:
        - basicAuth: []
      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'
  /v2/project/{project_id}/admin/promocode/{external_id}/deactivate:
    put:
      summary: Désactiver une promotion par code promo
      description: |-
        Désactive une promotion par code promo.

        Par défaut, une promotion par code promo créée est désactivée.
        Pour permettre l'échange de coupons, vous devez l'activer.
        Utilisez cet endpoint pour désactiver une promotion par code promo.
      operationId: deactivate-promo-code
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
      tags:
        - promotions-promo-codes
      security:
        - basicAuth: []
      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'
  /v2/project/{project_id}/admin/promocode/{external_id}/code:
    post:
      operationId: create-promo-code-code
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      summary: Créer un code pour une promotion par code promo
      description: Crée un code pour une promotion par code promo.
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
      tags:
        - promotions-promo-codes
      security:
        - basicAuth: []
      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
    get:
      operationId: get-promocode-codes
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      summary: Lire les codes d'une promotion par code promo
      description: >-
        Récupère les codes d'une promotion par code promo.


        La réponse comprend le nombre total de codes de la promotion
        (`total_count`) et les codes de la page actuelle (`codes`). Pour
        récupérer la page suivante, augmentez la valeur `offset` de `limit` (par
        exemple, `“offset”: 100`, puis “offset”: 200`) jusqu'à récupérer tous
        les codes.


        Dans la plupart des cas, `"limit": 100` ou `"limit": 1000` suffit.
        Réservez les valeurs plus élevées, telles que `"limit": 10000`, aux
        exportations en masse ponctuelles, et évitez d'utiliser `"limit": 50000`
        sauf en cas de nécessité.
      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'
      tags:
        - promotions-promo-codes
      security:
        - basicAuth: []
      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'
  /v2/project/{project_id}/admin/promocode/{external_id}/code/generate:
    put:
      summary: Générer des codes pour une promotion par code promo
      description: "Génère des codes pour une promotion par code promo.\n\nLignes directrices pour la génération de code\_:\n\n* Aucune limite maximale ne s'applique au nombre total de codes par promotion, mais chaque requête est limitée à 50\_000 codes. Les requêtes dépassant cette limite renvoient une erreur `422 Unprocessable Entity`. Si vous avez besoin de plus de 50\_000 codes, envoyez plusieurs requêtes.\n\n* Pour une meilleure fiabilité, il est recommandé de générer les codes par lots plus petits, jusqu'à 10\_000 par requête. Par exemple, pour créer 100\_000 codes, envoyez 10 requêtes avec `\"count\": 10000` plutôt que 2\_requêtes avec `\"count\": 50000`. Attendez une réponse réussie pour chaque requête avant d'envoyer la suivante.\n\n* N'oubliez pas que la limite de débit est fixée à 15\_requêtes par seconde. Lorsque vous générez de grands volumes, envoyez les requêtes les unes après les autres afin d'éviter de dépasser cette limite et de recevoir une erreur `429`.\n\n* Pour récupérer la liste des codes, appelez la méthode [Lire les codes d'une promotion par code promo](/fr/api/liveops/promotions-promo-codes/get-promocode-codes)\n\n| Paramètre | Valeur |\n|---|---|\n| Nombre minimum de codes par requête. | 1 |\n| Nombre maximum de codes par requête. Utilisez uniquement lorsque vous avez besoin du plus grand lot unique possible. | 50\_000 |\n| Nombre recommandé de codes par requête. | Jusqu'à 10\_000. Si vous devez en créer davantage, envoyez plusieurs requêtes consécutives. |"
      operationId: generate-promo-code-codes
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
      tags:
        - promotions-promo-codes
      security:
        - basicAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                count:
                  $ref: '#/components/schemas/Promotions_coupon-generate-count'
              required:
                - count
      responses:
        '200':
          description: Les codes ont été générés avec succès.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    $ref: '#/components/schemas/Promotions_coupon-generate-count'
              examples:
                response:
                  value:
                    count: 10
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/Promotions_404-admin-promocode'
  /v3/project/{project_id}/admin/promotion/item:
    post:
      summary: Créer une promotion par réduction pour un objet
      description: |-
        Crée une promotion par réduction pour un objet.

        Les promotions offrent une remise (%) sur les objets.
        La remise s'applique à tous les prix des objets spécifiés.
      operationId: create-item-promotion
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
      tags:
        - promotions-discounts
      security:
        - basicAuth: []
      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
    get:
      tags:
        - promotions-discounts
      security:
        - basicAuth: []
      operationId: get-item-promotion-list
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      summary: Lire la liste des promotions sur des objets
      description: |-
        Récupère la liste des promotions sur les objets d'un projet.

        Les promotions offrent une remise (%) sur les objets.
        La remise s'applique à tous les prix des objets spécifiés.
      parameters:
        - name: project_id
          in: path
          required: true
          description: ID de projet.
          schema:
            type: integer
            default: 59080
        - name: limit
          in: query
          required: false
          description: Nombre maximal d'éléments sur une page.
          schema:
            type: integer
        - name: offset
          in: query
          required: false
          description: >-
            Numéro de l'élément à partir duquel la liste est générée (le
            décompte commence à 0).
          schema:
            type: integer
      responses:
        '200':
          $ref: '#/components/responses/Promotions_200-get-item-promotions'
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
  /v3/project/{project_id}/admin/promotion/{promotion_id}/item:
    put:
      tags:
        - promotions-discounts
      security:
        - basicAuth: []
      operationId: update-item-promotion
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      summary: Mettre à jour une promotion sur les objets
      description: >-
        Met à jour une promotion.


        <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>


        Les promotions offrent une remise (%) sur les objets.

        La remise s'applique à tous les prix des objets spécifiés.
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/promotion_id-path-param'
      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
      requestBody:
        $ref: '#/components/requestBodies/Promotions_create-update-item-promotion'
    get:
      tags:
        - promotions-discounts
      security:
        - basicAuth: []
      operationId: get-item-promotion
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/promotion_id-path-param'
      summary: Lire une promotion sur les objets
      description: >-
        Récupère des informations sur les promotions qui s'appliquent à des
        objets spécifiques.


        Les promotions offrent une remise (%) sur les objets.

        La remise s'applique à tous les prix des objets spécifiés.
      responses:
        '200':
          description: Promotion sur les objets reçue avec succès.
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: integer
                    description: >-
                      ID de la promotion. Identifiant unique de la promotion au
                      sein du projet.
                  promotion_periods:
                    $ref: '#/components/schemas/promotion_periods'
                  is_enabled:
                    $ref: '#/components/schemas/Promotions_is_enabled'
                  name:
                    type: object
                    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.
                    additionalProperties:
                      type: string
                      example:
                        en-US: Promotion
                        ru-RU: Акция
                  discount:
                    type: object
                    properties:
                      percent:
                        type:
                          - string
                          - 'null'
                        description: >-
                          Pourcentage de la remise.

                          Le prix de l'objet sera diminué d'une valeur calculée
                          à l'aide de ce pourcentage.
                        default: '10.00'
                  items:
                    type:
                      - array
                      - 'null'
                    items:
                      description: Liste des objets qui seront concernés par la remise.
                      type: object
                      properties:
                        sku:
                          type: string
                          description: UGS de l'objet.
                          default: elven_sword
                  attribute_conditions:
                    $ref: >-
                      #/components/schemas/promotion_user-attribute_conditions_model-get
                  limits:
                    $ref: '#/components/schemas/Promotions_promotion_limits_response'
                  price_conditions:
                    $ref: '#/components/schemas/price_conditions_discount'
                  excluded_promotions:
                    $ref: '#/components/schemas/excluded_promotions'
                example:
                  id: 1
                  promotion_periods:
                    - date_from: '2020-04-15T18:16:00+05:00'
                      date_until: '2020-04-25T18:16:00+05:00'
                  is_enabled: true
                  discount:
                    percent: '15.00'
                  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: Акция
              examples:
                response:
                  value:
                    id: 1
                    promotion_periods:
                      - date_from: '2020-04-15T18:16:00+05:00'
                        date_until: '2020-04-25T18:16:00+05:00'
                    is_enabled: true
                    discount:
                      percent: '20.00'
                    items:
                      - sku: com.xsolla.elven_helmet_1
                      - sku: com.xsolla.elven_armor_1
                    name:
                      en-US: Promotion
                      ru-RU: Акция
                    limits:
                      per_user:
                        total: 10
                      per_item: null
                      recurrent_schedule:
                        per_user:
                          interval_type: daily
                          day_of_week: null
                          day_of_month: null
                          time: 11:00:00+08:00
                          reset_next_date: 1677553200
                          displayable_reset_start_date: '2023-02-28T11:00:00+08:00'
                          displayable_reset_next_date: '2023-02-28T11:00:00+08:00'
                    price_conditions:
                      - operator: ge
                        value: '10.0000'
                      - operator: le
                        value: '50.0000'
                    excluded_promotions:
                      - 23
                      - 45
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
        '404':
          description: >-
            Promotion non trouvée. Assurez-vous que le paramètre `promotion_id`
            est correct.
          content:
            application/json:
              schema:
                properties:
                  statusCode:
                    type: integer
                    example: 404
                  errorCode:
                    type: integer
                    example: 9502
                  errorMessage:
                    type: string
                    example: >-
                      [0401-9502]: Can not find promotion with ID = 111425 in
                      project 59080
                type: object
              examples:
                response:
                  value:
                    statusCode: 404
                    errorCode: 9502
                    errorMessage: >-
                      [0401-9502]: Can not find promotion with ID = 111425 in
                      project 59080
    delete:
      summary: Supprimer une promotion sur les objets
      tags:
        - promotions-discounts
      security:
        - basicAuth: []
      operationId: delete-item-promotion
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      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."
      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'
  /v3/project/{project_id}/admin/promotion/bonus:
    post:
      summary: Créer une promotion par bonus
      description: >-
        Crée une promotion par bonus.


        La promotion ajoute des objets bonus gratuits à l'achat effectué par
        l'utilisateur.

        La promotion peut être appliquée à chaque achat au sein d'un projet ou à
        un achat comprenant des objets particuliers.
      operationId: create-bonus-promotion
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
      tags:
        - promotions-bonuses
      security:
        - basicAuth: []
      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
    get:
      tags:
        - promotions-bonuses
      security:
        - basicAuth: []
      operationId: get-bonus-promotion-list
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      summary: Lire la liste des promotions par bonus
      description: >-
        Récupère la liste des promotions par bonus au sein d'un projet.


        La promotion ajoute des objets bonus gratuits à l'achat effectué par
        l'utilisateur.

        La promotion peut être appliquée à chaque achat au sein d'un projet ou à
        un achat comprenant des objets particuliers.
      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'
  /v3/project/{project_id}/admin/promotion/{promotion_id}/bonus:
    put:
      summary: Mettre à jour une promotion par bonus
      description: >-
        Met à jour une promotion.


        <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>


        La promotion ajoute des objets bonus gratuits à l'achat effectué par
        l'utilisateur.

        La promotion peut être appliquée à chaque achat au sein d'un projet ou à
        un achat comprenant des objets particuliers.
      operationId: update-bonus-promotion
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/promotion_id-path-param'
      tags:
        - promotions-bonuses
      security:
        - basicAuth: []
      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
    get:
      tags:
        - promotions-bonuses
      security:
        - basicAuth: []
      operationId: get-bonus-promotion
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      summary: Lire une promotion par bonus
      description: >-
        Récupère des informations sur une promotion par bonus.


        La promotion ajoute des objets bonus gratuits à l'achat effectué par
        l'utilisateur.

        La promotion peut être appliquée à chaque achat au sein d'un projet ou à
        un achat comprenant des objets particuliers.
      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'
    delete:
      summary: Supprimer une promotion par bonus
      tags:
        - promotions-bonuses
      security:
        - basicAuth: []
      operationId: delete-bonus-promotion
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      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."
      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'
  /v2/project/{project_id}/promotion/code/{code}/verify:
    get:
      summary: Vérifier un code promotionnel
      description: "Détermine si le code est un code promo ou un code coupon et si l'utilisateur peut l'appliquer. <br>\n\n<div class=\"note\">\n  <strong>Note</strong><br><br>\n    Cet appel API utilise un JWT utilisateur pour l'autorisation.<br><br>\n    Incluez le jeton dans l'en-tête <code>Authorization</code> au format suivant\_: <code>Bearer &lt;user_JWT&gt;</code>. Pour plus d'informations sur le JWT utilisateur, consultez le bloc <strong>Security</strong> pour cet appel.\n</div>"
      operationId: verify-promotion-code
      x-badges:
        - name: Client-side
          color: '#80eaff'
      security:
        - XsollaLoginUserJWT: []
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/code-path-param'
      tags:
        - promotions-common
      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'
  /v3/project/{project_id}/admin/unique_catalog_offer:
    post:
      operationId: admin-create-unique-catalog-offer
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      summary: Créer une offre promotionnelle unique dans le catalogue
      description: Crée une offre promotionnelle unique dans le catalogue.
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
      tags:
        - promotions-unique-catalog-offers
      security:
        - basicAuth: []
      requestBody:
        $ref: '#/components/requestBodies/Promotions_unique_catalog_offer-create'
      responses:
        '201':
          description: L'offre unique a été créée avec succès dans le catalogue.
          content:
            application/json:
              schema:
                type: object
                properties:
                  external_id:
                    $ref: '#/components/schemas/Promotions_coupon-external_id'
              examples:
                response:
                  value:
                    external_id: coupon_external_id
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
        '422':
          $ref: '#/components/responses/Promotions_422-invalid-coupon'
    get:
      operationId: get-unique-catalog-offers
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      tags:
        - promotions-unique-catalog-offers
      security:
        - basicAuth: []
      summary: Lire la liste des offres promotionnelles uniques du catalogue
      description: Récupère la liste des offres promotionnelles uniques d'un projet.
      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'
  /v3/project/{project_id}/admin/unique_catalog_offer/{external_id}:
    put:
      operationId: update-unique-catalog-offer-promotion
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      summary: Mettre à jour une promotion par offre unique du catalogue
      description: Met à jour une promotion par offre unique du catalogue.
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
      tags:
        - promotions-unique-catalog-offers
      security:
        - basicAuth: []
      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'
    get:
      operationId: get-unique-catalog-offer
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      tags:
        - promotions-unique-catalog-offers
      security:
        - basicAuth: []
      summary: Lire une promotion par offre unique du catalogue
      description: Récupère une promotion par offre unique du catalogue spécifique.
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
      responses:
        '200':
          description: Offre unique du catalogue reçue avec succès.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/Promotions_200-get-unique-catalog-offer-promotion-model
              examples:
                response:
                  value:
                    external_id: secret_shop
                    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'
                    name:
                      en-US: Secret shop
                      ru-RU: Секретный магазин
                    items:
                      - helmet
                      - sword
                      - shield
                    is_enabled: true
                    redeem_user_limit: 1
                    redeem_total_limit: 100
                    redeem_code_limit: 1
                    total_limit_state:
                      available: 50
                      reserved: 10
                      used: 40
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/Promotions_404-admin-coupon'
    delete:
      operationId: delete-unique-catalog-offer-promotion
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      summary: Supprimer une promotion par offre unique du catalogue
      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."
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
      tags:
        - promotions-unique-catalog-offers
      security:
        - basicAuth: []
      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'
  /v2/project/{project_id}/admin/unique_catalog_offer/{external_id}/activate:
    put:
      operationId: activate-unique-catalog-offer
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      summary: Activer une offre promotionnelle unique du catalogue
      description: >-
        Active une offre promotionnelle unique du catalogue.

        Une offre promotionnelle unique créée dans le catalogue est désactivée
        par défaut.

        Elle ne peut pas être utilisée tant que vous ne l'avez pas activée.

        Utilisez cet endpoint pour activer une promotion par coupon.
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
      tags:
        - promotions-unique-catalog-offers
      security:
        - basicAuth: []
      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'
  /v2/project/{project_id}/admin/unique_catalog_offer/{external_id}/deactivate:
    put:
      operationId: deactivate-unique-catalog-offer
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      summary: Désactiver une offre promotionnelle unique du catalogue
      description: >-
        Désactive une offre promotionnelle unique du catalogue.

        Une offre promotionnelle unique créée dans le catalogue est désactivée
        par défaut.

        Elle ne peut pas être utilisée tant que vous ne l'avez pas activée.

        Utilisez cet endpoint pour désactiver une promotion par coupon.
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
      tags:
        - promotions-unique-catalog-offers
      security:
        - basicAuth: []
      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'
  /v2/project/{project_id}/admin/unique_catalog_offer/{external_id}/code:
    post:
      operationId: create-unique-catalog-offer-code
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      summary: Créer un code pour une offre unique du catalogue
      description: Crée un code pour une offre unique du catalogue
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
      tags:
        - promotions-unique-catalog-offers
      security:
        - basicAuth: []
      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
    get:
      operationId: get-unique-catalog-offer-codes
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      summary: Lire les codes d'une offre unique du catalogue
      description: Récupère les codes d'une offre unique du catalogue.
      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'
      tags:
        - promotions-unique-catalog-offers
      security:
        - basicAuth: []
      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'
  /v2/project/{project_id}/admin/unique_catalog_offer/{external_id}/code/generate:
    put:
      operationId: generate-unique-catalog-offer-codes
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      summary: Générer des codes pour une offre unique du catalogue
      description: Génère des codes pour une offre unique du catalogue.
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
      tags:
        - promotions-unique-catalog-offers
      security:
        - basicAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                count:
                  $ref: '#/components/schemas/Promotions_coupon-generate-count'
              required:
                - count
      responses:
        '200':
          description: Les codes ont été générés avec succès.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    $ref: '#/components/schemas/Promotions_coupon-generate-count'
              examples:
                response:
                  value:
                    count: 10
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/Promotions_404-admin-promocode'
  /v2/project/{project_id}/admin/user/limit/promocode/external_id/{external_id}:
    get:
      tags:
        - promotions-promo-codes
      security:
        - basicAuth: []
      operationId: get-promo-code-user-limit
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
        - $ref: '#/components/parameters/user_external_id-query-param'
      summary: Lire la limite de code promo pour un utilisateur spécifique
      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/)"
      responses:
        '200':
          $ref: '#/components/responses/200-admin-get-user-promo-code-limits'
        '401':
          $ref: '#/components/responses/Common_401-invalid-basic-auth'
        '404':
          description: Objet non trouvé.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: integer
                  errorCode:
                    type: integer
                  errorMessage:
                    type: string
                  transactionId:
                    type: string
              examples:
                Promo code not found:
                  $ref: '#/components/examples/404-coupon-not-found'
                User not found:
                  $ref: '#/components/examples/404-user-not-found'
        '422':
          description: Requête non valide.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: integer
                  errorCode:
                    type: integer
                  errorMessage:
                    type: string
                  errorMessageExtended:
                    type: array
                  transactionId:
                    type: string
              examples:
                Invalid user_external_id:
                  $ref: '#/components/examples/Promotions_422-invalid-coupon'
  /v2/project/{project_id}/admin/user/limit/coupon/external_id/{external_id}:
    get:
      tags:
        - promotions-coupons
      security:
        - basicAuth: []
      operationId: get-coupon-user-limit
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
        - $ref: '#/components/parameters/user_external_id-query-param'
      summary: Lire la limite de coupon pour un utilisateur spécifique
      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/)"
      responses:
        '200':
          $ref: '#/components/responses/200-admin-get-user-coupon-limits'
        '401':
          $ref: '#/components/responses/Common_401-invalid-basic-auth'
        '404':
          description: Objet non trouvé.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: integer
                  errorCode:
                    type: integer
                  errorMessage:
                    type: string
                  transactionId:
                    type: string
              examples:
                Coupon not found:
                  $ref: '#/components/examples/404-coupon-not-found'
                User not found:
                  $ref: '#/components/examples/404-user-not-found'
        '422':
          description: Requête non valide.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: integer
                  errorCode:
                    type: integer
                  errorMessage:
                    type: string
                  errorMessageExtended:
                    type: array
                  transactionId:
                    type: string
              examples:
                Invalid user_external_id:
                  $ref: '#/components/examples/Promotions_422-invalid-coupon'
  /v2/project/{project_id}/admin/code/limit/promocode/external_id/{external_id}:
    get:
      tags:
        - promotions-promo-codes
      security:
        - basicAuth: []
      operationId: get-promo-code-code-limit
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      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'
      summary: Lire les limites pour les codes promo
      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/)"
      responses:
        '200':
          $ref: '#/components/responses/200-admin-get-code-promo-code-limits'
        '401':
          $ref: '#/components/responses/Common_401-invalid-basic-auth'
        '404':
          description: Objet non trouvé.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: integer
                  errorCode:
                    type: integer
                  errorMessage:
                    type: string
                  transactionId:
                    type: string
              examples:
                Promo code not found:
                  $ref: '#/components/examples/404-coupon-not-found'
        '422':
          description: Requête non valide.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: integer
                  errorCode:
                    type: integer
                  errorMessage:
                    type: string
                  errorMessageExtended:
                    type: array
  /v2/project/{project_id}/admin/code/limit/coupon/external_id/{external_id}:
    get:
      tags:
        - promotions-coupons
      security:
        - basicAuth: []
      operationId: get-coupon-code-limit
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      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'
      summary: Lire les limites pour les code de coupon uniques
      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/)"
      responses:
        '200':
          $ref: '#/components/responses/200-admin-get-code-coupon-limits'
        '401':
          $ref: '#/components/responses/Common_401-invalid-basic-auth'
        '404':
          description: Objet non trouvé.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: integer
                  errorCode:
                    type: integer
                  errorMessage:
                    type: string
                  transactionId:
                    type: string
              examples:
                Coupon not found:
                  $ref: '#/components/examples/404-coupon-not-found'
        '422':
          description: Requête non valide.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: integer
                  errorCode:
                    type: integer
                  errorMessage:
                    type: string
                  errorMessageExtended:
                    type: array
  /v2/project/{project_id}/admin/user/attribute/rule:
    get:
      tags:
        - personalized-catalog
      security:
        - basicAuth: []
      operationId: get-filter-rules
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      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'
      summary: Lire la liste des règles de filtrage du catalogue
      description: Récupère toutes les règles s'appliquant aux attributs utilisateur.
      responses:
        '200':
          description: Les règles ont été reçues avec succès.
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/user-attribute_personalized-catalog'
                  total_items_count:
                    type: number
                    description: Total number of rules.
                  has_more:
                    type: boolean
                    description: If another page with rules exists.
              examples:
                response:
                  value:
                    items:
                      - rule_id: 1
                        name: Ork race armor rule
                        is_enabled: true
                        is_satisfied_for_unauth: false
                        attribute_conditions:
                          - attribute: race
                            operator: eq
                            value: ork
                            type: string
                            can_be_missing: false
                        items:
                          - item_id: 1
                            sku: com.xsolla.ork_armor_1
                            name: Ork Armor
                            type: virtual_good
                          - item_id: 2
                            sku: com.xsolla.potion_pack_1
                            name: Potion pack
                            type: bundle
                            bundle_type: standard
                    total_items_count: 20
                    has_more: true
        '401':
          $ref: '#/components/responses/Common_401-complex'
        '403':
          $ref: '#/components/responses/403-auth-header-not-sent'
    post:
      tags:
        - personalized-catalog
      security:
        - basicAuth: []
      operationId: create-filter-rule
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
      summary: Créer une règle de filtrage du catalogue
      description: Crée une règle pour les attributs utilisateur.
      responses:
        '201':
          description: La règle a été créée avec succès.
          content:
            application/json:
              schema:
                type: object
                properties:
                  rule_id:
                    type: number
                    description: ID de règle.
              examples:
                response:
                  value:
                    rule_id: 1
        '401':
          $ref: '#/components/responses/Common_401-complex'
        '422':
          $ref: '#/components/responses/Common_422-body-validation'
      requestBody:
        $ref: '#/components/requestBodies/personalized-catalog_create-update-body'
  /v2/project/{project_id}/admin/user/attribute/rule/all:
    get:
      tags:
        - personalized-catalog
      security:
        - basicAuth: []
      operationId: get-all-filter-rules
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
      summary: Lire toutes les règles du catalogue pour une recherche côté client
      description: >-
        Récupère une liste de toutes les règles du catalogue pour la recherche
        côté client.


        <div class="notice"><strong>Attention</strong><br><br>Retourne
        uniquement l'ID de la règle, le nom et is_enabled</div>
      responses:
        '200':
          description: Les règles ont été reçues avec succès.
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      $ref: >-
                        #/components/schemas/user-attribute_personalized-catalog_all
              examples:
                response:
                  value:
                    items:
                      - rule_id: 1
                        name: Ork race armor rule
                        is_enabled: true
                        is_satisfied_for_unauth: false
                      - rule_id: 2
                        name: Age
                        is_enabled: false
                        is_satisfied_for_unauth: false
        '401':
          $ref: '#/components/responses/Common_401-complex'
        '403':
          $ref: '#/components/responses/403-auth-header-not-sent'
  /v2/project/{project_id}/admin/user/attribute/rule/{rule_id}:
    get:
      tags:
        - personalized-catalog
      security:
        - basicAuth: []
      operationId: get-filter-rule-by-id
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/personalized-catalog-rule_id-path-param'
      summary: Lire une règle de filtrage du catalogue
      description: >-
        Récupère des informations sur une règle spécifique s'appliquant aux
        attributs utilisateur.
      responses:
        '200':
          description: La règle a été reçue avec succès.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/user-attribute_personalized-catalog'
              examples:
                response:
                  value:
                    rule_id: 1
                    name: Ork race armor rule
                    is_enabled: true
                    is_satisfied_for_unauth: true
                    attribute_conditions:
                      - attribute: race
                        operator: eq
                        value: ork
                        type: string
                        can_be_missing: false
                    items:
                      - item_id: 1
                        sku: com.xsolla.ork_armor_1
                        name: Ork Armor
        '401':
          $ref: '#/components/responses/Common_401-complex'
    put:
      tags:
        - personalized-catalog
      security:
        - basicAuth: []
      operationId: update-filter-rule-by-id
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/personalized-catalog-rule_id-path-param'
      summary: Mettre à jour une règle de filtrage du catalogue
      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).
      responses:
        '204':
          description: Mise à jour réussie.
        '401':
          $ref: '#/components/responses/Common_401-complex'
        '422':
          $ref: '#/components/responses/Common_422-body-validation'
      requestBody:
        $ref: '#/components/requestBodies/personalized-catalog_create-update-body'
    patch:
      tags:
        - personalized-catalog
      security:
        - basicAuth: []
      operationId: patch-filter-rule-by-id
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/personalized-catalog-rule_id-path-param'
      summary: Appliquer une règle de filtrage de catalogue
      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.
      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'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/user-attribute_personalized-catalog-body'
            example:
              is_enabled: false
    delete:
      tags:
        - personalized-catalog
      security:
        - basicAuth: []
      operationId: delete-filter-rule-by-id
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/personalized-catalog-rule_id-path-param'
      summary: Supprimer une règle de filtrage du catalogue
      description: Supprime une règle spécifique.
      responses:
        '204':
          description: La suppression a été effectuée avec succès.
        '401':
          $ref: '#/components/responses/Common_401-complex'
  /v2/project/{project_id}/admin/user/limit/promotion/all:
    delete:
      tags:
        - user-limits-admin
      security:
        - basicAuth: []
      operationId: reset-all-user-promotions-limit
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
      summary: >-
        Actualiser toutes les limites de promotion pour un utilisateur
        spécifique
      description: >-
        Actualise toutes les limites de toutes les promotions pour un
        utilisateur spécifique afin qu'il puisse à nouveau utiliser ces
        promotions.


        L'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é :

        * [Promotions par
        réduction](https://developers.xsolla.com/fr/api/shop-builder/tag/promotions-discounts/)

        * [Promotions par
        bonus](https://developers.xsolla.com/fr/api/shop-builder/tag/promotions-bonuses/)
      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':
          description: Objet non trouvé.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: integer
                  errorCode:
                    type: integer
                  errorMessage:
                    type: string
                  transactionId:
                    type: string
              examples:
                User not found:
                  $ref: '#/components/examples/404-user-not-found'
        '422':
          description: Requête non valide.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: integer
                  errorCode:
                    type: integer
                  errorMessage:
                    type: string
                  errorMessageExtended:
                    type: array
                  transactionId:
                    type: string
              examples:
                Invalid user_external_id:
                  $ref: '#/components/examples/422-user_external_id_invalid'
      requestBody:
        $ref: '#/components/requestBodies/reset-user-limits'
  /v2/project/{project_id}/admin/user/limit/promotion/id/{promotion_id}/all:
    delete:
      tags:
        - user-limits-admin
      security:
        - basicAuth: []
      operationId: reset-user-promotion-limit
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/promotion_id-path-param'
      summary: Actualiser la limite d'une promotion pour les utilisateurs
      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.


        L'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é :

        * [Promotions par
        réduction](https://developers.xsolla.com/fr/api/shop-builder/tag/promotions-discounts/)

        * [Promotions par
        bonus](https://developers.xsolla.com/fr/api/shop-builder/tag/promotions-bonuses/)
      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':
          description: Objet non trouvé.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: integer
                  errorCode:
                    type: integer
                  errorMessage:
                    type: string
                  transactionId:
                    type: string
              examples:
                Item not found:
                  $ref: '#/components/examples/404-promotion-by-id-not-found'
                User not found:
                  $ref: '#/components/examples/404-user-not-found'
        '422':
          description: Requête non valide.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: integer
                  errorCode:
                    type: integer
                  errorMessage:
                    type: string
                  errorMessageExtended:
                    type: array
                  transactionId:
                    type: string
              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'
      requestBody:
        $ref: '#/components/requestBodies/reset-user-limits-flexible'
  /v2/project/{project_id}/admin/user/limit/promotion/id/{promotion_id}:
    get:
      tags:
        - user-limits-admin
      security:
        - basicAuth: []
      operationId: get-user-promotion-limit
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/promotion_id-path-param'
        - $ref: '#/components/parameters/user_external_id-query-param'
      summary: Lire la limite de promotion pour un utilisateur spécifique
      description: >-
        Récupère le nombre de fois qu'un utilisateur spécifique peut utiliser la
        promotion dans la limite appliquée.


        L'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é :

        * [Promotions par
        réduction](https://developers.xsolla.com/fr/api/shop-builder/tag/promotions-discounts/)

        * [Promotions par
        bonus](https://developers.xsolla.com/fr/api/shop-builder/tag/promotions-bonuses/)
      responses:
        '200':
          $ref: '#/components/responses/200-admin-get-user-promotion-limits'
        '401':
          $ref: '#/components/responses/Common_401-invalid-basic-auth'
        '404':
          description: Objet non trouvé.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: integer
                  errorCode:
                    type: integer
                  errorMessage:
                    type: string
                  transactionId:
                    type: string
              examples:
                Item not found:
                  $ref: '#/components/examples/404-promotion-by-id-not-found'
                User not found:
                  $ref: '#/components/examples/404-user-not-found'
        '422':
          description: Requête non valide.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: integer
                  errorCode:
                    type: integer
                  errorMessage:
                    type: string
                  errorMessageExtended:
                    type: array
                  transactionId:
                    type: string
              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'
    post:
      tags:
        - user-limits-admin
      security:
        - basicAuth: []
      operationId: add-user-promotion-limit
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/promotion_id-path-param'
      summary: Augmenter la limite de promotion pour un utilisateur spécifique
      description: >-
        Augmente le nombre de fois qu'un utilisateur spécifique peut utiliser la
        promotion dans la limite appliquée.


        L'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é :

        * [Promotions par
        réduction](https://developers.xsolla.com/fr/api/shop-builder/tag/promotions-discounts/)

        * [Promotions par
        bonus](https://developers.xsolla.com/fr/api/shop-builder/tag/promotions-bonuses/)
      responses:
        '200':
          $ref: '#/components/responses/200-admin-get-user-promotion-limits'
        '401':
          $ref: '#/components/responses/Common_401-invalid-basic-auth'
        '404':
          description: Objet non trouvé.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: integer
                  errorCode:
                    type: integer
                  errorMessage:
                    type: string
                  transactionId:
                    type: string
              examples:
                Item not found:
                  $ref: '#/components/examples/404-promotion-by-id-not-found'
                User not found:
                  $ref: '#/components/examples/404-user-not-found'
        '422':
          description: Requête non valide.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: integer
                  errorCode:
                    type: integer
                  errorMessage:
                    type: string
                  errorMessageExtended:
                    type: array
                  transactionId:
                    type: string
              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'
                Available promotion limit is out of range:
                  $ref: >-
                    #/components/examples/422-promotion-out-of-range-available-user-limit
      requestBody:
        $ref: '#/components/requestBodies/update-user-limits-strict'
    put:
      tags:
        - user-limits-admin
      security:
        - basicAuth: []
      operationId: set-user-promotion-limit
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/promotion_id-path-param'
      summary: Définir la limite de promotion pour un utilisateur spécifique
      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.


        L'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é :

        * [Promotions par
        réduction](https://developers.xsolla.com/fr/api/shop-builder/tag/promotions-discounts/)

        * [Promotions par
        bonus](https://developers.xsolla.com/fr/api/shop-builder/tag/promotions-bonuses/)
      responses:
        '200':
          $ref: '#/components/responses/200-admin-get-user-promotion-limits'
        '401':
          $ref: '#/components/responses/Common_401-invalid-basic-auth'
        '404':
          description: Objet non trouvé.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: integer
                  errorCode:
                    type: integer
                  errorMessage:
                    type: string
                  transactionId:
                    type: string
              examples:
                Item not found:
                  $ref: '#/components/examples/404-promotion-by-id-not-found'
                User not found:
                  $ref: '#/components/examples/404-user-not-found'
        '422':
          description: Requête non valide.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: integer
                  errorCode:
                    type: integer
                  errorMessage:
                    type: string
                  errorMessageExtended:
                    type: array
                  transactionId:
                    type: string
              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'
      requestBody:
        $ref: '#/components/requestBodies/update-user-limits-flexible'
    delete:
      tags:
        - user-limits-admin
      security:
        - basicAuth: []
      operationId: remove-user-promotion-limit
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/promotion_id-path-param'
      summary: Réduire la limite de promotion pour un utilisateur spécifique
      description: >-
        Réduit le nombre d'utilisations restantes d'une promotion pour un
        utilisateur spécifié dans le cadre de la limite appliquée.


        L'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é :

        * [Promotions par
        réduction](https://developers.xsolla.com/fr/api/shop-builder/tag/promotions-discounts/)

        * [Promotions par
        bonus](https://developers.xsolla.com/fr/api/shop-builder/tag/promotions-bonuses/)
      responses:
        '200':
          $ref: '#/components/responses/200-admin-get-user-promotion-limits'
        '401':
          $ref: '#/components/responses/Common_401-invalid-basic-auth'
        '404':
          description: Objet non trouvé.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: integer
                  errorCode:
                    type: integer
                  errorMessage:
                    type: string
                  transactionId:
                    type: string
              examples:
                Item not found:
                  $ref: '#/components/examples/404-promotion-by-id-not-found'
                User not found:
                  $ref: '#/components/examples/404-user-not-found'
        '422':
          description: Requête non valide.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: integer
                  errorCode:
                    type: integer
                  errorMessage:
                    type: string
                  errorMessageExtended:
                    type: array
                  transactionId:
                    type: string
              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'
                Available promotion limit is out of range:
                  $ref: >-
                    #/components/examples/422-promotion-out-of-range-available-user-limit
      requestBody:
        $ref: '#/components/requestBodies/update-user-limits-strict'
  /v2/project/{project_id}/admin/items/value_points:
    get:
      summary: Lire la liste des points de valeur
      description: >-
        Récupère la liste des points de valeur au sein d'un projet à des fins
        d'administration.e
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/limit-query-param'
        - $ref: '#/components/parameters/offset-query-param'
      tags:
        - reward-chain-value-points-admin
      operationId: admin-get-value-points-list
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      security:
        - basicAuth: []
      responses:
        '200':
          $ref: '#/components/responses/200-admin-get-value-points'
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
    post:
      summary: Créer un point de valeur
      description: Crée un point de valeur.
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
      tags:
        - reward-chain-value-points-admin
      operationId: admin-create-value-points
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      security:
        - basicAuth: []
      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'
  /v2/project/{project_id}/admin/items/value_points/sku/{item_sku}:
    get:
      summary: Lire un point de valeur
      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
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      security:
        - basicAuth: []
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/item_sku-path-param'
      tags:
        - reward-chain-value-points-admin
      responses:
        '200':
          $ref: '#/components/responses/200-admin-get-value-point'
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
    put:
      summary: Mettre à jour un point de valeur
      description: Met à jour un point de valeur spécifique par son UGS.
      operationId: admin-update-value-point
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      security:
        - basicAuth: []
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/item_sku-path-param'
      tags:
        - reward-chain-value-points-admin
      requestBody:
        $ref: '#/components/requestBodies/create-value-point'
      responses:
        '204':
          description: Le point de valeur a été mis à jour avec succès.
          content: {}
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
        '422':
          $ref: '#/components/responses/422-admin-create-update-rc-vp-invalid-request'
    delete:
      summary: Supprimer des points de valeur
      description: Supprime un point de valeur spécifique par son UGS.
      operationId: admin-delete-value-point
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      security:
        - basicAuth: []
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/item_sku-path-param'
      tags:
        - reward-chain-value-points-admin
      responses:
        '204':
          description: Le point de valeur a été supprimé avec succès.
          content: {}
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
  /v2/project/{project_id}/admin/items/{value_point_sku}/value_points/rewards:
    get:
      summary: Lire la liste des objets ayant des points de valeur
      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
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      security:
        - basicAuth: []
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/value_point_sku-path-param'
      tags:
        - reward-chain-value-points-admin
      responses:
        '200':
          $ref: '#/components/responses/200-admin-get-list-value-point-rewards'
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
    put:
      summary: Définir des points de valeur pour les objets
      description: >-
        Attribue des points de valeur à un ou plusieurs objets par UGS. Les
        utilisateurs reçoivent des points de valeur en achetant ces objets.


        Notez que cette requête PUT écrase tous les points de valeur
        précédemment définis pour les objets du projet.


        Pour éviter la suppression involontaire de points de valeur, incluez
        tous les objets et leurs points de valeur respectifs dans chaque requête
        PUT.


        Si 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
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      security:
        - basicAuth: []
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/value_point_sku-path-param'
      tags:
        - reward-chain-value-points-admin
      requestBody:
        $ref: '#/components/requestBodies/set-item-value-point-reward'
      responses:
        '204':
          description: >-
            Les récompenses en points de valeur des objets ont été mises à jour
            avec succès.
          content: {}
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/sellable-item-by-sku_404'
    patch:
      summary: Mettre à jour partiellement les points de valeur des objets
      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
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      security:
        - basicAuth: []
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/value_point_sku-path-param'
      tags:
        - reward-chain-value-points-admin
      requestBody:
        $ref: '#/components/requestBodies/set-item-value-point-reward-for-patch'
      responses:
        '204':
          description: >-
            Les récompenses en points de valeur des objets ont été mises à jour
            avec succès.
          content: {}
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/sellable-item-by-sku_404'
    delete:
      summary: Supprimer les points de valeur des objets
      description: Supprime les récompenses en points de valeur de TOUS les objets.
      operationId: admin-delete-items-value-point-reward
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      security:
        - basicAuth: []
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/value_point_sku-path-param'
      tags:
        - reward-chain-value-points-admin
      responses:
        '204':
          description: >-
            Les récompenses en points de valeur des objets ont été supprimées
            avec succès.
          content: {}
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
  /v2/project/{project_id}/user/reward_chain:
    get:
      tags:
        - reward-chain-client
      operationId: get-reward-chains-list
      x-badges:
        - name: Client-side
          color: '#80eaff'
      summary: Lire les chaînes de récompenses de l'utilisateur actuel
      description: "Endpoint client. Récupère des informations sur les chaînes de récompenses de l'utilisateur actuel.\n\n<div class=\"notice\">\n  <strong>Attention</strong><br><br>\n    Tous les projets sont soumis à une limite de nombre d'objets pouvant être\n    retourné dans une réponse. La valeur par défaut et maximale est de <strong>50 objets\n    par réponse.</strong> Pour récupérer davantage de données page par page, utilisez les champs <b>limit</b>\n    et <b>offset</b>.\n</div>\n\n<br>\n\n<div class=\"note\">\n  <strong>Note</strong><br><br>\n    Cet appel API utilise un JWT utilisateur pour l'autorisation.<br><br>\n    Incluez le jeton dans l'en-tête <code>Authorization</code> au format suivant\_: <code>Bearer &lt;user_JWT&gt;</code>. Pour plus d'informations sur le JWT utilisateur, consultez le bloc <strong>Security</strong> pour cet appel.\n</div>"
      security:
        - XsollaLoginUserJWT: []
      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'
  /v2/project/{project_id}/user/reward_chain/{reward_chain_id}/balance:
    get:
      tags:
        - reward-chain-client
      operationId: get-user-reward-chain-balance
      x-badges:
        - name: Client-side
          color: '#80eaff'
      summary: Lire le solde de points de valeur de l'utilisateur actuel
      description: "Endpoint client. Récupère le solde actuel des points de valeur de l'utilisateur. <br>\n\n<div class=\"note\">\n  <strong>Note</strong><br><br>\n    Cet appel API utilise un JWT utilisateur pour l'autorisation.<br><br>\n    Incluez le jeton dans l'en-tête <code>Authorization</code> au format suivant\_: <code>Bearer &lt;user_JWT&gt;</code>. Pour plus d'informations sur le JWT utilisateur, consultez le bloc <strong>Security</strong> pour cet appel.\n</div>"
      security:
        - XsollaLoginUserJWT: []
      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'
  /v2/project/{project_id}/user/reward_chain/{reward_chain_id}/step/{step_id}/claim:
    post:
      tags:
        - reward-chain-client
      operationId: claim-user-reward-chain-step-reward
      x-badges:
        - name: Client-side
          color: '#80eaff'
      summary: Réclamer la récompense d'une étape
      description: "Endpoint client. Réclame la récompense d'étape actuelle de l'utilisateur dans une chaîne de récompenses. <br>\n\n<div class=\"note\">\n  <strong>Note</strong><br><br>\n    Cet appel API utilise un JWT utilisateur pour l'autorisation.<br><br>\n    Incluez le jeton dans l'en-tête <code>Authorization</code> au format suivant\_: <code>Bearer &lt;user_JWT&gt;</code>. Pour plus d'informations sur le JWT utilisateur, consultez le bloc <strong>Security</strong> pour cet appel.\n</div>"
      security:
        - XsollaLoginUserJWT: []
      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'
  /v2/project/{project_id}/user/clan/contributors/{reward_chain_id}/top:
    get:
      tags:
        - clan-reward-chain-client
      operationId: get-user-clan-top-contributors
      x-badges:
        - name: Client-side
          color: '#80eaff'
      responses:
        '200':
          description: "Liste des 10\_premiers contributeurs à la chaîne de récompenses de clan."
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    name:
                      type: string
                      example: Rocket
                      description: >-
                        User ID. This is the ID sending to Xsolla during
                        authorization and links the user to your Xsolla Login
                        project.
                    contributed_amount:
                      type: integer
                      example: 100
                      description: The amount of value points contributed by the user.
              examples:
                clan:
                  summary: User has a clan
                  value:
                    - name: winner
                      contributed_amount: 555
                    - name: Rocket
                      contributed_amount: 398
                    - name: MrJoe
                      contributed_amount: 201
                    - name: beginner
                      contributed_amount: 1
                without-clan:
                  summary: User doesn't belong to a clan
                  value: []
      security:
        - XsollaLoginUserJWT: []
      parameters:
        - name: project_id
          in: path
          required: true
          description: ID de projet.
          schema:
            type: integer
            example: 44056
        - name: reward_chain_id
          in: path
          required: true
          description: ID de la chaîne de récompenses.
          schema:
            type: integer
            example: 101
      summary: "Lire les 10\_premiers contributeurs à la chaîne de récompense au sein du clan"
      description: "Récupère la liste des 10 principaux contributeurs de la chaîne de récompenses associée au clan de l'utilisateur actuel. Si l'utilisateur n'appartient pas à un clan, l'appel renvoie un tableau vide. <br>\n\n<div class=\"note\">\n  <strong>Note</strong><br><br>\n    Cet appel API utilise un JWT utilisateur pour l'autorisation.<br><br>\n    Incluez le jeton dans l'en-tête <code>Authorization</code> au format suivant\_: <code>Bearer &lt;user_JWT&gt;</code>. Pour plus d'informations sur le JWT utilisateur, consultez le bloc <strong>Security</strong> pour cet appel.\n</div>"
  /v2/project/{project_id}/user/clan/update:
    put:
      tags:
        - clan-reward-chain-client
      operationId: user-clan-update
      x-badges:
        - name: Client-side
          color: '#80eaff'
      responses:
        '200':
          $ref: '#/components/responses/200-client-update-user-clan'
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-client-auth'
      security:
        - XsollaLoginUserJWT: []
      parameters:
        - name: project_id
          in: path
          required: true
          description: ID de projet.
          schema:
            type: integer
            default: 44056
      summary: Mise à jour du clan de l'utilisateur actuel
      description: "Met à jour le clan de l'utilisateur actuel via les attributs utilisateur. Réclame toutes les récompenses non réclamées des chaînes de récompenses associées à un clan précédent et les renvoie dans la réponse. Si l'utilisateur appartenait à un clan et n'en fait plus partie, son appartenance est révoquée. Si l'utilisateur a changé de clan, celui-ci est mis à jour. <br>\n\n<div class=\"note\">\n  <strong>Note</strong><br><br>\n    Cet appel API utilise un JWT utilisateur pour l'autorisation.<br><br>\n    Incluez le jeton dans l'en-tête <code>Authorization</code> au format suivant\_: <code>Bearer &lt;user_JWT&gt;</code>. Pour plus d'informations sur le JWT utilisateur, consultez le bloc <strong>Security</strong> pour cet appel.\n</div>"
  /v3/project/{project_id}/admin/reward_chain:
    get:
      summary: Lire une liste de chaînes de récompenses
      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
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      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'
      tags:
        - reward-chain-value-points-admin
      security:
        - basicAuth: []
      responses:
        '200':
          $ref: '#/components/responses/200-admin-get-list-reward-chains'
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
    post:
      summary: Créer une chaîne de récompenses
      description: Crée une chaîne de récompenses.
      security:
        - basicAuth: []
      operationId: admin-create-reward-chain
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
      tags:
        - reward-chain-value-points-admin
      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'
  /v3/project/{project_id}/admin/reward_chain/id/{reward_chain_id}:
    get:
      summary: Lire une chaîne de récompenses
      description: Récupère des informations sur une chaîne de récompenses spécifique.
      operationId: admin-get-reward-chain
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/reward_chain_id-path-param'
      tags:
        - reward-chain-value-points-admin
      security:
        - basicAuth: []
      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'
    put:
      summary: Mettre à jour une chaîne de récompenses
      description: Met à jour une chaîne de récompenses spécifique.
      security:
        - basicAuth: []
      operationId: admin-update-reward-chain
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/reward_chain_id-path-param'
      tags:
        - reward-chain-value-points-admin
      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'
    delete:
      summary: Supprimer une chaîne de récompenses
      description: Supprime une chaîne de récompenses spécifique.
      security:
        - basicAuth: []
      operationId: admin-delete-reward-chain
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/reward_chain_id-path-param'
      tags:
        - reward-chain-value-points-admin
      responses:
        '204':
          $ref: '#/components/responses/204-admin-delete-reward-chain'
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
  /v3/project/{project_id}/admin/reward_chain/id/{reward_chain_id}/toggle:
    put:
      summary: Basculer une chaîne de récompenses
      description: Active/désactive la chaîne de récompenses.
      security:
        - basicAuth: []
      operationId: admin-toggle-reward-chain
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/reward_chain_id-path-param'
      tags:
        - reward-chain-value-points-admin
      responses:
        '204':
          $ref: '#/components/responses/204-admin-toggle-reward-chain'
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
  /v3/project/{project_id}/admin/reward_chain/id/{reward_chain_id}/reset:
    post:
      summary: Réinitialiser la chaîne de récompenses
      description: >-
        Réinitialise le solde de points de valeur et la progression de tous les
        utilisateurs dans la chaîne de récompenses.<br> Le solde est lié au type
        de points de valeur, et non à une chaîne spécifique. Si ces points sont
        utilisés dans d’autres chaînes, le solde sera réinitialisé dans toutes
        celles qui les utilisent.<br> Après la réinitialisation, vous pouvez
        mettre à jour la période de validité de la chaîne, et les utilisateurs
        pourront progresser à nouveau.<br> Le solde du clan correspond à la
        somme des soldes de ses membres et sera donc également réinitialisé.<br>
        Cette opération est irréversible et concerne tous les utilisateurs du
        projet.


        <div class="notice"><strong>Avis</strong>
          <br><br>
         Ne réinitialisez pas la chaîne de récompenses pendant sa période de validité. Dans ce cas, les utilisateurs risquent de perdre des points de valeur gagnés avant de réclamer leur récompense.
        </div>
      security:
        - basicAuth: []
      operationId: admin-reset-reward-chain
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/reward_chain_id-path-param'
      tags:
        - reward-chain-value-points-admin
      responses:
        '204':
          $ref: '#/components/responses/204-admin-reset-reward-chain'
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
  /v2/project/{project_id}/admin/daily_chain:
    get:
      summary: Lire une liste de récompenses quotidiennes
      description: "Récupère une liste de récompenses quotidiennes à des fins d'administration.\n\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
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      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'
      tags:
        - daily-chain-admin
      security:
        - basicAuth: []
      responses:
        '200':
          $ref: '#/components/responses/200-admin-get-list-daily-chains'
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
    post:
      summary: Créer une récompense quotidienne
      description: Crée une récompense quotidienne.
      security:
        - basicAuth: []
      operationId: admin-create-daily-chain
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
      tags:
        - daily-chain-admin
      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'
  /v2/project/{project_id}/admin/daily_chain/id/{daily_chain_id}:
    get:
      summary: Lire une récompense quotidienne
      description: Récupère une récompense quotidienne spécifique pour administration.
      operationId: admin-get-daily-chain
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/daily_chain_id-path-param'
      tags:
        - daily-chain-admin
      security:
        - basicAuth: []
      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'
    put:
      summary: Mettre à jour la récompense quotidienne
      description: Met à jour une récompense quotidienne spécifique.
      security:
        - basicAuth: []
      operationId: admin-update-daily-chain
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/daily_chain_id-path-param'
      tags:
        - daily-chain-admin
      requestBody:
        $ref: '#/components/requestBodies/update-daily-chain'
      responses:
        '204':
          description: Récompense quotidienne mise à jour avec succès.
          content: {}
        '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'
    delete:
      summary: Supprimer la récompense quotidienne
      description: Supprime une récompense quotidienne spécifique.
      security:
        - basicAuth: []
      operationId: admin-delete-daily-chain
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/daily_chain_id-path-param'
      tags:
        - daily-chain-admin
      responses:
        '204':
          description: Récompense quotidienne supprimée avec succès.
          content: {}
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/404-daily-chain-not-found'
  /v2/project/{project_id}/admin/daily_chain/id/{daily_chain_id}/toggle:
    put:
      summary: Basculer une récompense quotidienne
      description: Active ou désactive une récompense quotidienne.
      security:
        - basicAuth: []
      operationId: admin-toggle-daily-chain
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/daily_chain_id-path-param'
      tags:
        - daily-chain-admin
      responses:
        '204':
          description: Récompense quotidienne désactivée ou activée.
          content: {}
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/404-daily-chain-not-found'
  /v2/project/{project_id}/admin/daily_chain/id/{daily_chain_id}/reset:
    post:
      summary: Réinitialiser la récompense quotidienne
      description: >-
        Réinitialise la progression de tous les utilisateurs pour cette
        récompense quotidienne. Applicable uniquement aux récompenses de type
        `rolling`.
      security:
        - basicAuth: []
      operationId: admin-reset-daily-chain
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/daily_chain_id-path-param'
      tags:
        - daily-chain-admin
      responses:
        '204':
          description: Récompense quotidienne réinitialisée.
          content: {}
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/404-daily-chain-not-found'
  /v2/project/{project_id}/user/daily_chain:
    get:
      tags:
        - daily-chain-client
      operationId: get-daily-chains-list
      x-badges:
        - name: Client-side
          color: '#80eaff'
      summary: Lire les récompenses quotidiennes de l'utilisateur actuel
      description: "Endpoint client. Récupère les récompenses quotidiennes de l'utilisateur actuel.\n\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 <code>limit</code> et <code>offset</code>, et récupérez d'autres pages. Par exemple, avec <code>limit = 25</code> et <code>offset = 100</code>, la réponse renvoie 25\_objets à partir du 101ᵉ objet de la liste globale.</div>\n\n<br>\n\n<div class=\"note\">\n  <strong>Note</strong><br><br>\n    Cet appel API utilise un JWT utilisateur pour l'autorisation.<br><br>\n    Incluez le jeton dans l'en-tête <code>Authorization</code> au format suivant\_: <code>Bearer &lt;user_JWT&gt;</code>. Pour plus d'informations sur le JWT utilisateur, consultez le bloc <strong>Security</strong> pour cet appel.\n</div>"
      security:
        - XsollaLoginUserJWT: []
      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'
  /v2/project/{project_id}/user/daily_chain/{daily_chain_id}:
    get:
      tags:
        - daily-chain-client
      operationId: get-user-daily-chain-by-id
      x-badges:
        - name: Client-side
          color: '#80eaff'
      summary: Lire la récompense quotidienne de l'utilisateur actuel par son ID
      description: "Endpoint client. Récupère la récompense quotidienne de l'utilisateur actuel par son ID. <br>\n\n<div class=\"note\">\n  <strong>Note</strong><br><br>\n    Cet appel API utilise un JWT utilisateur pour l'autorisation.<br><br>\n    Incluez le jeton dans l'en-tête <code>Authorization</code> au format suivant\_: <code>Bearer &lt;user_JWT&gt;</code>. Pour plus d'informations sur le JWT utilisateur, consultez le bloc <strong>Security</strong> pour cet appel.\n</div>"
      security:
        - XsollaLoginUserJWT: []
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/daily_chain_id-path-param'
      responses:
        '200':
          description: Récompense quotidienne de l'utilisateur récupérée avec succès.
          content:
            application/json:
              examples:
                response:
                  $ref: '#/components/examples/200-client-daily-chain'
              schema:
                $ref: '#/components/schemas/client-daily-chain-model'
        '404':
          $ref: '#/components/responses/404-daily-chain-not-found'
  /v2/project/{project_id}/user/daily_chain/{daily_chain_id}/step/number/{step_number}/claim:
    post:
      tags:
        - daily-chain-client
      operationId: claim-user-daily-chain-step-reward
      x-badges:
        - name: Client-side
          color: '#80eaff'
      summary: Réclamer une étape de récompense quotidienne
      description: "Endpoint client. Réclame la récompense d'une étape d'une récompense quotidienne de l'utilisateur actuel. Les étapes doivent être réclamées dans l'ordre séquentiel. Une récompense d'étape manquée ne peut être récupérée ni en monnaie virtuelle ou réelle, ni en regardant une publicité <br>\n\n<div class=\"note\">\n  <strong>Note</strong><br><br>\n    Cet appel API utilise un JWT utilisateur pour l'autorisation.<br><br>\n    Incluez le jeton dans l'en-tête <code>Authorization</code> au format suivant\_: <code>Bearer &lt;user_JWT&gt;</code>. Pour plus d'informations sur le JWT utilisateur, consultez le bloc <strong>Security</strong> pour cet appel.\n</div>"
      security:
        - XsollaLoginUserJWT: []
      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':
          description: Impossible de réclamer l'étape.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/daily-chain-error-model'
              examples:
                invalid-step:
                  $ref: >-
                    #/components/examples/422-daily-chain-claim-error-invalid-step
  /v2/project/{project_id}/user/offer_chain:
    get:
      tags:
        - offer-chain-client
      operationId: get-offer-chains-list
      x-badges:
        - name: Client-side
          color: '#80eaff'
      summary: Lire les chaînes d'offres de l'utilisateur actuel
      description: "Récupère les chaînes d'offres de l'utilisateur actuel.\n\n<div class=\"notice\"><strong>Attention</strong><br><br>Tous les projets sont soumis a 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>30\_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>\n\n<br>\n\n<div class=\"note\">\n  <strong>Note</strong><br><br>\n    Cet appel API utilise un JWT utilisateur pour l'autorisation.<br><br>\n    Incluez le jeton dans l'en-tête <code>Authorization</code> au format suivant\_: <code>Bearer &lt;user_JWT&gt;</code>. Pour plus d'informations sur le JWT utilisateur, consultez le bloc <strong>Security</strong> pour cet appel.\n</div>"
      security:
        - XsollaLoginUserJWT: []
      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'
  /v2/project/{project_id}/user/offer_chain/{offer_chain_id}:
    get:
      tags:
        - offer-chain-client
      operationId: get-user-offer-chain-by-id
      x-badges:
        - name: Client-side
          color: '#80eaff'
      summary: Lire une chaîne d'offres de l'utilisateur actuel par ID
      description: "Récupère la chaîne d'offres de l'utilisateur actuel par ID de chaîne d'offres. <br>\n\n<div class=\"note\">\n  <strong>Note</strong><br><br>\n    Cet appel API utilise un JWT utilisateur pour l'autorisation.<br><br>\n    Incluez le jeton dans l'en-tête <code>Authorization</code> au format suivant\_: <code>Bearer &lt;user_JWT&gt;</code>. Pour plus d'informations sur le JWT utilisateur, consultez le bloc <strong>Security</strong> pour cet appel.\n</div>"
      security:
        - XsollaLoginUserJWT: []
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/offer_chain_id-path-param'
      responses:
        '200':
          description: Chaîne d'offres de l'utilisateur récupérée avec succès.
          content:
            application/json:
              examples:
                response:
                  $ref: '#/components/examples/200-client-offer-chain'
              schema:
                $ref: '#/components/schemas/client-offer-chain-model'
        '404':
          $ref: '#/components/responses/404-offer-chain-not-found'
  /v2/project/{project_id}/user/offer_chain/{offer_chain_id}/step/number/{step_number}/claim:
    post:
      tags:
        - offer-chain-client
      operationId: claim-user-offer-chain-step-reward
      x-badges:
        - name: Client-side
          color: '#80eaff'
      summary: Réclamer une étape de chaîne d'offres gratuite
      description: "Termine la progression de l'utilisateur actuel dans l'étape de la chaîne d'offres et attribue la récompense associée.\n\n<div class=\"notice\">\n <strong>Attention</strong><br><br>\n Utilisez cet appel uniquement pour les étapes gratuites de la chaîne d’offres.\n Pour les étapes nécessitant un paiement en devises réelles, utilisez plutôt l'appel <a href=\"/fr/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>.\n</div>\n\n<br>\n\n<div class=\"note\">\n  <strong>Note</strong><br><br>\n    Cet appel API utilise un JWT utilisateur pour l'autorisation.<br><br>\n    Incluez le jeton dans l'en-tête <code>Authorization</code> au format suivant\_: <code>Bearer &lt;user_JWT&gt;</code>. Pour plus d'informations sur le JWT utilisateur, consultez le bloc <strong>Security</strong> pour cet appel.\n</div>"
      security:
        - XsollaLoginUserJWT: []
      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':
          description: Étape gratuite réclamée avec succès et récompense attribuée.
          content:
            application/json:
              schema:
                type: object
                properties:
                  order_id:
                    type: integer
                    description: ID de commande.
              examples:
                response:
                  value:
                    order_id: 641
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-client-auth'
        '404':
          $ref: '#/components/responses/404-offer-chain-step-not-found'
        '422':
          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.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/offer-chain-error-model'
              examples:
                invalid-step:
                  $ref: >-
                    #/components/examples/422-offer-chain-claim-error-invalid-step
  /v2/project/{project_id}/user/offer_chain/{offer_chain_id}/step/number/{step_number}/order:
    post:
      tags:
        - offer-chain-client
        - payment-client-side
      operationId: order-user-offer-chain-step-reward
      x-badges:
        - name: Client-side
          color: '#80eaff'
      summary: Créer une commande pour une étape payante de la chaîne d'offres
      description: "Crée une commande pour l'objet associé à une étape payante spécifique de la chaîne d'offres. La commande créée obtient le statut `new`.\n\nPour ouvrir l'interface de paiement dans une nouvelle fenêtre, utilisez le lien suivant : `https://secure.xsolla.com/paystation4/?token={token}`, où `{token}` est le jeton reçu.\n\nÀ des fins de test, utilisez cette URL : `https://sandbox-secure.xsolla.com/paystation4/?token={token}`.\n\n<div class=\"notice\">\n <strong>Attention</strong> <br><br>\n Cette méthode doit être utilisée côté client. L'adresse IP de l'utilisateur permet de déterminer son pays, ce qui influence la devise et les modes de paiement disponibles. Utiliser cette méthode côté serveur peut entraîner une détection incorrecte de la devise et affecter les modes de paiement dans <a href=\"https://developers.xsolla.com/fr/doc/pay-station/\">Pay Station</a>.\n</div>\n\n<br>\n\n<div class=\"notice\">\n <strong>Attention</strong><br><br>\n Utilisez cet appel uniquement pour les étapes payantes de la chaîne d'offres.\n Pour les étapes gratuites, utilisez plutôt l'appel <a href=\"/fr/api/shop-builder/operation/claim-user-offer-chain-step-reward\">Réclamer une étape de chaîne d'offres gratuite</a>.\n</div>\n\n<br>\n\n<div class=\"note\">\n  <strong>Note</strong><br><br>\n    Cet appel API utilise un JWT utilisateur pour l'autorisation.<br><br>\n    Incluez le jeton dans l'en-tête <code>Authorization</code> au format suivant\_: <code>Bearer &lt;user_JWT&gt;</code>. Pour plus d'informations sur le JWT utilisateur, consultez le bloc <strong>Security</strong> pour cet appel.\n</div>"
      security:
        - XsollaLoginUserJWT: []
      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':
          description: Impossible d'acheter l'étape.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/offer-chain-error-model'
              examples:
                invalid-step:
                  $ref: >-
                    #/components/examples/422-offer-chain-claim-error-invalid-step
  /v2/project/{project_id}/admin/offer_chain:
    get:
      summary: Lire une liste de chaînes d'offres
      description: "Récupère une liste de chaînes d'offres à des fins d'administration.\n\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
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      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'
      tags:
        - offer-chain-admin
      security:
        - basicAuth: []
      responses:
        '200':
          $ref: '#/components/responses/200-admin-get-list-offer-chains'
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
    post:
      summary: Créer une chaîne d'offres
      description: Crée une chaîne d'offres
      security:
        - basicAuth: []
      operationId: admin-create-offer-chain
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
      tags:
        - offer-chain-admin
      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'
  /v2/project/{project_id}/admin/offer_chain/id/{offer_chain_id}:
    get:
      summary: Lire une chaîne d'offre
      description: Récupère une chaîne d'offres spécifique à des fin d'administration.
      operationId: admin-get-offer-chain
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/offer_chain_id-path-param'
      tags:
        - offer-chain-admin
      security:
        - basicAuth: []
      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'
    put:
      summary: Mettre à jour une chaîne
      description: Met à jour une chaîne d'offres spécifique.
      security:
        - basicAuth: []
      operationId: admin-update-offer-chain
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/offer_chain_id-path-param'
      tags:
        - offer-chain-admin
      requestBody:
        $ref: '#/components/requestBodies/update-offer-chain'
      responses:
        '204':
          description: Chaîne d'offres mise à jour avec succès.
          content: {}
        '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'
    delete:
      summary: Supprimer une chaîne d'offres
      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=\"/fr/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."
      security:
        - basicAuth: []
      operationId: admin-delete-offer-chain
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/offer_chain_id-path-param'
      tags:
        - offer-chain-admin
      responses:
        '204':
          description: Chaîne d'offres supprimée avec succès.
          content: {}
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/404-offer-chain-not-found'
  /v2/project/{project_id}/admin/offer_chain/id/{offer_chain_id}/toggle:
    put:
      summary: Activer/désactiver une chaîne d'offres
      description: >-
        Active ou désactive une chaîne d'offres.


        Lorsque 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.


        Lorsque la chaîne d'offres est réactivée, les utilisateurs peuvent
        continuer à partir de l'étape où ils se sont arrêtés.
      security:
        - basicAuth: []
      operationId: admin-toggle-offer-chain
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/offer_chain_id-path-param'
      tags:
        - offer-chain-admin
      responses:
        '204':
          description: Chaîne d'offres désactivée/activée.
          content: {}
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/404-offer-chain-not-found'
  /v2/project/{project_id}/admin/items/upsell:
    get:
      tags:
        - upsell-admin
      operationId: get-upsell-configurations-for-project-admin
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      responses:
        '200':
          description: >-
            Liste des détails de configuration et des objets utilisés pour la
            vente incitative dans le projet.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    is_enabled:
                      type: boolean
                      example: true
                      description: Whether upsell is enabled for the project.
                    type:
                      type: string
                      enum:
                        - fixed_list
                        - most_sellable
                        - only_promotions
                      example: fixed_list
                      description: The type of upsell.
                    items:
                      type: array
                      example:
                        - item_id: 1
                          sku: com.xsolla.booster_mega_1
                          name:
                            en: Item's name
                            de: Name des Artikels
                          type: virtual_good
                      description: >-
                        The list of items SKU that are a part of the upsell in
                        the project.
                      items:
                        type: object
                        properties:
                          item_id:
                            $ref: '#/components/schemas/item_id'
                          sku:
                            $ref: '#/components/schemas/sku'
                          type:
                            $ref: '#/components/schemas/item_type'
                          name:
                            $ref: '#/components/schemas/name-localization-object'
                          bundle_type:
                            $ref: '#/components/schemas/bundle_type'
                          unit_type:
                            $ref: '#/components/schemas/unit_type'
                          unit_items:
                            type: array
                            description: Game keys for different DRMs.
                            items:
                              type: object
                              description: >-
                                Game key item. It represents game on a certain
                                platform (steam, gog, etc.).
                              properties:
                                item_id:
                                  $ref: '#/components/schemas/item_id'
                                sku:
                                  $ref: '#/components/schemas/sku'
                                type:
                                  $ref: '#/components/schemas/item_type'
                                name:
                                  $ref: >-
                                    #/components/schemas/name-localization-object
                                drm_name:
                                  $ref: '#/components/schemas/drm_name'
                                drm_sku:
                                  $ref: '#/components/schemas/drm_sku'
              examples:
                upsell:
                  summary: Project has upsell
                  value:
                    - is_enabled: true
                      type: fixed_list
                      items:
                        - item_id: 1
                          sku: com.xsolla.booster_mega_1
                          name:
                            en: Item's name
                            de: Name des Artikels
                          type: virtual_good
                        - item_id: 2
                          sku: com.xsolla.booster_mega_2
                          name:
                            en: Item's name
                            de: Name des Artikels
                          type: bundle
                          bundle_type: standard
                        - item_id: 3
                          sku: com.xsolla.mega_game_1
                          name:
                            en: Mega game
                          type: unit
                          unit_type: game
                          unit_items:
                            - item_id: 4
                              sku: com.xsolla.mega_game_steam_1
                              name:
                                en: Mega game steam
                              drm_name: Steam
                              drm_sku: steam_key_1
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-client-auth'
      security:
        - XsollaLoginUserJWT: []
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
      summary: Lire les informations sur les ventes incitatives dans le projet
      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."
    post:
      tags:
        - upsell-admin
      operationId: post-upsell
      summary: Créer une vente incitative
      description: |-
        Crée un upsell pour un projet. <br>

        <div class="notice">
          <strong>Note</strong><br><br>
            Cet appel API utilise un JWT utilisateur pour l'autorisation.<br><br>
            Incluez le jeton dans l'en-tête <code>Authorization</code> au format suivant : <code>Bearer &lt;user_JWT&gt;</code>. Pour plus d'informations sur le JWT utilisateur, consultez le bloc <strong>Security</strong> pour cet appel.
        </div>
      security:
        - XsollaLoginUserJWT: []
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      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'
    put:
      tags:
        - upsell-admin
      operationId: put-upsell
      summary: Mettre à jour une vente incitative
      description: |-
        Met à jour un upsell pour un projet. <br>

        <div class="notice">
          <strong>Note</strong><br><br>
            Cet appel API utilise un JWT utilisateur pour l'autorisation.<br><br>
            Incluez le jeton dans l'en-tête <code>Authorization</code> au format suivant : <code>Bearer &lt;user_JWT&gt;</code>. Pour plus d'informations sur le JWT utilisateur, consultez le bloc <strong>Security</strong> pour cet appel.
        </div>
      security:
        - XsollaLoginUserJWT: []
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      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'
  /v2/project/{project_id}/admin/items/upsell/{toggle}:
    put:
      tags:
        - upsell-admin
      operationId: put-upsell-toggle-active-inactive
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Administrateur
          color: '#d7dee0'
      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: []
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - name: toggle
          in: path
          required: true
          description: Statut d'activation.
          schema:
            type: string
            example: activate
      summary: Activer/désactiver la vente incitative d'un projet
      description: >-
        Change le statut d'un upsell dans un projet pour le rendre actif ou
        inactif. <br>


        <div class="notice">
          <strong>Note</strong><br><br>
            Cet appel API utilise un JWT utilisateur pour l'autorisation.<br><br>
            Incluez le jeton dans l'en-tête <code>Authorization</code> au format suivant : <code>Bearer &lt;user_JWT&gt;</code>. Pour plus d'informations sur le JWT utilisateur, consultez le bloc <strong>Security</strong> pour cet appel.
        </div>
  /v2/project/{project_id}/items/upsell:
    get:
      tags:
        - upsell-client
      operationId: get-upsell-for-project-client
      x-badges:
        - name: Client-side
          color: '#80eaff'
      responses:
        '200':
          $ref: '#/components/responses/Upsell-200-get-client-list'
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-client-auth'
      security:
        - XsollaLoginUserJWT: []
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
      summary: Lire la liste des objets de vente incitative dans le projet
      description: "Récupère la liste des objets d'un upsell dans un projet, s'ils ont déjà été configurés. <br>\n\n<div class=\"note\">\n  <strong>Note</strong><br><br>\n    Cet appel API utilise un JWT utilisateur pour l'autorisation.<br><br>\n    Incluez le jeton dans l'en-tête <code>Authorization</code> au format suivant\_: <code>Bearer &lt;user_JWT&gt;</code>. Pour plus d'informations sur le JWT utilisateur, consultez le bloc <strong>Security</strong> pour cet appel.\n</div>"
components:
  securitySchemes:
    basicAuth:
      type: http
      description: "Les appels côté serveur utilisent le schéma d'authentification `basicAuth`. Toutes les requêtes à l'API doivent\ncontenir l'en-tête `Authorization: Basic <your_authorization_basic_key>`\noù `your_authorization_basic_key` est la paire `project_id:api_key`\nencodée en Base64.\n\nVous pouvez utiliser `merchant_id` au lieu de `project_id` si nécessaire. Cela n'affecte pas la fonctionnalité.\n\nAccédez au [Compte éditeur](https://publisher.xsolla.com/) pour trouver les valeurs des paramètres\_:\n\n* `merchant_id` s'affiche\_:\n  * Dans la section **Company settings > Company**\n  * Dans l'URL dans la barre d'adresse du navigateur sur n'importe quelle page du Compte éditeur. L'URL présente le format suivant\_: `https://publisher.xsolla.com/<merchant_id>`.\n* `api_key` s'affiche dans le Compte éditeur une seule fois lors de sa création et doit être stockée de votre côté. Vous pouvez créer une nouvelle clé dans les sections suivantes\_:\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**Remarque**\n\nSi un appel API requis n'inclut pas le paramètre de chemin `project_id`, utilisez une clé API valide pour tous les projets de l'entreprise pour l'autorisation.\n{% /html %}\n\n* `project_id` s'affiche\_:\n  * Dans le Compte éditeur à côté du nom du projet.\n  * Dans l'URL dans la barre d'adresse du navigateur lorsque vous utilisez le projet dans le Compte éditeur. L'URL a le format suivant\_: `https://publisher.xsolla.com/<merchant_id>/projects/<project_id>`.\n\nPour plus d'informations sur l'utilisation des clés API, voir la [référence API](https://developers.xsolla.com/fr/api/getting-started/#api_keys_overview)."
      scheme: basic
    XsollaLoginUserJWT:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: "Les appels côté client utilisent le schéma d’authentification `XsollaLoginUserJWT`. La requête doit inclure le JWT utilisateur dans l’en-tête `Authorization` au format suivant\_: Bearer `<user_JWT>`. Ce jeton identifie l’utilisateur et donne accès à des données personnalisées. Pour découvrir comment créer un jeton, consultez la [documentation Xsolla Login API](/fr/api/login/authentication-schemes#getting-user-token).\n\nVous pouvez également utiliser un [jeton pour ouvrir l’interface de paiement](/fr/api/pay-station/token/create-token)."
    AuthForCart:
      type: http
      scheme: bearer
      description: "Le schéma d’authentification `AuthForCart` est utilisé pour les achats via le panier et prend en charge deux modes\_:\n\n1. Authentification par JWT utilisateur. Le jeton est passé dans l'en-tête Authorization au format suivant\_: `Authorization: Bearer <user_JWT>`, où `<user_JWT>` est le jeton utilisateur. Le jeton identifie l'utilisateur et donne accès à des données personnalisées.\n\nVous pouvez également utiliser un [jeton pour ouvrir l’interface de paiement](/fr/api/pay-station/token/create-token).\n\n2. Mode simplifié sans en-tête `Authorization`. Ce mode est uniquement destiné aux utilisateurs non authentifiés et peut être utilisé uniquement pour la [vente de clés de jeu](/fr/doc/buy-button/how-to/set-up-authentication/#guides_buy_button_selling_items_not_authenticated_users). Au lieu d’un jeton, la requête doit inclure les en-têtes suivants\_:\n* `x-unauthorized-id` avec un ID de requête\n* `x-user` avec l’adresse e-mail de l’utilisateur encodée en Base64."
    basicMerchantAuth:
      type: http
      description: "Les appels côté serveur utilisent le schéma d'authentification `basicMerchantAuth`. Toutes les requêtes à l'API doivent\ncontenir l'en-tête `Authorization: Basic <your_authorization_basic_key>`\noù `your_authorization_basic_key` est la paire `merchant_id:api_key`\nencodée en Base64.\n\nAccédez au [Compte éditeur](https://publisher.xsolla.com/) pour trouver les valeurs des paramètres\_:\n\n* `merchant_id` s'affiche\_:\n  * Dans la section **Company settings > Company**\n  * Dans l'URL dans la barre d'adresse du navigateur sur n'importe quelle page du Compte éditeur. L'URL présente le format suivant : `https://publisher.xsolla.com/<merchant_id>`\n* `api_key` est affiché dans le Compte éditeur une seule fois lors de sa création et doit être stocké de votre côté. Vous pouvez créer une nouvelle clé dans la section [Company settings > API keys](https://publisher.xsolla.com/0/settings/api_key).\n\nPour plus d'informations sur l'utilisation des clés API, voir la [référence API](https://developers.xsolla.com/fr/api/getting-started/#api_keys_overview)."
      scheme: basic
  parameters:
    project_id-path-param:
      name: project_id
      in: path
      required: true
      description: "ID du projet. Vous trouverez ce paramètre dans le [Compte éditeur](https://publisher.xsolla.com/0/projects/0/), à côté du nom du projet, ainsi que dans l'URL affichée dans la barre d'adresse du navigateur lorsque vous utilisez ce projet. L'URL présente le format suivant\_: `https://publisher.xsolla.com/<merchant_id>/projects/<project_id>`."
      schema:
        type: integer
        example: 44056
    limit-query-param:
      name: limit
      in: query
      example: 50
      required: false
      description: Nombre maximal d'éléments sur une page.
      schema:
        type: integer
        example: 50
        minimum: 1
    offset-query-param:
      name: offset
      in: query
      required: false
      example: 0
      description: >-
        Numéro de l'élément à partir duquel la liste est générée (le décompte
        commence à 0).
      schema:
        type: integer
        example: 0
        minimum: 0
    enabled-query-param:
      name: enabled
      in: query
      required: false
      description: Filtrer les éléments en fonction de l'indicateur `is_enabled`.
      schema:
        type: integer
    promotion_id-path-param:
      name: promotion_id
      in: path
      required: true
      description: >-
        ID de la promotion. Identifiant unique de la promotion au sein du
        projet.
      schema:
        type: integer
        example: 111425
    code-path-param:
      name: code
      in: path
      required: true
      description: Code unique sensible à la casse. Comprend des lettres et des chiffres.
      schema:
        type: string
        example: WINTER2021
        minLength: 1
        maxLength: 128
    coupon_code-path-param:
      name: coupon_code
      in: path
      required: true
      description: Code unique sensible à la casse. Comprend des lettres et des chiffres.
      schema:
        type: string
        example: WINTER2021
        minLength: 1
        maxLength: 128
    external_id-promotion-path-param:
      name: external_id
      in: path
      required: true
      description: >-
        External ID de la promotion. Identifiant unique de la promotion au sein
        du projet.
      schema:
        type: integer
        example: coupon_44056_1
    promocode_code-path-param:
      name: promocode_code
      in: path
      required: true
      description: Code unique sensible à la casse. Comprend des lettres et des chiffres.
      schema:
        type: string
        example: SO6rew99j9
        minLength: 1
        maxLength: 128
    user_external_id-query-param:
      name: user_external_id
      in: query
      required: true
      description: External ID de l'utilisateur
      schema:
        type: string
        example: d342dad2-9d59-11e9-a384-42010aa8003f
    codes-query-param:
      name: codes[]
      in: query
      description: >-
        Codes uniques sensibles à la casse. Ne comprennent que des lettres et
        des chiffres.
      schema:
        type: array
        items:
          type: string
          minLength: 1
          maxLength: 128
    is_enabled-query-param:
      name: is_enabled
      in: query
      required: false
      description: Filtrer les éléments en fonction de l'indicateur `is_enabled`.
      schema:
        type: integer
    personalized-catalog-rule_id-path-param:
      name: rule_id
      in: path
      required: true
      description: ID de règle.
      schema:
        type: number
        example: 1
    item_sku-path-param:
      name: item_sku
      in: path
      required: true
      description: UGS de l'objet.
      schema:
        type: string
        example: booster_mega_1
    value_point_sku-path-param:
      name: value_point_sku
      in: path
      required: true
      description: UGS du point de valeur.
      schema:
        type: string
        example: value_point_3
    reward_chain_id-path-param:
      name: reward_chain_id
      in: path
      required: true
      description: ID de la chaîne de récompenses.
      schema:
        type: integer
        example: 101
    reward_chain_step_id-path-param:
      name: step_id
      in: path
      required: true
      description: ID de l'étape de la chaîne de récompenses.
      schema:
        type: integer
        example: 120
    is_expired-daily-chain-query-param:
      name: is_expired
      in: query
      required: false
      description: >-
        Filtrez les récompenses quotidiennes pour n'afficher que celles qui sont
        expirées.
      schema:
        type: integer
    type-daily-chain-query-param:
      name: type
      in: query
      required: false
      description: >-
        Filtre les récompenses quotidiennes pour ne renvoyer que le type
        spécifié.
      schema:
        type: string
        enum:
          - calendar_hard
          - rolling_skippable
          - rolling_unskippable
    daily_chain_id-path-param:
      name: daily_chain_id
      in: path
      required: true
      description: ID de récompense quotidienne.
      schema:
        type: integer
        example: 101
    daily_chain_step_number-path-param:
      name: step_number
      in: path
      required: true
      description: Numéro d'étape de récompense quotidienne.
      schema:
        type: integer
        example: 1
    offer_chain_id-path-param:
      name: offer_chain_id
      in: path
      required: true
      description: ID de la chaîne d'offres.
      schema:
        type: integer
        example: 101
    offer_chain_step_number-path-param:
      name: step_number
      in: path
      required: true
      description: Numéro de l'étape de la chaîne d'offres.
      schema:
        type: integer
        example: 1
  schemas:
    Promotions_promotion_id:
      type: integer
      description: >-
        ID de la promotion. Identifiant unique de la promotion au sein du
        projet.
      example: 1
    promotion_periods:
      type: array
      nullable: false
      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:
        type: object
        properties:
          date_from:
            type: string
            format: date-time
            nullable: false
            example: '2020-08-11T10:00:00+03:00'
            description: Date de début de la promotion spécifiée.
          date_until:
            type:
              - string
              - 'null'
            format: date-time
            example: '2020-08-11T20:00:00+03:00'
            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.
        required:
          - date_from
    Promotions_coupon_name:
      type: object
      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.
      additionalProperties:
        type: string
      example:
        en-US: Coupon title
        de-DE: Gutscheintitel
      default:
        en-US: Coupon title
        de-DE: Gutscheintitel
    unit_items:
      type: array
      description: >-
        Tableau de clés de jeu spécifiques à une plateforme. Utilisé uniquement
        lorsque le type d'objet est `unit` (`bonus.item.type = 'unit'`). Si le
        package de clés de jeu comprend des clés spécifiques à certaines
        plateformes, l'utilisateur peut en choisir une comme bonus.
      items:
        type: object
        properties:
          sku:
            type: string
            example: cool_game_steam
            pattern: ^[a-zA-Z0-9_\-.]*$
            description: "Identifiant unique du package de clés de jeu spécifiques à une plateforme. Caractères autorisés\_: a-z, A-Z, 0-9, point (`.`), tiret (`-`) et tiret bas (`_`). Il combine les valeurs `bonus.item.​sku` et `bonus.item.unit_items.drm_sku`. Par exemple, si ``bonus.item.​sku = 'cool_game'` et `bonus.item.unit_items.drm_sku = 'steam'`, la valeur sera `cool_game_steam`."
          is_free:
            type: boolean
          type:
            type: string
            enum:
              - game_key
            description: Indique que l'objet est une clé de jeu.
          name:
            type: string
            example: Awesome Game
            description: Titre du jeu.
          drm_name:
            type: string
            example: Steam
            description: Nom du DRM.
          drm_sku:
            type: string
            pattern: ^[a-zA-Z0-9_\-.]*$
            example: steam
            description: "Identifiant DRM unique utilisé comme suffixe pour indiquer une clé de jeu spécifique à une plateforme. Caractères autorisés\_: a-z, A-Z, 0-9, point (`.`), tiret (`-`) et tiret bas (`_`)."
    Promotions_200-coupon-bonus-reward:
      type: object
      properties:
        item:
          type: object
          properties:
            sku:
              type: string
              example: game_01
              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.
            name:
              type: object
              example:
                en: Game name
              description: Nom de l'objet.
            type:
              type: string
              example: unit
              description: "Type d'objet. Valeurs possibles\_:<ul><li><code>virtual_good</code> — objets virtuels</li><li><code>virtual_currency</code> — monnaie virtuelle</li><li><code>bundle</code> — lot</li><li><code>unit</code> — package de clés de jeu</li></ul>"
            bundle_type:
              type: string
              description: Type de lot. Renvoyé si le type d'objet est un lot.
              enum:
                - standard
                - virtual_currency_package
            description:
              type:
                - string
                - 'null'
              example: Game description
              description: Item description.
            image_url:
              type:
                - string
                - 'null'
              example: >-
                https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png
              description: URL de l'image.
            content:
              type: array
            unit_items:
              $ref: '#/components/schemas/unit_items'
        quantity:
          type: number
          description: Quantité de l'objet.
          default: 1
    Promotions_sku:
      type: string
      example: booster_mega_1
      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.
    Promotions_name:
      type: object
      description: >-
        Nom de l'objet. 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.
      additionalProperties:
        type: string
      example:
        en-US: Item title
        de-DE: Artikeltitel
      default:
        en-US: Item title
        de-DE: Artikeltitel
    Promotions_type:
      type: string
      description: "Type d'objet\_: `virtual_good`/`virtual_currency`/`bundle`/`physical_good`/`unit`."
    Promotions_redeem_code_limit:
      type:
        - integer
        - 'null'
      description: Nombre d'échanges par code.
      example: 10
      default: 10
    Promotions_promotion_condition:
      type:
        - array
        - 'null'
      items:
        description: Liste des objets pour lesquels l'utilisateur a reçu un bonus.
        type: object
        properties:
          item:
            type: object
            properties:
              sku:
                $ref: '#/components/schemas/Promotions_sku'
              name:
                $ref: '#/components/schemas/Promotions_name'
              type:
                $ref: '#/components/schemas/Promotions_type'
              description:
                type:
                  - string
                  - 'null'
                example: Game description
                description: Item description.
              image_url:
                type:
                  - string
                  - 'null'
                example: >-
                  https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png
                description: URL de l'image.
              external_id:
                type: string
                description: >-
                  External ID de la promotion. Identifiant unique de la
                  promotion au sein du projet.
                minLength: 1
                maxLength: 255
                pattern: ^[-_.\d\w]+$
              is_enabled:
                type: boolean
              redeem_total_limit:
                type:
                  - integer
                  - 'null'
              redeem_user_limit:
                type:
                  - integer
                  - 'null'
              redeem_code_limit:
                $ref: '#/components/schemas/Promotions_redeem_code_limit'
    Promotions_coupon-is_enabled:
      type: boolean
      default: true
    Promotions_promotion_type:
      type: string
      description: Type de promotion.
      example: item_discount
    Promotions_promotion_discount_percent:
      type:
        - string
        - 'null'
      description: >-
        Pourcentage de la remise.

        Le prix du panier sera réduit d'une valeur calculée à l'aide de ce
        pourcentage et arrondie à 2 décimales.
      default: '10.00'
      example: '10.00'
    promotion_recurrent_schedule_response:
      type:
        - object
        - 'null'
      description: Délai d'actualisation des limites.
      properties:
        per_user:
          type:
            - object
            - 'null'
          description: Délai d'actualisation des limites pour un utilisateur.
          oneOf:
            - type: object
              title: interval_type = daily
              description: Type quotidien d'actualisation des limites pour l'utilisateur.
              properties:
                interval_type:
                  type: string
                  description: Type de délai d'actualisation récurrent.
                  enum:
                    - daily
                time:
                  type: string
                  description: >-
                    Heure d'actualisation des limites dans le fuseau horaire
                    souhaité (arrondie en heures).
                  format: full-time
                  example: 11:00:00+03:00
                reset_next_date:
                  type: integer
                  description: >-
                    Date et heure de réinitialisation des limites (horodatage
                    Unix).  
                  example: 1677553200
                displayable_reset_start_date:
                  description: >-
                    Date et heure de la première réinitialisation des limites
                    (ISO 8601).
                  type: string
                  format: date-time
                  example: '2023-02-28T11:00:00+08:00'
                displayable_reset_next_date:
                  description: Date et heure de réinitialisation des limites (ISO 8601).
                  type: string
                  format: date-time
                  example: '2023-02-28T11:00:00+08:00'
            - type: object
              title: interval_type = weekly
              description: >-
                Type hebdomadaire d'actualisation des limites pour
                l'utilisateur.
              properties:
                interval_type:
                  type: string
                  description: Type de délai d'actualisation récurrent.
                  enum:
                    - weekly
                day_of_week:
                  type:
                    - integer
                    - 'null'
                  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`.
                  minimum: 1
                  maximum: 7
                time:
                  type: string
                  description: >-
                    Heure d'actualisation des limites dans le fuseau horaire
                    souhaité (arrondie en heures).
                  format: full-time
                  example: 11:00:00+03:00
                reset_next_date:
                  type: integer
                  description: >-
                    Date et heure de réinitialisation des limites (horodatage
                    Unix).  
                  example: 1677553200
                displayable_reset_start_date:
                  description: >-
                    Date et heure de la première réinitialisation des limites
                    (ISO 8601).
                  type: string
                  format: date-time
                  example: '2023-02-28T11:00:00+08:00'
                displayable_reset_next_date:
                  description: Date et heure de réinitialisation des limites (ISO 8601).
                  type: string
                  format: date-time
                  example: '2023-02-28T11:00:00+08:00'
            - type: object
              title: interval_type = monthly
              description: Type mensuel d'actualisation des limites pour l'utilisateur.
              properties:
                interval_type:
                  type: string
                  description: Type de délai d'actualisation récurrent.
                  enum:
                    - monthly
                day_of_month:
                  type:
                    - integer
                    - 'null'
                  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`.
                  minimum: 1
                  maximum: 31
                time:
                  type: string
                  description: >-
                    Heure d'actualisation des limites dans le fuseau horaire
                    souhaité (arrondie en heures).
                  format: full-time
                  example: 11:00:00+03:00
                reset_next_date:
                  type: integer
                  description: >-
                    Date et heure de réinitialisation des limites (horodatage
                    Unix).  
                  example: 1677553200
                displayable_reset_start_date:
                  description: >-
                    Date et heure de la première réinitialisation des limites
                    (ISO 8601).
                  type: string
                  format: date-time
                  example: '2023-02-28T11:00:00+08:00'
                displayable_reset_next_date:
                  description: Date et heure de réinitialisation des limites (ISO 8601).
                  type: string
                  format: date-time
                  example: '2023-02-28T11:00:00+08:00'
    Promotions_promotion_limits_response:
      type: object
      description: Limites de la promotion.
      properties:
        per_user:
          type:
            - object
            - 'null'
          description: Limites de la promotion pour un utilisateur spécifique.
          properties:
            total:
              type: integer
              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
        per_item:
          type:
            - integer
            - 'null'
          description: Limites globales d'objets.
          example: 10
        recurrent_schedule:
          $ref: '#/components/schemas/promotion_recurrent_schedule_response'
    Promotions_200-get-promotion-model:
      type: object
      properties:
        id:
          $ref: '#/components/schemas/Promotions_promotion_id'
        promotion_periods:
          $ref: '#/components/schemas/promotion_periods'
        name:
          $ref: '#/components/schemas/Promotions_coupon_name'
        bonus:
          type: array
          items:
            $ref: '#/components/schemas/Promotions_200-coupon-bonus-reward'
        condition:
          $ref: '#/components/schemas/Promotions_promotion_condition'
        is_enabled:
          $ref: '#/components/schemas/Promotions_coupon-is_enabled'
        type:
          $ref: '#/components/schemas/Promotions_promotion_type'
        discount:
          type:
            - object
            - 'null'
          properties:
            percent:
              $ref: '#/components/schemas/Promotions_promotion_discount_percent'
          example:
            discount:
              percent: '10.99'
        limits:
          $ref: '#/components/schemas/Promotions_promotion_limits_response'
    total_promotions_count:
      type: integer
      description: Nombre total de promotions.
    active_promotions_count:
      type: integer
      description: Nombre de promotions actives.
    inactive_promotions_count:
      type: integer
      description: Nombre de promotions désactivées.
    Promotions_coupon-external_id:
      type: string
      example: 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.
    Promotions_coupon_bonus:
      type:
        - array
        - 'null'
      items:
        description: >-
          Liste des objets qui seront ajoutés à l'achat de l'utilisateur en tant
          que bonus.
        type: object
        properties:
          sku:
            type: string
            description: UGS de l'objet.
            default: elven_shield
          quantity:
            type: number
            description: Quantité de l'objet.
            default: 1
    Promotions_coupon-redeem_total_limit:
      type:
        - integer
        - 'null'
      description: Limite le nombre total de coupons.
      example: 10
      default: 10
    Promotions_coupon-redeem_user_limit:
      type:
        - integer
        - 'null'
      description: >-
        Limite le nombre total de coupons pouvant être échangés par un seul
        utilisateur.
      example: 10
      default: 10
    Promotions_coupon_total_limit_state:
      type:
        - object
        - 'null'
      description: Limites pour chaque code de coupon unique.
      properties:
        available:
          type: integer
          description: Nombre restant de fois qu'un coupon peut être utilisé.
          example: 3
        reserved:
          type: integer
          description: Numéro réservé d'un coupon.
          example: 3
        used:
          type: integer
          description: Nombre de fois qu'un coupon est utilisé.
          example: 5
    Promotions_cart_item_discount:
      type: string
      nullable: false
      description: |-
        Pourcentage de la remise.

        Le prix du panier sera réduit d'une valeur
        calculée à l'aide de ce pourcentage et arrondie
        à 2 décimales.
      default: '10.00'
      example: '10.00'
    admin-promotions_200-get-redeemable-coupon-promotion-model:
      type: object
      properties:
        external_id:
          $ref: '#/components/schemas/Promotions_coupon-external_id'
        promotion_periods:
          $ref: '#/components/schemas/promotion_periods'
        name:
          $ref: '#/components/schemas/Promotions_coupon_name'
        bonus:
          $ref: '#/components/schemas/Promotions_coupon_bonus'
        is_enabled:
          $ref: '#/components/schemas/Promotions_coupon-is_enabled'
        redeem_total_limit:
          $ref: '#/components/schemas/Promotions_coupon-redeem_total_limit'
        redeem_user_limit:
          $ref: '#/components/schemas/Promotions_coupon-redeem_user_limit'
        redeem_code_limit:
          $ref: '#/components/schemas/Promotions_redeem_code_limit'
        total_limit_state:
          $ref: '#/components/schemas/Promotions_coupon_total_limit_state'
        discount:
          type:
            - object
            - 'null'
          description: Uniquement pour les codes promo.
          properties:
            percent:
              type:
                - string
                - 'null'
              description: >-
                Pourcentage de la remise.

                Le prix du panier sera réduit d'une valeur calculée à l'aide de
                ce pourcentage et arrondie à 2 décimales.
              default: '10.00'
              example: '10.00'
          example:
            discount:
              percent: '10.99'
        discounted_items:
          type:
            - array
            - 'null'
          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.
            type: object
            properties:
              sku:
                type: string
                description: UGS de l'objet.
                default: elven_shield
              discount:
                type: object
                nullable: false
                properties:
                  percent:
                    $ref: '#/components/schemas/Promotions_cart_item_discount'
                required:
                  - percent
            required:
              - sku
              - discount
            minItems: 1
    Promotions_selected_unit_items:
      type: object
      description: "Clé de jeu spécifique à une plateforme sélectionnée comme bonus par l'utilisateur. Passez le `bonus.item.sku` [reçu](/fr/api/liveops/promotions-coupons/get-coupon-rewards-by-code#promotions-coupons/get-coupon-rewards-by-code/t=response&c=200&path=bonus/item) comme clé, et le\_`bonus.item.unit_items.sku`\_choisi comme valeur associée."
      additionalProperties:
        type: string
      example:
        game_1: game_1_steam
        game_2: game_2_playstation
    Promotions_200-coupon-discount-reward:
      type:
        - object
        - 'null'
      description: >-
        Pourcentage de la remise.

        Le prix du panier sera réduit d'une valeur calculée à l'aide de ce
        pourcentage et arrondie à 2 décimales.
      properties:
        percent:
          type: string
          example: '10.00'
    Promotions_422_limit_error:
      description: La limite des échanges est atteinte.
      type: object
      properties:
        statusCode:
          type: integer
          example: 422
        errorCode:
          type: integer
          example: 9804
        errorMessage:
          type: string
          example: '[0401-9804]: You have reached the coupon redemption limit.'
        transactionId:
          type: string
          example: x-x-x-x-transactionId-mock-x-x-x
      example:
        statusCode: 422
        errorCode: 9804
        errorMessage: '[0401-9804]: You have reached the coupon redemption limit.'
    Promotions_422_reglock_error:
      description: Le coupon n'est pas disponible dans la région de l'utilisateur.
      type: object
      properties:
        statusCode:
          type: integer
          example: 422
        errorCode:
          type: integer
          example: 9808
        errorMessage:
          type: string
          example: '[0401-9808]: Coupon is not available in your region.'
        transactionId:
          type: string
          example: x-x-x-x-transactionId-mock-x-x-x
      example:
        statusCode: 422
        errorCode: 9804
        errorMessage: '[0401-9804]: You have reached the coupon redemption limit.'
    user-attribute_conditions_properties_attribute:
      type: string
      description: Code d'attribut utilisateur.
      minLength: 1
      maxLength: 255
      pattern: ^[-_.\d\w]+$
    user-attribute_conditions_properties_type-string:
      type: string
      enum:
        - string
      description: Type d'attribut utilisateur.
    user-attribute_conditions_properties_operator_string:
      type: string
      enum:
        - eq
        - ne
      description: "Type d'opération effectuée par la condition. Pour le type d'attribut <code>string</code>.\n\nValeurs possibles\_:\n- `eq` — Égal à\n- `ne` — Différent de"
    user-attribute_conditions_properties_value:
      type: string
      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
    user-attribute_conditions_properties_can_be_missing:
      type: boolean
      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.
    user-attribute_condition_string_model-get:
      type: object
      title: type = string
      properties:
        attribute:
          $ref: '#/components/schemas/user-attribute_conditions_properties_attribute'
        type:
          $ref: >-
            #/components/schemas/user-attribute_conditions_properties_type-string
        operator:
          $ref: >-
            #/components/schemas/user-attribute_conditions_properties_operator_string
        value:
          $ref: '#/components/schemas/user-attribute_conditions_properties_value'
        can_be_missing:
          $ref: >-
            #/components/schemas/user-attribute_conditions_properties_can_be_missing
    user-attribute_conditions_properties_type-number:
      type: string
      enum:
        - number
      description: Type d'attribut utilisateur.
    user-attribute_conditions_properties_operator_number:
      type: string
      enum:
        - eq
        - ne
        - gt
        - ge
        - lt
        - le
      description: "Type d'opération effectuée par la condition. Pour le type d'attribut <code>number</code>.\n\nValeurs possibles\_:\n- `eq` — Égal à\n- `ne` — Différent de\n- `gt` — Supérieur à\n- `ge` — Supérieur ou égal à\n- `lt` — Inférieur à\n- `le` — Inférieur ou égal à"
    user-attribute_condition_number_model-get:
      type: object
      title: type = number
      properties:
        attribute:
          $ref: '#/components/schemas/user-attribute_conditions_properties_attribute'
        type:
          $ref: >-
            #/components/schemas/user-attribute_conditions_properties_type-number
        operator:
          $ref: >-
            #/components/schemas/user-attribute_conditions_properties_operator_number
        value:
          $ref: '#/components/schemas/user-attribute_conditions_properties_value'
        can_be_missing:
          $ref: >-
            #/components/schemas/user-attribute_conditions_properties_can_be_missing
    user-attribute_conditions_properties_type-date:
      type: string
      enum:
        - date
      description: Type d'attribut utilisateur.
    user-attribute_conditions_properties_operator_date:
      type: string
      enum:
        - eq
        - ne
        - lt
        - gt
        - le
        - ge
      description: "Type d'opération effectuée par la condition. Pour le type d'attribut <code>date</code>.\n\nValeurs possibles\_:\n- `eq` — Égal à\n- `ne` — Différent de\n- `lt` — Antérieur à\n- `gt` — Postérieur à\n- `le` — Antérieur ou égal à\n- `ge` — Postérieur ou égal à"
    user-attribute_condition_date_model-get:
      type: object
      title: type = date
      properties:
        attribute:
          $ref: '#/components/schemas/user-attribute_conditions_properties_attribute'
        type:
          $ref: '#/components/schemas/user-attribute_conditions_properties_type-date'
        operator:
          $ref: >-
            #/components/schemas/user-attribute_conditions_properties_operator_date
        value:
          $ref: '#/components/schemas/user-attribute_conditions_properties_value'
        can_be_missing:
          $ref: >-
            #/components/schemas/user-attribute_conditions_properties_can_be_missing
    user-attribute_conditions_model-get:
      type: array
      minItems: 1
      maxItems: 100
      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'
    promotion_user-attribute_conditions_model-get:
      allOf:
        - $ref: '#/components/schemas/user-attribute_conditions_model-get'
        - description: >-
            Conditions de validation des attributs utilisateur.

            Détermine la disponibilité de la promotion selon que les attributs
            utilisateur correspondent à toutes les conditions spécifiées.
    admin-promotions_200-get-coupon-promotion-model:
      type: object
      properties:
        external_id:
          $ref: '#/components/schemas/Promotions_coupon-external_id'
        promotion_periods:
          $ref: '#/components/schemas/promotion_periods'
        name:
          $ref: '#/components/schemas/Promotions_coupon_name'
        bonus:
          $ref: '#/components/schemas/Promotions_coupon_bonus'
        is_enabled:
          $ref: '#/components/schemas/Promotions_coupon-is_enabled'
        redeem_total_limit:
          $ref: '#/components/schemas/Promotions_coupon-redeem_total_limit'
        redeem_user_limit:
          $ref: '#/components/schemas/Promotions_coupon-redeem_user_limit'
        redeem_code_limit:
          $ref: '#/components/schemas/Promotions_redeem_code_limit'
        total_limit_state:
          $ref: '#/components/schemas/Promotions_coupon_total_limit_state'
        attribute_conditions:
          $ref: '#/components/schemas/promotion_user-attribute_conditions_model-get'
    user-attribute_condition_string_model-post:
      type: object
      title: type = string
      properties:
        attribute:
          $ref: '#/components/schemas/user-attribute_conditions_properties_attribute'
        type:
          $ref: >-
            #/components/schemas/user-attribute_conditions_properties_type-string
        operator:
          $ref: >-
            #/components/schemas/user-attribute_conditions_properties_operator_string
        value:
          $ref: '#/components/schemas/user-attribute_conditions_properties_value'
        can_be_missing:
          $ref: >-
            #/components/schemas/user-attribute_conditions_properties_can_be_missing
      required:
        - attribute
        - operator
        - value
        - type
    user-attribute_condition_number_model-post:
      type: object
      title: type = number
      properties:
        attribute:
          $ref: '#/components/schemas/user-attribute_conditions_properties_attribute'
        type:
          $ref: >-
            #/components/schemas/user-attribute_conditions_properties_type-number
        operator:
          $ref: >-
            #/components/schemas/user-attribute_conditions_properties_operator_number
        value:
          $ref: '#/components/schemas/user-attribute_conditions_properties_value'
        can_be_missing:
          $ref: >-
            #/components/schemas/user-attribute_conditions_properties_can_be_missing
      required:
        - attribute
        - operator
        - value
        - type
    user-attribute_condition_date_model-post:
      type: object
      title: type = date
      properties:
        attribute:
          $ref: '#/components/schemas/user-attribute_conditions_properties_attribute'
        type:
          $ref: '#/components/schemas/user-attribute_conditions_properties_type-date'
        operator:
          $ref: >-
            #/components/schemas/user-attribute_conditions_properties_operator_date
        value:
          $ref: '#/components/schemas/user-attribute_conditions_properties_value'
        can_be_missing:
          $ref: >-
            #/components/schemas/user-attribute_conditions_properties_can_be_missing
      required:
        - attribute
        - operator
        - value
        - type
    user-attribute_conditions_model-post:
      type: array
      minItems: 1
      maxItems: 100
      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'
    promotion_user-attribute_conditions_model-post:
      allOf:
        - $ref: '#/components/schemas/user-attribute_conditions_model-post'
        - description: >-
            Conditions de validation des attributs utilisateur.

            Détermine la disponibilité de la promotion selon que les attributs
            utilisateur correspondent à toutes les conditions spécifiées.
    Promotions_coupon_code:
      type: string
      description: Code unique sensible à la casse. Comprend des lettres et des chiffres.
      minLength: 1
      maxLength: 128
      example: WINTER2021
      default: WINTER2021
      pattern: ^[a-zA-Z0-9]+$
    Promotions_coupon-generate-count:
      type: integer
      minimum: 1
      maximum: 50000
      example: 10
    value-is_free:
      type: boolean
      example: false
      default: false
      description: Détermine la gratuité de l'objet.
    Catalog_item_promotions:
      type: array
      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:
        type: object
        properties:
          name:
            type: string
          date_start:
            type:
              - string
              - 'null'
            format: date-time
          date_end:
            type:
              - string
              - 'null'
            format: date-time
          discount:
            type:
              - object
              - 'null'
            properties:
              percent:
                type:
                  - string
                  - 'null'
              value:
                type:
                  - string
                  - 'null'
          bonus:
            type: array
            items:
              type: object
              properties:
                sku:
                  type: string
                quantity:
                  type: integer
                type:
                  type: string
                  description: Type d'objet bonus.
                  enum:
                    - virtual_good
                    - virtual_currency
                    - bundle
                    - physical_good
                    - game_key
                    - nft
                name:
                  type: string
                  description: >-
                    Nom de l'objet bonus. Non disponible pour le type d'objet
                    bonus `physical_good`.
                image_url:
                  type: string
                  description: >-
                    URL de l'image de l'objet bonus. Non disponible pour le type
                    d'objet bonus `physical_good`.
                bundle_type:
                  type: string
                  description: >-
                    Type de lot bonus. Disponible uniquement pour le type
                    d'objet `bundle`.
                  enum:
                    - standard
                    - virtual_currency_package
          limits:
            type: object
            properties:
              per_user:
                type: object
                properties:
                  available:
                    type: integer
                  total:
                    type: integer
    Can_be_bought:
      type: boolean
      example: true
      description: Si `true`, l'utilisateur peut acheter l'objet.
    item_id:
      type: integer
      example: 1
      description: Internal ID unique de l'objet.
    value-point-sku:
      type: string
      description: ID unique du point de valeur.
    value-point-amount:
      type: integer
      description: Montant des points de valeur.
    value-point-name:
      type: string
      description: Nom du point de valeur.
    Common_admin-image_url:
      type: string
      example: https://image.example.com
      description: URL de l'image.
    is_clan:
      type: boolean
      description: >-
        Détermine l'utilisation du point de valeur dans les chaînes de
        récompense de clan.
      example: true
    client-item-value-point-reward:
      type: array
      description: Liste des récompenses en points de valeur associées à cet objet.
      items:
        type: object
        properties:
          item_id:
            $ref: '#/components/schemas/item_id'
          sku:
            $ref: '#/components/schemas/value-point-sku'
          amount:
            $ref: '#/components/schemas/value-point-amount'
          name:
            $ref: '#/components/schemas/value-point-name'
          image_url:
            $ref: '#/components/schemas/Common_admin-image_url'
          is_clan:
            $ref: '#/components/schemas/is_clan'
    catalog_recurrent_schedule_client_response:
      type:
        - object
        - 'null'
      description: >-
        Délai d'actualisation récurrent des limites d'un objet pour un
        utilisateur.
      oneOf:
        - type: object
          title: interval_type = daily
          description: Type quotidien d'actualisation des limites pour l'utilisateur.
          properties:
            interval_type:
              type: string
              description: Type de délai d'actualisation récurrent.
              enum:
                - daily
            reset_next_date:
              type: integer
              description: >-
                Date et heure de la réinitialisation des limites (horodatage
                Unix).
              example: 1677553200
        - type: object
          title: interval_type = weekly
          description: Type hebdomadaire d'actualisation des limites pour l'utilisateur.
          properties:
            interval_type:
              type: string
              description: Type de délai d'actualisation récurrent.
              enum:
                - weekly
            reset_next_date:
              type: integer
              description: >-
                Date et heure de la réinitialisation des limites (horodatage
                Unix).
              example: 1677553200
        - type: object
          title: interval_type = monthly
          description: Type mensuel d'actualisation des limites pour l'utilisateur.
          properties:
            interval_type:
              type: string
              description: Type de délai d'actualisation récurrent.
              enum:
                - monthly
            reset_next_date:
              type: integer
              description: >-
                Date et heure de la réinitialisation des limites (horodatage
                Unix).
              example: 1677553200
        - type: object
          title: interval_type = horaire
          description: >-
            Réinitialisation des limites de l'utilisateur effectuée selon
            l'intervalle de temps spécifié, en heures.
          properties:
            interval_type:
              type: string
              description: Type de délai d'actualisation récurrent.
              enum:
                - hourly
            reset_next_date:
              type: integer
              description: >-
                Date et heure de la réinitialisation des limites (horodatage
                Unix).
              example: 1677553200
    limit_exceeded_visibility:
      type: string
      example: show
      enum:
        - show
        - hide
      description: "Détermine la visibilité de l'objet dans le catalogue une fois la limite d'achat atteinte, jusqu'à la prochaine réinitialisation de la limite.\n\nS'applique aux objets pour lesquels des réinitialisations de limite récurrentes sont configurées dans le tableau `recurrent_schedule`.\n\nSi aucune réinitialisation de limite n'est configurée, l'objet n'apparaît plus dans le catalogue une fois la limite d'achat atteinte, quelle que soit la valeur de `limit_exceeded_visibility`.\n\nValeurs possibles\_:\n- `show` — L'objet est renvoyé dans les appels API de récupération du catalogue après avoir atteint la limite d'achat. Dans les appels côté client, une fois la limite atteinte, l'objet est renvoyé avec l'indicateur `can_be_bought: false`. La prochaine date de réinitialisation est renvoyée dans `reset_next_date`.\n- `hide` — L'objet n'est pas renvoyé dans les appels API de récupération du catalogue après avoir atteint la limite d'achat, jusqu'à la réinitialisation de la limite."
      default: show
    Catalog_item_limits:
      description: Limites d'objets.
      properties:
        per_user:
          type:
            - object
            - 'null'
          description: Limites d'objets pour un utilisateur.
          properties:
            total:
              type: integer
              description: Nombre maximal d'objets qu'un utilisateur unique peut acheter.
              example: 5
            available:
              type: integer
              description: Nombre d'objets restants que l'utilisateur actuel peut acheter.
              example: 3
            recurrent_schedule:
              $ref: '#/components/schemas/catalog_recurrent_schedule_client_response'
            limit_exceeded_visibility:
              $ref: '#/components/schemas/limit_exceeded_visibility'
        per_item:
          type:
            - object
            - 'null'
          description: Informations sur les limites pour un objet.
          properties:
            total:
              type: integer
              description: >-
                Nombre maximal d'objets que tous les utilisateurs peuvent
                acheter.
              example: 5
            available:
              type: integer
              description: >-
                Nombre d'objets restants que tous les utilisateurs peuvent
                acheter.
              example: 3
      type:
        - object
        - 'null'
    item-periods:
      type:
        - array
        - 'null'
      description: Période de vente d'objets.
      items:
        type: object
        properties:
          date_from:
            type: string
            format: date-time
            example: '2020-08-11T10:00:00+03:00'
            description: Date de mise en vente de l'objet spécifié.
          date_until:
            type:
              - string
              - 'null'
            format: date-time
            example: '2020-08-11T20:00:00+03:00'
            description: >-
              Date de retrait de la vente de l'objet spécifié. Peut prendre la
              valeur `null`.
    Promotions_200-promo-code-bonus-reward:
      type: object
      properties:
        item:
          type: object
          properties:
            sku:
              type: string
              example: game_01
              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.
            name:
              type: string
              example: Game name
              description: Nom de l'objet.
            type:
              type: string
              example: unit
              description: "Type d'objet. Valeurs possibles\_:<ul><li><code>virtual_good</code> — objets virtuels</li><li><code>virtual_currency</code> — monnaie virtuelle</li><li><code>bundle</code> — lot</li><li><code>unit</code> — package de clés de jeu</li></ul>"
            description:
              type: string
              example: Game description
              description: Item description.
            image_url:
              type: string
              example: >-
                https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png
              description: URL de l'image.
            unit_items:
              $ref: '#/components/schemas/unit_items'
        quantity:
          type: number
          description: Quantité de l'objet.
          default: 1
    Promotions_discounted_items:
      type:
        - array
        - 'null'
      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.
        type: object
        properties:
          sku:
            type: string
            description: UGS de l'objet.
            default: elven_shield
          discount:
            type: object
            nullable: false
            properties:
              percent:
                $ref: '#/components/schemas/Promotions_cart_item_discount'
            required:
              - percent
        required:
          - sku
          - discount
        minItems: 1
    Promo_code_rewards:
      type: object
      properties:
        bonus:
          type: array
          items:
            $ref: '#/components/schemas/Promotions_200-promo-code-bonus-reward'
        discount:
          $ref: '#/components/schemas/Promotions_200-coupon-discount-reward'
        discounted_items:
          $ref: '#/components/schemas/Promotions_discounted_items'
        is_selectable:
          type: boolean
          description: >-
            Si `true`, l'utilisateur doit choisir le bonus avant d'échanger un
            code promo.
    admin-attribute-external_id:
      type: string
      minLength: 1
      maxLength: 255
      pattern: ^[a-zA-Z0-9-_]+$
      example: attribute_1
      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.
    value-external_id:
      type: string
      minLength: 1
      maxLength: 255
      pattern: ^[-_.\d\w]+$
      example: attribute_value
      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.
    client-attributes:
      type: array
      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
      default: []
      items:
        type: object
        properties:
          external_id:
            $ref: '#/components/schemas/admin-attribute-external_id'
          name:
            type: string
            description: Nom de l'attribut.
            example: Genre
          values:
            type: array
            items:
              type: object
              properties:
                external_id:
                  $ref: '#/components/schemas/value-external_id'
                value:
                  type: string
                  description: Valeur de l'attribut.
                  example: Strategy
    Promotions_promocode_total_limit_state:
      type:
        - object
        - 'null'
      description: Limites pour chaque code promo unique.
      properties:
        available:
          type: integer
          description: Nombre restant de fois qu'un code promo peut être utilisé.
          example: 3
        reserved:
          type: integer
          description: Numéro réservé d'un code promo.
          example: 3
        used:
          type: integer
          description: Nombre de fois qu'un code promo est utilisé.
          example: 5
    price_conditions_items:
      description: Chaque objet décrit une règle définissant le prix requis.
      type: object
      properties:
        operator:
          type: string
          description: "Opérateur de comparaison pour définir la fourchette de prix pour l'application de la promotion.\n\nValeurs possibles\_:\n- `ge` — Supérieur ou égal à\n- `gt` — Supérieur à\n- `le` — Inférieur ou égal à\n- `lt` — Inférieur à\n- `eq` — Égal à\n- `ne` — Différent de"
          enum:
            - ge
            - gt
            - le
            - lt
            - eq
            - ne
        value:
          type: string
          description: >-
            Valeur permettant de déterminer la fourchette de prix pour
            l'application de la promotion.
          pattern: ^\d+(\.\d{1,4})?$
      required:
        - operator
        - value
    price_conditions_promocode:
      type:
        - array
        - 'null'
      description: >-
        Tableau d'objets avec des conditions définissant la fourchette de prix
        pour l'application de la promotion à l'ensemble du panier.<br>

        Le 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>

        Si 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'
    item_price_conditions_promocode:
      type:
        - array
        - 'null'
      description: >-
        Tableau d'objets avec des conditions définissant la fourchette de prix
        pour l'application de la promotion à certains biens du panier.<br>

        Le 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>

        Si 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'
    excluded_promotions:
      type: array
      items:
        type: integer
      example:
        - 12
        - 789
      description: >-
        Liste des ID de promotion à exclure lors de l'application de cette
        promotion. <br>Example: `[12, 789]`
    Promotions_200-get-promocode-promotion-model:
      type: object
      properties:
        external_id:
          $ref: '#/components/schemas/Promotions_coupon-external_id'
        promotion_periods:
          $ref: '#/components/schemas/promotion_periods'
        name:
          $ref: '#/components/schemas/Promotions_coupon_name'
        bonus:
          $ref: '#/components/schemas/Promotions_coupon_bonus'
        is_enabled:
          $ref: '#/components/schemas/Promotions_coupon-is_enabled'
        redeem_total_limit:
          $ref: '#/components/schemas/Promotions_coupon-redeem_total_limit'
        redeem_user_limit:
          $ref: '#/components/schemas/Promotions_coupon-redeem_user_limit'
        redeem_code_limit:
          $ref: '#/components/schemas/Promotions_redeem_code_limit'
        discount:
          type:
            - object
            - 'null'
          properties:
            percent:
              $ref: '#/components/schemas/Promotions_promotion_discount_percent'
          example:
            discount:
              percent: '10.99'
        discounted_items:
          $ref: '#/components/schemas/Promotions_discounted_items'
        total_limit_state:
          $ref: '#/components/schemas/Promotions_promocode_total_limit_state'
        attribute_conditions:
          $ref: '#/components/schemas/promotion_user-attribute_conditions_model-get'
        price_conditions:
          $ref: '#/components/schemas/price_conditions_promocode'
        item_price_conditions:
          $ref: '#/components/schemas/item_price_conditions_promocode'
        excluded_promotions:
          $ref: '#/components/schemas/excluded_promotions'
    Promotions_is_enabled:
      type: boolean
      example: true
      description: Si la promotion est activée ou non.
    price_conditions_discount:
      type:
        - array
        - 'null'
      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'
    Promotions_promotion_limits:
      type: object
      description: Limites de la promotion.
      properties:
        per_user:
          type:
            - integer
            - 'null'
          description: Limites de la promotion pour un utilisateur spécifique.
        recurrent_schedule:
          $ref: '#/components/schemas/promotion_recurrent_schedule_response'
    price_conditions_bonus:
      type:
        - array
        - 'null'
      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'
    Promotions_200-get-bonus-promotion-model:
      type: object
      properties:
        id:
          type: integer
          description: >-
            ID de la promotion. Identifiant unique de la promotion au sein du
            projet.
        promotion_periods:
          $ref: '#/components/schemas/promotion_periods'
        name:
          type: object
          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.
          additionalProperties:
            type: string
          example:
            en-US: Summer season bonus
            de-DE: Sommersaison Bonus
        is_enabled:
          type: boolean
          default: true
        condition:
          type:
            - array
            - 'null'
          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:
            type: object
            properties:
              sku:
                type: string
                description: UGS de l'objet.
                default: elven_sword
        bonus:
          type:
            - array
            - 'null'
          items:
            description: >-
              Liste des objets qui seront ajoutés à l'achat de l'utilisateur en
              tant que bonus.
            type: object
            properties:
              sku:
                type: string
                description: UGS de l'objet.
                default: elven_shield
              quantity:
                type: number
                description: Quantité de l'objet.
                default: 1
        attribute_conditions:
          $ref: '#/components/schemas/promotion_user-attribute_conditions_model-get'
        limits:
          $ref: '#/components/schemas/Promotions_promotion_limits_response'
        excluded_promotions:
          $ref: '#/components/schemas/excluded_promotions'
        price_conditions:
          $ref: '#/components/schemas/price_conditions_bonus'
    Coupon_rewards:
      type: object
      properties:
        bonus:
          type: array
          items:
            $ref: '#/components/schemas/Promotions_200-coupon-bonus-reward'
        is_selectable:
          type: boolean
          description: >-
            Si `true`, l'utilisateur doit choisir le bonus avant d'échanger un
            coupon.
    Promotions_discounted_items_verify:
      type:
        - array
        - 'null'
      description: Liste des objets bénéficiant d'une remise grâce à un code promo.
      items:
        description: Remise pour des objets spécifiques.
        type: object
        properties:
          sku:
            type: string
            example: game_01
            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.
          name:
            type: string
            example: Game name
            description: Nom de l'objet.
          type:
            type: string
            example: unit
            description: "Type d'objet. Valeurs possibles\_:<ul><li><code>virtual_good</code> — objets virtuels</li><li><code>virtual_currency</code> — monnaie virtuelle</li><li><code>bundle</code> — lot</li><li><code>unit</code> — package de clés de jeu</li></ul>"
          description:
            type: string
            example: Game description
            description: Item description.
          image_url:
            type: string
            example: >-
              https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png
            description: URL de l'image.
          unit_items:
            $ref: '#/components/schemas/unit_items'
          discount:
            type: object
            nullable: false
            properties:
              percent:
                $ref: '#/components/schemas/Promotions_cart_item_discount'
    Promo_code_rewards_verify:
      type: object
      properties:
        bonus:
          type: array
          items:
            $ref: '#/components/schemas/Promotions_200-promo-code-bonus-reward'
        discount:
          $ref: '#/components/schemas/Promotions_200-coupon-discount-reward'
        discounted_items:
          $ref: '#/components/schemas/Promotions_discounted_items_verify'
        is_selectable:
          type: boolean
          description: >-
            Si `true`, l'utilisateur doit choisir le bonus avant d'échanger un
            code promo.
    sku:
      type: string
      minLength: 1
      maxLength: 255
      pattern: ^[a-zA-Z0-9_\-–.]*$
      example: booster_mega_1
      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.
    Promotions_unique_catalog_offer_items:
      type: array
      description: >-
        Liste d'UGS des objets qui sont disponibles après avoir utilisé une
        offre unique du catalogue.
      items:
        $ref: '#/components/schemas/sku'
    Promotions_200-get-unique-catalog-offer-promotion-model:
      type: object
      properties:
        external_id:
          $ref: '#/components/schemas/Promotions_coupon-external_id'
        promotion_periods:
          $ref: '#/components/schemas/promotion_periods'
        name:
          $ref: '#/components/schemas/Promotions_coupon_name'
        items:
          $ref: '#/components/schemas/Promotions_unique_catalog_offer_items'
        is_enabled:
          $ref: '#/components/schemas/Promotions_coupon-is_enabled'
        redeem_total_limit:
          $ref: '#/components/schemas/Promotions_coupon-redeem_total_limit'
        redeem_user_limit:
          $ref: '#/components/schemas/Promotions_coupon-redeem_user_limit'
        redeem_code_limit:
          $ref: '#/components/schemas/Promotions_redeem_code_limit'
        total_limit_state:
          $ref: '#/components/schemas/Promotions_coupon_total_limit_state'
    Promotions_coupon_date_start:
      type:
        - string
        - 'null'
      format: date-time
      default: '2020-04-15T18:16:00+05:00'
      description: Date de début de la promotion.
    Promotions_coupon_date_end:
      type:
        - string
        - 'null'
      format: date-time
      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.
    User-limit-promo-code:
      type: object
      properties:
        per_user:
          type: object
          properties:
            total:
              type: integer
              example: 10
              description: >-
                Nombre maximum de fois qu'un utilisateur peut utiliser un code
                promo.
            available:
              type: integer
              example: 9
              description: >-
                Nombre restant de fois qu'un utilisateur peut utiliser un code
                promo.
    User-limit-coupon:
      type: object
      properties:
        per_user:
          type: object
          properties:
            total:
              type: integer
              example: 10
              description: >-
                Nombre maximum de fois qu'un utilisateur peut utiliser un
                coupon.
            available:
              type: integer
              example: 9
              description: >-
                Nombre restant de fois qu'un utilisateur peut utiliser un
                coupon.
    Code-limit-promo-code:
      type: object
      properties:
        code:
          $ref: '#/components/schemas/Promotions_coupon_code'
        per_code:
          type: object
          properties:
            total:
              type: integer
              description: Nombre maximum de fois qu'un code promo peut être utilisé.
            available:
              type: integer
              description: Nombre restant de fois qu'un code promo peut être utilisé.
            used:
              type: integer
              description: Nombre de fois qu'un code promo est utilisé.
            reserved:
              type: integer
              description: Nombre de fois qu'un code promo est réservé.
    personalized-catalog_user-attribute_conditions_model-get:
      allOf:
        - $ref: '#/components/schemas/user-attribute_conditions_model-get'
        - description: >-
            Conditions de validation des attributs utilisateur.

            Déterminez la disponibilité des objets dans le catalogue selon la
            correspondance des attributs utilisateur avec l'ensemble des
            conditions définies.
    user-attribute_personalized-catalog:
      type: object
      properties:
        rule_id:
          type: number
          description: ID de règle.
        name:
          type: string
          description: >-
            Nom lisible d'une règle. Utilisé pour afficher une règle dans le
            Compte éditeur.
        is_enabled:
          type: boolean
          description: Si la règle est activée.
        is_satisfied_for_unauth:
          type: boolean
          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`.
        attribute_conditions:
          $ref: >-
            #/components/schemas/personalized-catalog_user-attribute_conditions_model-get
        items:
          type: array
          items:
            type: object
            description: >-
              Objets qui seront affichés à l'utilisateur si les valeurs de ses
              attributs répondent aux conditions.
            properties:
              item_id:
                type: number
                description: ID de l'objet
              sku:
                type: string
                description: UGS de l'objet.
              name:
                type: string
                description: Nom de l'objet.
              type:
                type: string
                description: Type d'objet.
                enum:
                  - virtual_good
                  - virtual_currency
                  - bundle
                  - physical_good
                  - unit
              bundle_type:
                type: string
                description: Type de lot. Renvoyé si le type d'objet est un lot.
                enum:
                  - standard
                  - virtual_currency_package
      required:
        - rule_id
        - name
        - is_enabled
        - attribute_conditions
        - items
    personalized-catalog_user-attribute_conditions_model-post:
      allOf:
        - $ref: '#/components/schemas/user-attribute_conditions_model-post'
        - description: >-
            Conditions de validation des attributs utilisateur.

            Déterminez la disponibilité des objets dans le catalogue selon la
            correspondance des attributs utilisateur avec l'ensemble des
            conditions définies.
    user-attribute_personalized-catalog-body-required:
      type: object
      properties:
        name:
          type: string
          description: >-
            Nom lisible d'une règle. Utilisé pour afficher une règle dans le
            Compte éditeur.
          minLength: 1
          maxLength: 255
          pattern: ^\S
        is_enabled:
          type: boolean
          description: Si la règle est activée.
        is_satisfied_for_unauth:
          type: boolean
          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`.
        attribute_conditions:
          $ref: >-
            #/components/schemas/personalized-catalog_user-attribute_conditions_model-post
        items:
          type: array
          minItems: 1
          maxItems: 100
          items:
            oneOf:
              - type: object
                description: >-
                  Objets qui sont affichés à l'utilisateur si les valeurs de ses
                  attributs répondent aux conditions.
                properties:
                  item_id:
                    type: number
                    description: ID de l'objet
                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:
                    type: string
                    description: UGS de l'objet.
                required:
                  - sku
      required:
        - name
        - is_enabled
        - attribute_conditions
        - items
    422-invalid-request:
      type: object
      properties:
        statusCode:
          type: number
          description: Code d'état de la réponse.
          example: 422
        errorCode:
          type: number
          description: Code d'erreur.
          example: 1102
        errorMessage:
          type: string
          description: Message d'erreur lisible.
          example: >-
            [0401-1102]: Unprocessable Entity. The property `external_id` is
            required
        transactionId:
          type: string
          description: ID unique de la demande.
          example: da145238620011eb8e24fe6913ff226a
    user-attribute_personalized-catalog_all:
      type: object
      properties:
        rule_id:
          type: number
          description: ID de règle.
        name:
          type: string
          description: >-
            Nom lisible d'une règle. Utilisé pour afficher une règle dans le
            Compte éditeur.
        is_enabled:
          type: boolean
          description: Si la règle est activée.
        is_satisfied_for_unauth:
          type: boolean
          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`.
      required:
        - rule_id
        - name
        - is_enabled
    user-attribute_personalized-catalog-body:
      type: object
      properties:
        name:
          type: string
          description: >-
            Nom lisible d'une règle. Utilisé pour afficher une règle dans le
            Compte éditeur.
          minLength: 1
          maxLength: 255
          pattern: ^\S
        is_enabled:
          type: boolean
          description: Si la règle est activée.
        is_satisfied_for_unauth:
          type: boolean
          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`.
        attribute_conditions:
          $ref: >-
            #/components/schemas/personalized-catalog_user-attribute_conditions_model-post
        items:
          type: array
          minItems: 1
          maxItems: 100
          items:
            oneOf:
              - type: object
                description: >-
                  Objets qui sont affichés à l'utilisateur si les valeurs de ses
                  attributs répondent aux conditions.
                properties:
                  item_id:
                    type: number
                    description: ID de l'objet
                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:
                    type: string
                    description: UGS de l'objet.
                required:
                  - sku
    User-limit_user-external-id:
      description: External ID de l'utilisateur
      type: string
      minLength: 1
      pattern: ^\S+$
    User-limit_user:
      type: object
      properties:
        user_external_id:
          $ref: '#/components/schemas/User-limit_user-external-id'
      required:
        - user_external_id
    User-limit_user_flexible:
      type:
        - object
        - 'null'
      properties:
        user_external_id:
          $ref: '#/components/schemas/User-limit_user-external-id'
    User-limit-promotion:
      type: object
      properties:
        per_user:
          type: object
          properties:
            total:
              type: integer
              example: 10
              description: >-
                Nombre maximum de fois qu'un utilisateur peut utiliser une
                promotion.
            available:
              type: integer
              example: 9
              description: >-
                Nombre restant de fois qu'un utilisateur peut utiliser une
                promotion.
    User-limit_available_flexible:
      type: integer
      minimum: 0
      description: >-
        Nombre restant d'objets ou d'utilisations de la promotion disponibles
        pour l'utilisateur dans la limite appliquée.
    User-limit_available:
      type: integer
      minimum: 1
      description: >-
        Nombre restant d'objets ou d'utilisations de la promotion disponibles
        pour l'utilisateur dans la limite appliquée.
    two-letter-locale:
      type:
        - object
        - 'null'
      description: Codes de langue à deux lettres minuscules.
      title: two-letter
      properties:
        en:
          type:
            - string
            - 'null'
          description: Anglais
        ar:
          type:
            - string
            - 'null'
          description: Arabe
        bg:
          type:
            - string
            - 'null'
          description: Bulgare
        cn:
          type:
            - string
            - 'null'
          description: Chinois (simplifié)
        cs:
          type:
            - string
            - 'null'
          description: Tchèque
        de:
          type:
            - string
            - 'null'
          description: Allemand
        es:
          type:
            - string
            - 'null'
          description: Espagnol (Espagne)
        fr:
          type:
            - string
            - 'null'
          description: Français
        he:
          type:
            - string
            - 'null'
          description: Hébreu
        it:
          type:
            - string
            - 'null'
          description: Italien
        ja:
          type:
            - string
            - 'null'
          description: Japonais
        ko:
          type:
            - string
            - 'null'
          description: Coréen
        pl:
          type:
            - string
            - 'null'
          description: Polonais
        pt:
          type:
            - string
            - 'null'
          description: Portugais
        ro:
          type:
            - string
            - 'null'
          description: Roumain
        ru:
          type:
            - string
            - 'null'
          description: Russe
        th:
          type:
            - string
            - 'null'
          description: Thaï
        tr:
          type:
            - string
            - 'null'
          description: Turc
        tw:
          type:
            - string
            - 'null'
          description: Chinois (traditionnel)
        vi:
          type:
            - string
            - 'null'
          description: Vietnamien
        km:
          type:
            - string
            - 'null'
          description: Khmer
        id:
          type:
            - string
            - 'null'
          description: Indonésien
        lo:
          type:
            - string
            - 'null'
          description: Laotien
        my:
          type:
            - string
            - 'null'
          description: Birman
        ph:
          type:
            - string
            - 'null'
          description: Philippin
        ne:
          type:
            - string
            - 'null'
          description: Népalais
    five-letter-locale:
      type:
        - object
        - 'null'
      description: Codes régionaux à cinq caractères.
      title: five-letter
      properties:
        en-US:
          type:
            - string
            - 'null'
          description: Anglais
        ar-AE:
          type:
            - string
            - 'null'
          description: Arabe
        bg-BG:
          type:
            - string
            - 'null'
          description: Bulgare
        zh-CN:
          type:
            - string
            - 'null'
          description: Chinois (simplifié)
        cs-CZ:
          type:
            - string
            - 'null'
          description: Tchèque
        de-DE:
          type:
            - string
            - 'null'
          description: Allemand
        es-ES:
          type:
            - string
            - 'null'
          description: Espagnol (Espagne)
        fr-FR:
          type:
            - string
            - 'null'
          description: Français
        he-IL:
          type:
            - string
            - 'null'
          description: Hébreu
        it-IT:
          type:
            - string
            - 'null'
          description: Italien
        ja-JP:
          type:
            - string
            - 'null'
          description: Japonais
        ko-KR:
          type:
            - string
            - 'null'
          description: Coréen
        pl-PL:
          type:
            - string
            - 'null'
          description: Polonais
        pt-BR:
          type:
            - string
            - 'null'
          description: Portugais (Brésil)
        ro-RO:
          type:
            - string
            - 'null'
          description: Roumain
        ru-RU:
          type:
            - string
            - 'null'
          description: Russe
        th-TH:
          type:
            - string
            - 'null'
          description: Thaï
        tr-TR:
          type:
            - string
            - 'null'
          description: Turc
        zh-TW:
          type:
            - string
            - 'null'
          description: Chinois (traditionnel)
        vi-VN:
          type:
            - string
            - 'null'
          description: Vietnamien
        km-KH:
          type:
            - string
            - 'null'
          description: Khmer
        id-ID:
          type:
            - string
            - 'null'
          description: Indonésien
        lo-LA:
          type:
            - string
            - 'null'
          description: Laotien
        my-MM:
          type:
            - string
            - 'null'
          description: Birman
        ph-PH:
          type:
            - string
            - 'null'
          description: Philippin
        ne-NP:
          type:
            - string
            - 'null'
          description: Népalais
    name-localization-object:
      type:
        - object
        - 'null'
      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."
      anyOf:
        - $ref: '#/components/schemas/two-letter-locale'
        - $ref: '#/components/schemas/five-letter-locale'
    description-localization-object:
      type:
        - object
        - 'null'
      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."
      anyOf:
        - $ref: '#/components/schemas/two-letter-locale'
        - $ref: '#/components/schemas/five-letter-locale'
    long-description-localization-object:
      type:
        - object
        - 'null'
      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."
      anyOf:
        - $ref: '#/components/schemas/two-letter-locale'
        - $ref: '#/components/schemas/five-letter-locale'
    Value-points-item-model:
      type: object
      properties:
        sku:
          type: string
          minLength: 1
          maxLength: 255
          pattern: ^[a-zA-Z0-9_\-–.]*$
          example: booster_mega_1
          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.
        name:
          $ref: '#/components/schemas/name-localization-object'
        description:
          $ref: '#/components/schemas/description-localization-object'
        long_description:
          $ref: '#/components/schemas/long-description-localization-object'
        media_list:
          type: array
          example:
            - type: image
              url: >-
                https://cdn3.xsolla.com/img/misc/images/71ab1e12126f2103e1868076f0acb21a.jpg
          description: >-
            Ressources supplémentaires de l'objet, telles que des captures
            d'écran, des vidéos de gameplay, etc.
          items:
            type: object
            properties:
              type:
                type: string
                enum:
                  - image
                  - video
                example: image
                description: "Type de média\_: `image`/`video`."
              url:
                type: string
                example: >-
                  https://cdn3.xsolla.com/img/misc/images/71ab1e12126f2103e1868076f0acb21a.jpg
                description: Fichier de ressources.
        type:
          type: string
          description: Type d'objet.
        image_url:
          type: string
        is_enabled:
          type: boolean
        order:
          type: integer
          example: 1
          description: Définit l'ordre d'empilement.
        is_clan:
          $ref: '#/components/schemas/is_clan'
    is_enabled:
      type: boolean
      example: true
    media_list:
      type: array
      example:
        - type: image
          url: >-
            https://cdn3.xsolla.com/img/misc/images/71ab1e12126f2103e1868076f0acb21a.jpg
      description: >-
        Ressources supplémentaires de l'objet, telles que des captures d'écran,
        des vidéos de gameplay, etc.
      items:
        type: object
        properties:
          type:
            type: string
            enum:
              - image
              - video
            example: image
            description: "Type de média\_: `image`/`video`."
          url:
            type: string
            example: >-
              https://cdn3.xsolla.com/img/misc/images/71ab1e12126f2103e1868076f0acb21a.jpg
            description: Fichier de ressources.
    order:
      type: integer
      example: 1
      description: Définit l'ordre d'empilement.
    admin_value_points-create:
      properties:
        description:
          $ref: '#/components/schemas/description-localization-object'
        image_url:
          $ref: '#/components/schemas/Common_admin-image_url'
        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'
        is_clan:
          $ref: '#/components/schemas/is_clan'
      type: object
      required:
        - sku
        - name
    422-rc-vp-invalid-request:
      type: object
      properties:
        statusCode:
          type: integer
          example: 422
        errorCode:
          type: integer
          example: 1102
        errorMessage:
          type: string
          example: >-
            [0401-1102]: Unprocessable Entity. The property `property_name` is
            required
        transactionId:
          type: string
          example: x-x-x-x-transactionId-mock-x-x-x
    Value-point-item-model:
      type: object
      properties:
        sku:
          type: string
          minLength: 1
          maxLength: 255
          pattern: ^[a-zA-Z0-9_\-–.]*$
          example: booster_mega_1
          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.
        name:
          $ref: '#/components/schemas/name-localization-object'
        description:
          $ref: '#/components/schemas/description-localization-object'
        long_description:
          $ref: '#/components/schemas/long-description-localization-object'
        media_list:
          type: array
          example:
            - type: image
              url: >-
                https://cdn3.xsolla.com/img/misc/images/71ab1e12126f2103e1868076f0acb21a.jpg
          description: >-
            Ressources supplémentaires de l'objet, telles que des captures
            d'écran, des vidéos de gameplay, etc.
          items:
            type: object
            properties:
              type:
                type: string
                enum:
                  - image
                  - video
                example: image
                description: "Type de média\_: `image`/`video`."
              url:
                type: string
                example: >-
                  https://cdn3.xsolla.com/img/misc/images/71ab1e12126f2103e1868076f0acb21a.jpg
                description: Fichier de ressources.
        type:
          type: string
          description: Type d'objet.
        image_url:
          type: string
        is_enabled:
          type: boolean
        order:
          type: integer
          example: 1
          description: Définit l'ordre d'empilement.
        can_delete:
          type: boolean
          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.


            Si 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/).
        is_clan:
          $ref: '#/components/schemas/is_clan'
    admin-item-value-point-reward:
      type: object
      properties:
        item_id:
          $ref: '#/components/schemas/item_id'
        sku:
          $ref: '#/components/schemas/sku'
        amount:
          type: integer
          description: Montant des points de valeur.
        name:
          $ref: '#/components/schemas/name-localization-object'
        image_url:
          $ref: '#/components/schemas/Common_admin-image_url'
    item-value-point-reward-set:
      type: array
      items:
        type: object
        properties:
          sku:
            $ref: '#/components/schemas/sku'
          amount:
            type: integer
            description: Montant des points de valeur.
        required:
          - sku
          - amount
    item-value-point-reward-set-for-patch:
      type: array
      items:
        type: object
        properties:
          sku:
            $ref: '#/components/schemas/sku'
          amount:
            type: integer
            description: Montant des points de valeur.
            minimum: 0
        required:
          - sku
          - amount
        maxItems: 100
    image_url:
      type:
        - string
        - 'null'
      example: https://image.example.com
      description: URL de l'image.
    date_start:
      type: string
      format: date-time
      example: '2020-04-15T18:16:00+05:00'
      description: Date de début de la chaîne de récompenses.
    date_end:
      type:
        - string
        - 'null'
      format: date-time
      example: '2020-04-15T18:16:00+05:00'
      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.
    clan_type:
      type:
        - string
        - 'null'
      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
    top_contributors:
      type:
        - object
        - 'null'
      properties:
        name:
          type: string
          example: Rocket
          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.
        contributed_amount:
          type: integer
          example: 100
          description: Montant des points de valeur gagnés par l'utilisateur.
    value-point-description:
      type:
        - string
        - 'null'
      description: Description du point de valeur.
    value-point-long-description:
      type:
        - string
        - 'null'
      description: Description détaillée du point de valeur.
    interval_type_weekly:
      type: string
      description: Fréquence de la réinitialisation récurrente de la chaîne de récompenses.
      enum:
        - weekly
    interval_type_monthly:
      type: string
      description: Fréquence de la réinitialisation récurrente de la chaîne de récompenses.
      enum:
        - monthly
    interval_type_hourly_rc:
      type: string
      description: Fréquence de la réinitialisation récurrente de la chaîne de récompenses.
      enum:
        - hourly
    reset_next_date:
      type: integer
      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`"
    recurrent_schedule_client_side:
      type:
        - object
        - 'null'
      description: Période de réinitialisation récurrente de la chaîne de récompenses.
      properties:
        interval_type:
          oneOf:
            - title: interval_type = weekly
              $ref: '#/components/schemas/interval_type_weekly'
            - title: interval_type = monthly
              $ref: '#/components/schemas/interval_type_monthly'
            - title: interval_type = horaire
              $ref: '#/components/schemas/interval_type_hourly_rc'
        reset_next_date:
          $ref: '#/components/schemas/reset_next_date'
    popup_header-two-letter-locale:
      type:
        - object
        - 'null'
      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:
        en:
          type:
            - string
            - 'null'
          example: How to unlock rewards
        ar:
          type:
            - string
            - 'null'
          example: null
        bg:
          type:
            - string
            - 'null'
          example: null
        cn:
          type:
            - string
            - 'null'
          example: null
        cs:
          type:
            - string
            - 'null'
          example: null
        de:
          type:
            - string
            - 'null'
          example: Wie man Belohnungen freischaltet
        es:
          type:
            - string
            - 'null'
          example: Cómo desbloquear recompensas
        fr:
          type:
            - string
            - 'null'
          example: Comment débloquer des récompenses
        he:
          type:
            - string
            - 'null'
          example: null
        it:
          type:
            - string
            - 'null'
          example: Come sbloccare ricompense
        ja:
          type:
            - string
            - 'null'
          example: 報酬をアンロックする方法
        ko:
          type:
            - string
            - 'null'
          example: null
        pl:
          type:
            - string
            - 'null'
          example: null
        pt:
          type:
            - string
            - 'null'
          example: null
        ro:
          type:
            - string
            - 'null'
          example: null
        ru:
          type:
            - string
            - 'null'
          example: null
        th:
          type:
            - string
            - 'null'
          example: null
        tr:
          type:
            - string
            - 'null'
          example: null
        tw:
          type:
            - string
            - 'null'
          example: null
        vi:
          type:
            - string
            - 'null'
          example: null
    popup_instruction-two-letter-locale:
      type:
        - object
        - 'null'
      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:
        en:
          type:
            - string
            - 'null'
          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.
        ar:
          type:
            - string
            - 'null'
          example: null
        bg:
          type:
            - string
            - 'null'
          example: null
        cn:
          type:
            - string
            - 'null'
          example: null
        cs:
          type:
            - string
            - 'null'
          example: null
        de:
          type:
            - string
            - 'null'
          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.
        es:
          type:
            - string
            - 'null'
          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.
        fr:
          type:
            - string
            - 'null'
          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.
        he:
          type:
            - string
            - 'null'
          example: null
        it:
          type:
            - string
            - 'null'
          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.
        ja:
          type:
            - string
            - 'null'
          example: >-
            クランリワードを受け取るには、クランメンバーでなければなりません。
            クランメンバーがあなたをクランに招待し、招待を受け入れると、クランに参加できます。 あなた自身のクランを作成することもできます。
        ko:
          type:
            - string
            - 'null'
          example: null
        pl:
          type:
            - string
            - 'null'
          example: null
        pt:
          type:
            - string
            - 'null'
          example: null
        ro:
          type:
            - string
            - 'null'
          example: null
        ru:
          type:
            - string
            - 'null'
          example: null
        th:
          type:
            - string
            - 'null'
          example: null
        tr:
          type:
            - string
            - 'null'
          example: null
        tw:
          type:
            - string
            - 'null'
          example: null
        vi:
          type:
            - string
            - 'null'
          example: null
    popup_image_url:
      type:
        - string
        - 'null'
      example: https://image.example.com
      description: Image pour la fenêtre contextuelle de la chaîne de récompenses de clan.
      format: uri
    client-reward-chain-item-model:
      type: object
      properties:
        reward_chain_id:
          type: integer
          example: 9
          description: ID de la chaîne de récompenses.
        name:
          type: string
          example: Weekly quest
          description: Nom de la chaîne de récompenses.
        description:
          type:
            - string
            - 'null'
          example: Major weekly quest
          description: Reward chain description.
        long_description:
          type:
            - string
            - 'null'
          example: >-
            You can get a lot of additional items just by shopping during the
            week
          description: Description détaillée de la chaîne de récompenses.
        image_url:
          $ref: '#/components/schemas/image_url'
        order:
          $ref: '#/components/schemas/order'
        date_start:
          $ref: '#/components/schemas/date_start'
        date_end:
          $ref: '#/components/schemas/date_end'
        clan_type:
          $ref: '#/components/schemas/clan_type'
        top_contributors:
          type: array
          items:
            $ref: '#/components/schemas/top_contributors'
        value_point:
          type: object
          properties:
            sku:
              $ref: '#/components/schemas/value-point-sku'
            name:
              $ref: '#/components/schemas/value-point-name'
            image_url:
              $ref: '#/components/schemas/Common_admin-image_url'
            description:
              $ref: '#/components/schemas/value-point-description'
            long_description:
              $ref: '#/components/schemas/value-point-long-description'
            amount:
              $ref: '#/components/schemas/value-point-amount'
            is_clan:
              $ref: '#/components/schemas/is_clan'
        steps:
          type: array
          items:
            type: object
            description: Étape de la chaîne de récompenses.
            properties:
              step_id:
                type: integer
                example: 10
                description: ID de l'étape.
              name:
                type: string
                example: Level 1
                description: Nom de l'étape.
              is_claimed:
                type: boolean
                example: false
                description: Détermine si la récompense d'étape est réclamée.
              image_url:
                $ref: '#/components/schemas/Common_admin-image_url'
              price:
                type: object
                properties:
                  amount:
                    type: integer
                    example: 100
                    description: >-
                      Nombre de points de valeur qu'un utilisateur réclame pour
                      l'étape.
              reward:
                type: array
                items:
                  type: object
                  properties:
                    sku:
                      $ref: '#/components/schemas/sku'
                    name:
                      type: string
                      example: Super box
                      description: Nom de l'objet.
                    type:
                      type: string
                      example: bundle
                      description: Type d'objet.
                    description:
                      type: string
                      example: Super box with items
                      description: Item description.
                    image_url:
                      $ref: '#/components/schemas/Common_admin-image_url'
                    quantity:
                      type: integer
                      example: 2
                      description: Quantité de l'objet.
        recurrent_schedule:
          $ref: '#/components/schemas/recurrent_schedule_client_side'
        popup_header:
          $ref: '#/components/schemas/popup_header-two-letter-locale'
        popup_instruction:
          $ref: '#/components/schemas/popup_instruction-two-letter-locale'
        popup_image_url:
          $ref: '#/components/schemas/popup_image_url'
    Pagination_has-more:
      type: boolean
      example: true
      description: Utilisé pour indiquer qu'il y a plus de pages.
    reward_chain_id:
      type: integer
      example: 9
      description: ID unique de la chaîne de récompenses.
    periods:
      type: array
      nullable: false
      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:
        type: object
        properties:
          date_from:
            type: string
            format: date-time
            nullable: false
            example: '2020-08-11T10:00:00+03:00'
            description: Date de début de la chaîne de récompenses spécifiée.
          date_until:
            type:
              - string
              - 'null'
            format: date-time
            example: '2020-08-11T20:00:00+03:00'
            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.
        required:
          - date_from
    day_of_week:
      type: integer
      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.
      minimum: 1
      maximum: 7
    time:
      type: string
      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`.
      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])
      example: 01:00:00+08:00
    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`
      type: string
      format: date-time
    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`
      type: string
      format: date-time
    day_of_month:
      type: integer
      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.
      minimum: 1
      maximum: 31
    reward_chain_hours_interval:
      type: integer
      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\"`."
      minimum: 1
      maximum: 10000
    admin_recurrent_schedule:
      type:
        - object
        - 'null'
      description: Période de réinitialisation récurrente de la chaîne de récompenses.
      oneOf:
        - type: object
          title: interval_type = weekly
          description: Réinitialisation hebdomadaire de la chaîne de récompenses.
          properties:
            interval_type:
              $ref: '#/components/schemas/interval_type_weekly'
            day_of_week:
              $ref: '#/components/schemas/day_of_week'
            time:
              $ref: '#/components/schemas/time'
            reset_next_date:
              $ref: '#/components/schemas/reset_next_date'
            displayable_reset_start_date:
              $ref: '#/components/schemas/displayable_reset_start_date'
            displayable_reset_next_date:
              $ref: '#/components/schemas/displayable_reset_next_date'
        - type: object
          title: interval_type = monthly
          description: Réinitialisation mensuelle de la chaîne de récompenses.
          properties:
            interval_type:
              $ref: '#/components/schemas/interval_type_monthly'
            day_of_month:
              $ref: '#/components/schemas/day_of_month'
            time:
              $ref: '#/components/schemas/time'
            reset_next_date:
              $ref: '#/components/schemas/reset_next_date'
            displayable_reset_start_date:
              $ref: '#/components/schemas/displayable_reset_start_date'
            displayable_reset_next_date:
              $ref: '#/components/schemas/displayable_reset_next_date'
        - type: object
          title: interval_type = horaire
          description: >-
            Réinitialisation de la chaîne de récompenses effectuée selon
            l'intervalle de temps spécifié, en heures.
          properties:
            interval_type:
              $ref: '#/components/schemas/interval_type_hourly_rc'
            hours_interval:
              $ref: '#/components/schemas/reward_chain_hours_interval'
            time:
              $ref: '#/components/schemas/time'
            reset_next_date:
              $ref: '#/components/schemas/reset_next_date'
            displayable_reset_start_date:
              $ref: '#/components/schemas/displayable_reset_start_date'
            displayable_reset_next_date:
              $ref: '#/components/schemas/displayable_reset_next_date'
    chain_user-attribute_conditions_model-get:
      allOf:
        - $ref: '#/components/schemas/user-attribute_conditions_model-get'
        - description: >-
            Conditions de validation des attributs utilisateur.

            Détermine la disponibilité de la chaîne selon que les attributs
            utilisateur correspondent à toutes les conditions spécifiées.
    chain_is_always_visible:
      description: "Détermine la visibilité de la chaîne par tous les utilisateurs. Si la valeur est `true`, la chaîne est toujours affichée, indépendamment du statut d'authentification ou des attributs de l'utilisateur.\n\nPour configurer la personnalisation, vous devez passer `false`. La logique d'affichage de la chaîne fonctionne alors comme suit\_:\n  * Si `false` est passé et que des conditions de visibilité sont définies dans le tableau `attribute_conditions`, la chaîne est considérée comme personnalisée et s'affiche uniquement pour les utilisateurs autorisés remplissant les conditions spécifiées.\n  * Si `false`\_est passé et que le tableau `attribute_conditions` n'est pas transmis ou est vide, la chaîne s'affiche pour les utilisateurs non autorisés, ainsi que lorsqu'aucune chaîne correspondante n'est trouvée pour l'utilisateur autorisé."
      type: boolean
      default: true
      example: true
    is_reset_after_end:
      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\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>"
      type: boolean
      default: false
      example: false
    admin-get-reward-chain-item-basic-model:
      type: object
      description: Chaîne de récompenses.
      properties:
        reward_chain_id:
          $ref: '#/components/schemas/reward_chain_id'
        name:
          $ref: '#/components/schemas/name-localization-object'
        order:
          $ref: '#/components/schemas/order'
        description:
          $ref: '#/components/schemas/description-localization-object'
        long_description:
          $ref: '#/components/schemas/long-description-localization-object'
        image_url:
          $ref: '#/components/schemas/image_url'
        periods:
          $ref: '#/components/schemas/periods'
        is_enabled:
          $ref: '#/components/schemas/is_enabled'
        value_point:
          type: object
          properties:
            sku:
              $ref: '#/components/schemas/value-point-sku'
            name:
              $ref: '#/components/schemas/value-point-name'
            type:
              type: string
              example: value_point
            image_url:
              $ref: '#/components/schemas/Common_admin-image_url'
            description:
              $ref: '#/components/schemas/value-point-description'
            long_description:
              $ref: '#/components/schemas/value-point-long-description'
            amount:
              $ref: '#/components/schemas/value-point-amount'
            is_clan:
              $ref: '#/components/schemas/is_clan'
            is_enabled:
              $ref: '#/components/schemas/is_enabled'
            media_list:
              $ref: '#/components/schemas/media_list'
            order:
              $ref: '#/components/schemas/order'
        recurrent_schedule:
          $ref: '#/components/schemas/admin_recurrent_schedule'
        attribute_conditions:
          $ref: '#/components/schemas/chain_user-attribute_conditions_model-get'
        is_always_visible:
          $ref: '#/components/schemas/chain_is_always_visible'
        is_reset_after_end:
          $ref: '#/components/schemas/is_reset_after_end'
    admin-get-reward-chain-item-clan-basic-model:
      allOf:
        - $ref: '#/components/schemas/admin-get-reward-chain-item-basic-model'
        - type: object
          description: Chaîne de récompense de clan.
          properties:
            value_point:
              type: object
              description: >-
                Point de valeur configuré pour une chaîne de récompenses de
                clan.
              properties:
                sku:
                  $ref: '#/components/schemas/value-point-sku'
                name:
                  $ref: '#/components/schemas/value-point-name'
                type:
                  type: string
                  example: value_point
                image_url:
                  $ref: '#/components/schemas/Common_admin-image_url'
                description:
                  $ref: '#/components/schemas/value-point-description'
                long_description:
                  $ref: '#/components/schemas/value-point-long-description'
                amount:
                  $ref: '#/components/schemas/value-point-amount'
                is_clan:
                  $ref: '#/components/schemas/is_clan'
                is_enabled:
                  $ref: '#/components/schemas/is_enabled'
                media_list:
                  $ref: '#/components/schemas/media_list'
                order:
                  $ref: '#/components/schemas/order'
              required:
                - sku
            popup_header:
              $ref: '#/components/schemas/popup_header-two-letter-locale'
            popup_instruction:
              $ref: '#/components/schemas/popup_instruction-two-letter-locale'
            popup_image_url:
              $ref: '#/components/schemas/popup_image_url'
            clan_type:
              $ref: '#/components/schemas/clan_type'
    step_price_amount:
      type: integer
      example: 100
      description: Prix de l'étape en points de valeur.
    reward_step_price:
      type: object
      properties:
        amount:
          $ref: '#/components/schemas/step_price_amount'
      required:
        - amount
    reward_item_quantity:
      type: integer
      example: 2
      description: Quantité de l'objet.
    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.

            Dé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.
    create_reward_step:
      type: object
      description: Étape de la chaîne de récompenses.
      properties:
        name:
          $ref: '#/components/schemas/name-localization-object'
        price:
          $ref: '#/components/schemas/reward_step_price'
        image_url:
          $ref: '#/components/schemas/image_url'
        reward:
          type: array
          items:
            type: object
            properties:
              sku:
                $ref: '#/components/schemas/sku'
              quantity:
                $ref: '#/components/schemas/reward_item_quantity'
              attribute_conditions:
                $ref: >-
                  #/components/schemas/reward-chain-step-reward_user-attribute_conditions_model-post
            required:
              - sku
              - quantity
      required:
        - name
        - price
        - reward
    recurrent_schedule_create_update:
      type:
        - object
        - 'null'
      description: Période de réinitialisation récurrente de la chaîne de récompenses.
      oneOf:
        - type: object
          title: interval_type = weekly
          description: Type hebdomadaire d'actualisation de la chaîne de récompenses.
          properties:
            interval_type:
              $ref: '#/components/schemas/interval_type_weekly'
            day_of_week:
              $ref: '#/components/schemas/day_of_week'
            time:
              $ref: '#/components/schemas/time'
          required:
            - interval_type
            - time
            - day_of_week
        - type: object
          title: interval_type = monthly
          description: Type mensuel d'actualisation de la chaîne de récompenses.
          properties:
            interval_type:
              $ref: '#/components/schemas/interval_type_monthly'
            day_of_month:
              $ref: '#/components/schemas/day_of_month'
            time:
              $ref: '#/components/schemas/time'
          required:
            - interval_type
            - time
            - day_of_month
        - type: object
          title: interval_type = horaire
          description: >-
            Réinitialisation de la chaîne de récompenses effectuée selon
            l'intervalle de temps spécifié, en heures.
          properties:
            interval_type:
              $ref: '#/components/schemas/interval_type_hourly_rc'
            hours_interval:
              $ref: '#/components/schemas/reward_chain_hours_interval'
          required:
            - interval_type
            - hours_interval
    chain_user-attribute_conditions_model-post:
      allOf:
        - $ref: '#/components/schemas/user-attribute_conditions_model-post'
        - description: >-
            Conditions de validation des attributs utilisateur.

            Détermine la disponibilité de la chaîne selon que les attributs
            utilisateur correspondent à toutes les conditions spécifiées.
    create-reward-chain-model:
      type: object
      description: Chaîne de récompenses.
      properties:
        name:
          $ref: '#/components/schemas/name-localization-object'
        description:
          $ref: '#/components/schemas/description-localization-object'
        long_description:
          $ref: '#/components/schemas/long-description-localization-object'
        image_url:
          $ref: '#/components/schemas/image_url'
        order:
          $ref: '#/components/schemas/order'
        periods:
          $ref: '#/components/schemas/periods'
        is_enabled:
          $ref: '#/components/schemas/is_enabled'
        value_point:
          type: object
          properties:
            sku:
              $ref: '#/components/schemas/sku'
          required:
            - sku
        steps:
          type: array
          items:
            $ref: '#/components/schemas/create_reward_step'
        recurrent_schedule:
          $ref: '#/components/schemas/recurrent_schedule_create_update'
        attribute_conditions:
          $ref: '#/components/schemas/chain_user-attribute_conditions_model-post'
        is_always_visible:
          $ref: '#/components/schemas/chain_is_always_visible'
        is_reset_after_end:
          $ref: '#/components/schemas/is_reset_after_end'
      required:
        - name
        - value_point
        - periods
        - steps
        - is_enabled
    create-clan-reward-chain-model:
      allOf:
        - $ref: '#/components/schemas/create-reward-chain-model'
        - type: object
          description: Chaîne de récompense de clan.
          properties:
            value_point:
              type: object
              description: >-
                Point de valeur configuré pour une chaîne de récompenses de
                clan.
              properties:
                sku:
                  $ref: '#/components/schemas/sku'
              required:
                - sku
            popup_header:
              $ref: '#/components/schemas/popup_header-two-letter-locale'
            popup_instruction:
              $ref: '#/components/schemas/popup_instruction-two-letter-locale'
            popup_image_url:
              $ref: '#/components/schemas/popup_image_url'
            clan_type:
              $ref: '#/components/schemas/clan_type'
          required:
            - name
            - value_point
            - periods
            - steps
            - is_enabled
            - popup_header
            - popup_instruction
    step_id:
      type:
        - integer
        - 'null'
      example: 10
      description: ID unique de l'étape.
    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.

            Dé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_step_short:
      type: object
      description: Étape de la chaîne de récompenses.
      properties:
        step_id:
          $ref: '#/components/schemas/step_id'
        name:
          $ref: '#/components/schemas/name-localization-object'
        price:
          $ref: '#/components/schemas/reward_step_price'
        image_url:
          $ref: '#/components/schemas/image_url'
        reward:
          type: array
          items:
            type: object
            properties:
              sku:
                $ref: '#/components/schemas/sku'
              quantity:
                $ref: '#/components/schemas/reward_item_quantity'
              attribute_conditions:
                $ref: >-
                  #/components/schemas/reward-chain-step-reward_user-attribute_conditions_model-get
    admin-get-reward-chain-item-full-model:
      type: object
      description: Chaîne de récompenses.
      properties:
        reward_chain_id:
          $ref: '#/components/schemas/reward_chain_id'
        name:
          $ref: '#/components/schemas/name-localization-object'
        order:
          $ref: '#/components/schemas/order'
        description:
          $ref: '#/components/schemas/description-localization-object'
        long_description:
          $ref: '#/components/schemas/long-description-localization-object'
        image_url:
          $ref: '#/components/schemas/image_url'
        periods:
          $ref: '#/components/schemas/periods'
        is_enabled:
          $ref: '#/components/schemas/is_enabled'
        value_point:
          type: object
          properties:
            sku:
              $ref: '#/components/schemas/sku'
            description:
              $ref: '#/components/schemas/description-localization-object'
            long_description:
              $ref: '#/components/schemas/long-description-localization-object'
            name:
              $ref: '#/components/schemas/name-localization-object'
            type:
              type: string
            is_enabled:
              $ref: '#/components/schemas/is_enabled'
            image_url:
              $ref: '#/components/schemas/image_url'
            media_list:
              $ref: '#/components/schemas/media_list'
            order:
              $ref: '#/components/schemas/order'
            is_clan:
              $ref: '#/components/schemas/is_clan'
        steps:
          type: array
          items:
            $ref: '#/components/schemas/reward_step_short'
        recurrent_schedule:
          $ref: '#/components/schemas/admin_recurrent_schedule'
        attribute_conditions:
          $ref: '#/components/schemas/chain_user-attribute_conditions_model-get'
        is_always_visible:
          $ref: '#/components/schemas/chain_is_always_visible'
        is_reset_after_end:
          $ref: '#/components/schemas/is_reset_after_end'
    admin-get-reward-chain-item-clan-full-model:
      allOf:
        - $ref: '#/components/schemas/admin-get-reward-chain-item-full-model'
        - type: object
          description: Chaîne de récompense de clan.
          properties:
            value_point:
              type: object
              description: >-
                Point de valeur configuré pour une chaîne de récompenses de
                clan.
              properties:
                sku:
                  $ref: '#/components/schemas/sku'
                description:
                  $ref: '#/components/schemas/description-localization-object'
                long_description:
                  $ref: '#/components/schemas/long-description-localization-object'
                name:
                  $ref: '#/components/schemas/name-localization-object'
                type:
                  type: string
                is_enabled:
                  $ref: '#/components/schemas/is_enabled'
                image_url:
                  $ref: '#/components/schemas/image_url'
                media_list:
                  $ref: '#/components/schemas/media_list'
                order:
                  $ref: '#/components/schemas/order'
                is_clan:
                  $ref: '#/components/schemas/is_clan'
              required:
                - sku
            popup_header:
              $ref: '#/components/schemas/popup_header-two-letter-locale'
            popup_instruction:
              $ref: '#/components/schemas/popup_instruction-two-letter-locale'
            popup_image_url:
              $ref: '#/components/schemas/popup_image_url'
            clan_type:
              $ref: '#/components/schemas/clan_type'
            top_contributors:
              $ref: '#/components/schemas/top_contributors'
    modify_reward_step:
      type: object
      description: Étape de la chaîne de récompenses.
      properties:
        step_id:
          $ref: '#/components/schemas/step_id'
        name:
          $ref: '#/components/schemas/name-localization-object'
        price:
          $ref: '#/components/schemas/reward_step_price'
        image_url:
          $ref: '#/components/schemas/image_url'
        reward:
          type: array
          items:
            type: object
            properties:
              sku:
                $ref: '#/components/schemas/sku'
              quantity:
                $ref: '#/components/schemas/reward_item_quantity'
              attribute_conditions:
                $ref: >-
                  #/components/schemas/reward-chain-step-reward_user-attribute_conditions_model-post
            required:
              - sku
              - quantity
      required:
        - name
        - price
        - reward
        - step_id
    update-reward-chain-model:
      type: object
      description: Chaîne de récompenses.
      properties:
        name:
          $ref: '#/components/schemas/name-localization-object'
        description:
          $ref: '#/components/schemas/description-localization-object'
        long_description:
          $ref: '#/components/schemas/long-description-localization-object'
        image_url:
          $ref: '#/components/schemas/image_url'
        order:
          $ref: '#/components/schemas/order'
        periods:
          $ref: '#/components/schemas/periods'
        is_enabled:
          $ref: '#/components/schemas/is_enabled'
        steps:
          type: array
          items:
            $ref: '#/components/schemas/modify_reward_step'
        recurrent_schedule:
          $ref: '#/components/schemas/recurrent_schedule_create_update'
        attribute_conditions:
          $ref: '#/components/schemas/chain_user-attribute_conditions_model-post'
        is_always_visible:
          $ref: '#/components/schemas/chain_is_always_visible'
        is_reset_after_end:
          $ref: '#/components/schemas/is_reset_after_end'
      required:
        - name
        - periods
        - steps
        - is_enabled
    update-clan-reward-chain-model:
      allOf:
        - $ref: '#/components/schemas/create-reward-chain-model'
        - type: object
          description: Chaîne de récompense de clan.
          properties:
            popup_header:
              $ref: '#/components/schemas/popup_header-two-letter-locale'
            popup_instruction:
              $ref: '#/components/schemas/popup_instruction-two-letter-locale'
            popup_image_url:
              $ref: '#/components/schemas/popup_image_url'
            clan_type:
              $ref: '#/components/schemas/clan_type'
          required:
            - name
            - periods
            - steps
            - is_enabled
            - popup_header
            - popup_instruction
    daily_chain_type:
      type: string
      enum:
        - calendar_hard
        - rolling_skippable
        - rolling_unskippable
      description: "Type de récompense quotidienne définissant les moments où l'utilisateur peut la réclamer.\n\nValeurs possibles\_:\n- `calendar_hard` — Débloque la récompense de l'étape suivante toutes les 24\_heures. Toute récompense non réclamée est définitivement perdue\ndès que la récompense suivante devient disponible.\n- `rolling_skippable` — Débloque la récompense de l'étape suivante toutes les 24\_heures à partir de\_`date_start`. La progression est séquentielle\_: une nouvelle récompense ne se débloque pas tant que la précédente n'a pas été réclamée. Si un utilisateur saute un ou plusieurs jours, il reprend là où il s'était arrêté\_; les jours manqués ne donnent pas droit à des récompenses multiples.\n- `rolling_unskippable` — Débloque la récompense de l'étape suivante toutes les 24\_heures à partir de `date_start`. La progression est\nséquentielle\_: une nouvelle récompense ne se débloque pas tant que la précédente n'a pas été réclamée. Cependant, si un utilisateur saute un jour, sa progression est réinitialisée et il doit recommencer depuis la première étape."
    calendar_hard_date_start:
      type: string
      format: date-time
      example: '2020-04-15T18:16:00+05:00'
      description: Date de début de la récompense quotidienne.
    calendar_hard_is_recurrent:
      type: boolean
      example: true
      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`.
    calendar-hard-daily-chain-base:
      type: object
      description: >-
        Propriétés de base pour les récompenses quotidiennes de type
        `calendar_hard`.
      properties:
        type:
          allOf:
            - $ref: '#/components/schemas/daily_chain_type'
            - enum:
                - calendar_hard
        date_start:
          $ref: '#/components/schemas/calendar_hard_date_start'
        is_recurrent:
          $ref: '#/components/schemas/calendar_hard_is_recurrent'
    daily_chain_id:
      type: integer
      example: 9
      description: ID unique de la récompense quotidienne.
    daily_chain_date_end:
      type:
        - string
        - 'null'
      format: date-time
      example: '2020-04-15T18:16:00+05:00'
      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`.
    daily_chain_number_of_step:
      type: integer
      example: 3
      description: >-
        Il s'agit du nombre d'étapes configurées dans la récompense quotidienne.
        Chaque étape correspond à un jour de la récompense.
    admin-calendar-hard-daily-chain-short-model:
      allOf:
        - $ref: '#/components/schemas/calendar-hard-daily-chain-base'
        - type: object
          description: Récompense quotidienne de `calendar_hard` (version courte).
          properties:
            id:
              $ref: '#/components/schemas/daily_chain_id'
            name:
              $ref: '#/components/schemas/name-localization-object'
            order:
              $ref: '#/components/schemas/order'
            description:
              $ref: '#/components/schemas/description-localization-object'
            date_end:
              $ref: '#/components/schemas/daily_chain_date_end'
            is_enabled:
              $ref: '#/components/schemas/is_enabled'
            number_of_steps:
              $ref: '#/components/schemas/daily_chain_number_of_step'
    daily_rolling_chain_date_start:
      type: string
      format: date-time
      example: '2020-04-15T18:16:00+05:00'
      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.
    rolling_date_end:
      type:
        - string
        - 'null'
      format: date-time
      example: '2020-04-15T18:16:00+05:00'
      description: Date de fin de la récompense quotidienne.
    rolling_is_recurrent:
      type: boolean
      example: true
      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`.
    rolling-skippable-daily-chain-base:
      type: object
      description: >-
        Propriétés de base pour les récompenses quotidiennes de type
        `rolling_skippable`.
      properties:
        type:
          allOf:
            - $ref: '#/components/schemas/daily_chain_type'
            - enum:
                - rolling_skippable
        date_start:
          $ref: '#/components/schemas/daily_rolling_chain_date_start'
        date_end:
          $ref: '#/components/schemas/rolling_date_end'
        is_recurrent:
          $ref: '#/components/schemas/rolling_is_recurrent'
    admin-rolling-skippable-daily-chain-short-model:
      allOf:
        - $ref: '#/components/schemas/rolling-skippable-daily-chain-base'
        - type: object
          description: Récompense quotidienne de `rolling_skippable` (version courte).
          properties:
            id:
              $ref: '#/components/schemas/daily_chain_id'
            name:
              $ref: '#/components/schemas/name-localization-object'
            order:
              $ref: '#/components/schemas/order'
            description:
              $ref: '#/components/schemas/description-localization-object'
            is_enabled:
              $ref: '#/components/schemas/is_enabled'
            number_of_steps:
              $ref: '#/components/schemas/daily_chain_number_of_step'
    rolling-unskippable-daily-chain-base:
      type: object
      description: >-
        Propriétés de base pour les récompenses quotidiennes de type
        `rolling_unskippable`.
      properties:
        type:
          allOf:
            - $ref: '#/components/schemas/daily_chain_type'
            - enum:
                - rolling_unskippable
        date_start:
          $ref: '#/components/schemas/daily_rolling_chain_date_start'
        date_end:
          $ref: '#/components/schemas/rolling_date_end'
        is_recurrent:
          $ref: '#/components/schemas/rolling_is_recurrent'
    admin-rolling-unskippable-daily-chain-short-model:
      allOf:
        - $ref: '#/components/schemas/rolling-unskippable-daily-chain-base'
        - type: object
          description: Récompense quotidienne de `rolling_unskippable` (version courte).
          properties:
            id:
              $ref: '#/components/schemas/daily_chain_id'
            name:
              $ref: '#/components/schemas/name-localization-object'
            order:
              $ref: '#/components/schemas/order'
            description:
              $ref: '#/components/schemas/description-localization-object'
            is_enabled:
              $ref: '#/components/schemas/is_enabled'
            number_of_steps:
              $ref: '#/components/schemas/daily_chain_number_of_step'
    admin-daily-chain-short-model:
      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
      discriminator:
        propertyName: type
        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
    daily_chain_step_number:
      type: integer
      example: 2
      description: Numéro de l'étape.
      nullable: false
      minimum: 1
    modify-daily-chain-item-model:
      type: object
      properties:
        sku:
          $ref: '#/components/schemas/sku'
        quantity:
          type: integer
          description: Nombre d'étapes de récompense quotidienne pour cette UGS
          minimum: 1
      required:
        - sku
        - quantity
    create-daily-chain-step-model:
      type: object
      properties:
        step_number:
          $ref: '#/components/schemas/daily_chain_step_number'
        items:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/modify-daily-chain-item-model'
      required:
        - step_number
        - items
    create-calendar-hard-daily-chain-model:
      allOf:
        - $ref: '#/components/schemas/calendar-hard-daily-chain-base'
        - type: object
          description: Récompense quotidienne de type `calendar_hard`.
          properties:
            name:
              $ref: '#/components/schemas/name-localization-object'
            order:
              $ref: '#/components/schemas/order'
            description:
              $ref: '#/components/schemas/description-localization-object'
            is_enabled:
              $ref: '#/components/schemas/is_enabled'
            steps:
              type: array
              items:
                $ref: '#/components/schemas/create-daily-chain-step-model'
          required:
            - name
            - date_start
            - steps
            - is_enabled
            - type
    create-rolling-skippable-daily-chain-model:
      allOf:
        - $ref: '#/components/schemas/rolling-skippable-daily-chain-base'
        - type: object
          description: Récompense quotidienne de type `rolling_skippable`.
          properties:
            name:
              $ref: '#/components/schemas/name-localization-object'
            order:
              $ref: '#/components/schemas/order'
            description:
              $ref: '#/components/schemas/description-localization-object'
            is_enabled:
              $ref: '#/components/schemas/is_enabled'
            steps:
              type: array
              items:
                $ref: '#/components/schemas/create-daily-chain-step-model'
          required:
            - name
            - date_start
            - steps
            - is_enabled
            - type
    create-rolling-unskippable-daily-chain-model:
      allOf:
        - $ref: '#/components/schemas/rolling-unskippable-daily-chain-base'
        - type: object
          description: Récompense quotidienne de type `rolling_unskippable`.
          properties:
            name:
              $ref: '#/components/schemas/name-localization-object'
            order:
              $ref: '#/components/schemas/order'
            description:
              $ref: '#/components/schemas/description-localization-object'
            is_enabled:
              $ref: '#/components/schemas/is_enabled'
            steps:
              type: array
              items:
                $ref: '#/components/schemas/create-daily-chain-step-model'
          required:
            - name
            - date_start
            - steps
            - is_enabled
            - type
    daily-chain-error-model:
      type: object
      properties:
        statusCode:
          type: integer
          example: 422
        errorCode:
          type: integer
          example: 1102
        errorMessage:
          type: string
          example: >-
            [0401-1102]: Unprocessable Entity. The property `property_name` is
            required
        transactionId:
          type: string
          example: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          type:
            - object
            - 'null'
    daily_chain_step_id:
      type:
        - integer
        - 'null'
      example: 10
      description: ID unique de l'étape de récompense quotidienne
      minimum: 1
    item_type:
      type: string
      description: "Type d'objet\_: `virtual_good`/`virtual_currency`/`bundle`/`unit`."
    admin-daily-chain-item-model:
      type: object
      properties:
        item_id:
          $ref: '#/components/schemas/item_id'
        sku:
          $ref: '#/components/schemas/sku'
        type:
          $ref: '#/components/schemas/item_type'
        name:
          $ref: '#/components/schemas/two-letter-locale'
        description:
          $ref: '#/components/schemas/long-description-localization-object'
        image_url:
          $ref: '#/components/schemas/image_url'
        quantity:
          type: integer
          description: Nombre d'objets.
          minimum: 1
          example: 1
    admin-daily-chain-step-model:
      type: object
      description: Étape de récompense quotidienne.
      properties:
        step_id:
          $ref: '#/components/schemas/daily_chain_step_id'
        step_number:
          $ref: '#/components/schemas/daily_chain_step_number'
        items:
          type: array
          items:
            $ref: '#/components/schemas/admin-daily-chain-item-model'
    admin-calendar-hard-daily-chain-model:
      allOf:
        - $ref: '#/components/schemas/calendar-hard-daily-chain-base'
        - type: object
          description: >-
            Récompense quotidienne de type calendar_hard pour les réponses des
            administrateurs.
          properties:
            id:
              $ref: '#/components/schemas/daily_chain_id'
            name:
              $ref: '#/components/schemas/name-localization-object'
            order:
              $ref: '#/components/schemas/order'
            description:
              $ref: '#/components/schemas/description-localization-object'
            date_end:
              $ref: '#/components/schemas/daily_chain_date_end'
            is_enabled:
              $ref: '#/components/schemas/is_enabled'
            number_of_steps:
              $ref: '#/components/schemas/daily_chain_number_of_step'
            steps:
              type: array
              items:
                $ref: '#/components/schemas/admin-daily-chain-step-model'
    admin-rolling-skippable-daily-chain-model:
      allOf:
        - $ref: '#/components/schemas/rolling-skippable-daily-chain-base'
        - type: object
          description: >-
            Récompense quotidienne de type rolling_skippable pour les réponses
            des administrateurs.
          properties:
            id:
              $ref: '#/components/schemas/daily_chain_id'
            name:
              $ref: '#/components/schemas/name-localization-object'
            order:
              $ref: '#/components/schemas/order'
            description:
              $ref: '#/components/schemas/description-localization-object'
            is_enabled:
              $ref: '#/components/schemas/is_enabled'
            number_of_steps:
              $ref: '#/components/schemas/daily_chain_number_of_step'
            steps:
              type: array
              items:
                $ref: '#/components/schemas/admin-daily-chain-step-model'
    admin-rolling-unskippable-daily-chain-model:
      allOf:
        - $ref: '#/components/schemas/rolling-unskippable-daily-chain-base'
        - type: object
          description: >-
            Récompense quotidienne de type `rolling_unskippable` pour les
            réponses des administrateurs.
          properties:
            id:
              $ref: '#/components/schemas/daily_chain_id'
            name:
              $ref: '#/components/schemas/name-localization-object'
            order:
              $ref: '#/components/schemas/order'
            description:
              $ref: '#/components/schemas/description-localization-object'
            is_enabled:
              $ref: '#/components/schemas/is_enabled'
            number_of_steps:
              $ref: '#/components/schemas/daily_chain_number_of_step'
            steps:
              type: array
              items:
                $ref: '#/components/schemas/admin-daily-chain-step-model'
    admin-daily-chain-long-model:
      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'
      discriminator:
        propertyName: type
        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'
    daily_chain_update_step_id:
      type:
        - integer
        - 'null'
      example: 10
      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.
      minimum: 1
    modify-daily-chain-step-model:
      type: object
      properties:
        step_id:
          $ref: '#/components/schemas/daily_chain_update_step_id'
        step_number:
          $ref: '#/components/schemas/daily_chain_step_number'
        items:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/modify-daily-chain-item-model'
      required:
        - step_number
        - items
    update-calendar-hard-daily-chain-model:
      allOf:
        - $ref: '#/components/schemas/calendar-hard-daily-chain-base'
        - type: object
          description: Récompense quotidienne de type `calendar_hard`.
          properties:
            id:
              $ref: '#/components/schemas/daily_chain_id'
            name:
              $ref: '#/components/schemas/name-localization-object'
            order:
              $ref: '#/components/schemas/order'
            description:
              $ref: '#/components/schemas/description-localization-object'
            is_enabled:
              $ref: '#/components/schemas/is_enabled'
            steps:
              type: array
              items:
                $ref: '#/components/schemas/modify-daily-chain-step-model'
          required:
            - name
            - date_start
            - steps
            - is_enabled
            - type
    update-rolling-skippable-daily-chain-model:
      allOf:
        - $ref: '#/components/schemas/rolling-skippable-daily-chain-base'
        - type: object
          description: Récompense quotidienne de type `rolling_skippable`.
          properties:
            id:
              $ref: '#/components/schemas/daily_chain_id'
            name:
              $ref: '#/components/schemas/name-localization-object'
            order:
              $ref: '#/components/schemas/order'
            description:
              $ref: '#/components/schemas/description-localization-object'
            is_enabled:
              $ref: '#/components/schemas/is_enabled'
            steps:
              type: array
              items:
                $ref: '#/components/schemas/modify-daily-chain-step-model'
          required:
            - name
            - date_start
            - steps
            - is_enabled
            - type
    update-rolling-unskippable-daily-chain-model:
      allOf:
        - $ref: '#/components/schemas/rolling-unskippable-daily-chain-base'
        - type: object
          description: Récompense quotidienne de type `rolling_unskippable`.
          properties:
            id:
              $ref: '#/components/schemas/daily_chain_id'
            name:
              $ref: '#/components/schemas/name-localization-object'
            order:
              $ref: '#/components/schemas/order'
            description:
              $ref: '#/components/schemas/description-localization-object'
            is_enabled:
              $ref: '#/components/schemas/is_enabled'
            steps:
              type: array
              items:
                $ref: '#/components/schemas/modify-daily-chain-step-model'
          required:
            - name
            - date_start
            - steps
            - is_enabled
            - type
    client-daily-chain-item-model:
      type: object
      properties:
        item_id:
          $ref: '#/components/schemas/item_id'
        sku:
          $ref: '#/components/schemas/sku'
        type:
          $ref: '#/components/schemas/item_type'
        name:
          type: string
          description: Nom de l'objet.
        description:
          type:
            - string
            - 'null'
          description: Item description.
        bundle_type:
          type:
            - string
            - 'null'
          enum:
            - standard
            - virtual_currency_package
        image_url:
          $ref: '#/components/schemas/image_url'
        is_free:
          $ref: '#/components/schemas/value-is_free'
        quantity:
          type: integer
          description: Nombre d'objets.
          minimum: 1
          example: 1
        content:
          type:
            - array
            - 'null'
          items:
            $ref: '#/components/schemas/client-daily-chain-item-model'
    client-daily-chain-step-model:
      type: object
      description: Étape de récompense quotidienne.
      properties:
        step_number:
          $ref: '#/components/schemas/daily_chain_step_number'
        status:
          type: string
          example: claimed
          enum:
            - claimed
            - claimable
            - blocked
            - claim_in_future
          description: "Définit l'état actuel de réclamation de l'étape.\n\nValeurs possibles :\n- `claimed` — L'étape a déjà été réclamée.\n- `claimable` — L'étape peut être réclamée.\n- `blocked` — L'étape ne peut pas être réclamée\_:\n  - Pour les utilisateurs non autorisés\_: toutes les étapes sont bloquées.\n  - Pour\_`calendar_hard`\_: l'étape n'a pas été réclamée et est désormais passée.\n  - Pour\_`rolling_skippable`\_: l’étape est verrouillée tant que la précédente n'est pas réclamée.\n- `claim_in_future`\_— L'étape n'a pas été réclamée et se situe dans le futur."
        unlocked_date:
          type: integer
          format: int64
          description: Horodatage Unix (en secondes) auquel l'étape sera déverrouillée.
        items:
          type: array
          items:
            $ref: '#/components/schemas/client-daily-chain-item-model'
    client-calendar-hard-daily-chain-model:
      allOf:
        - $ref: '#/components/schemas/calendar-hard-daily-chain-base'
        - type: object
          description: >-
            Récompense quotidienne de type calendar_hard pour les réponses des
            administrateurs.
          properties:
            id:
              type: integer
              example: 9
              description: ID de récompense quotidienne.
            name:
              type: string
              example: Weekly quest
              description: Nom de la récompense quotidienne.
            description:
              type:
                - string
                - 'null'
              example: Major weekly quest
              description: Daily reward description.
            order:
              $ref: '#/components/schemas/order'
            date_end:
              $ref: '#/components/schemas/daily_chain_date_end'
            steps:
              type: array
              items:
                $ref: '#/components/schemas/client-daily-chain-step-model'
    client-rolling-skippable-daily-chain-model:
      allOf:
        - $ref: '#/components/schemas/rolling-skippable-daily-chain-base'
        - type: object
          description: >-
            Récompense quotidienne de type rolling_skippable pour les réponses
            des administrateurs.
          properties:
            id:
              type: integer
              example: 9
              description: ID de récompense quotidienne.
            name:
              type: string
              example: Weekly quest
              description: Nom de la récompense quotidienne.
            description:
              type:
                - string
                - 'null'
              example: Major weekly quest
              description: Daily reward description.
            order:
              $ref: '#/components/schemas/order'
            steps:
              type: array
              items:
                $ref: '#/components/schemas/client-daily-chain-step-model'
    client-rolling-unskippable-daily-chain-model:
      allOf:
        - $ref: '#/components/schemas/rolling-unskippable-daily-chain-base'
        - type: object
          description: >-
            Récompense quotidienne de type `rolling_unskippable` pour les
            réponses des administrateurs.
          properties:
            id:
              type: integer
              example: 9
              description: ID de récompense quotidienne.
            name:
              type: string
              example: Weekly quest
              description: Nom de la récompense quotidienne.
            description:
              type:
                - string
                - 'null'
              example: Major weekly quest
              description: Daily reward description.
            order:
              $ref: '#/components/schemas/order'
            steps:
              type: array
              items:
                $ref: '#/components/schemas/client-daily-chain-step-model'
    client-daily-chain-model:
      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'
      discriminator:
        propertyName: type
        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'
    offer_chain_date_start:
      type: string
      format: date-time
      example: '2020-04-15T18:16:00+05:00'
      description: Date de début de la chaîne d'offres.
    offer_chain_date_end:
      type:
        - string
        - 'null'
      format: date-time
      example: '2020-04-15T18:16:00+05:00'
      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.
    offer_chain_step_number:
      type: integer
      example: 2
      description: Numéro de l'étape.
      nullable: false
      minimum: 1
    offer_chain_is_free:
      type: boolean
      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=\"/fr/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=\"/fr/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>"
    offer_chain_step_price_amount:
      type: number
      example: 99.99
      description: Prix de l'étape en devises réelles.
    offer_chain_step_price_currency:
      type: string
      example: USD
      description: >-
        Devise du prix de l'objet. Code à trois lettres selon [ISO
        4217](https://en.wikipedia.org/wiki/ISO_4217).
    offer_chain_step_price:
      type:
        - object
        - 'null'
      properties:
        amount:
          $ref: '#/components/schemas/offer_chain_step_price_amount'
        currency:
          $ref: '#/components/schemas/offer_chain_step_price_currency'
      required:
        - amount
        - currency
    client-offer-chain-item-model:
      type: object
      properties:
        item_id:
          $ref: '#/components/schemas/item_id'
        sku:
          $ref: '#/components/schemas/sku'
        type:
          $ref: '#/components/schemas/item_type'
        name:
          type: string
          description: Nom de l'objet.
        description:
          type:
            - string
            - 'null'
          description: Item description.
        bundle_type:
          type:
            - string
            - 'null'
          enum:
            - standard
            - virtual_currency_package
        image_url:
          $ref: '#/components/schemas/image_url'
        is_free:
          $ref: '#/components/schemas/value-is_free'
        quantity:
          type: integer
          description: Nombre d'objets.
          minimum: 1
          example: 1
        order:
          $ref: '#/components/schemas/order'
        content:
          type:
            - array
            - 'null'
          items:
            $ref: '#/components/schemas/client-offer-chain-item-model'
    client-offer-chain-step-model:
      type: object
      description: Étape de la chaîne d'offres.
      properties:
        step_number:
          $ref: '#/components/schemas/offer_chain_step_number'
        is_free:
          $ref: '#/components/schemas/offer_chain_is_free'
        is_claimed:
          type: boolean
          example: false
          description: Indique si la récompense d'étape est réclamée ou achetée.
        step_price:
          $ref: '#/components/schemas/offer_chain_step_price'
        items:
          type: array
          items:
            $ref: '#/components/schemas/client-offer-chain-item-model'
        step_vp_rewards:
          type:
            - array
            - 'null'
          description: >-
            Tableau des points de valeur du système de récompenses, accordés en
            tant que récompense.
          items:
            type: object
            properties:
              item_id:
                $ref: '#/components/schemas/item_id'
              sku:
                $ref: '#/components/schemas/value-point-sku'
              amount:
                $ref: '#/components/schemas/value-point-amount'
              name:
                $ref: '#/components/schemas/value-point-name'
              image_url:
                $ref: '#/components/schemas/Common_admin-image_url'
              is_clan:
                $ref: '#/components/schemas/is_clan'
        step_loyalty_rewards:
          type:
            - array
            - 'null'
          items:
            type: object
            properties:
              name:
                type: string
                example: First Loyalty Point
                description: Nom des points de fidélité.
              sku:
                type: string
                example: 0c745ef0-4243-46e1-aa90-54dee07da622
                description: UGS des points de fidélité.
              description:
                type: string
                example: First Loyalty Point Desc
                description: Loyalty point description.
              image_url:
                $ref: '#/components/schemas/image_url'
              amount:
                type: integer
                example: 1
                description: Quantité de points de fidélité.
    offer_chain_reset_next_date:
      type: integer
      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`"
    offer_chain_recurrent_schedule_client_side:
      type:
        - object
        - 'null'
      description: Période de réinitialisation de la chaîne d'offres.
      properties:
        interval_type:
          type: string
          description: Fréquence de réinitialisation de la chaîne d'offres.
          enum:
            - weekly
            - monthly
            - hourly
        reset_next_date:
          $ref: '#/components/schemas/offer_chain_reset_next_date'
    client-offer-chain-model:
      type: object
      description: Chaine d'offres.
      properties:
        id:
          type: integer
          example: 9
          description: ID de la chaîne d'offres.
        name:
          type: string
          example: Weekly quest
          description: Nom de la chaîne d'offres.
        description:
          type:
            - string
            - 'null'
          example: Major weekly quest
          description: Offer chain description.
        order:
          $ref: '#/components/schemas/order'
        date_start:
          $ref: '#/components/schemas/offer_chain_date_start'
        date_end:
          $ref: '#/components/schemas/offer_chain_date_end'
        steps:
          type: array
          items:
            $ref: '#/components/schemas/client-offer-chain-step-model'
        recurrent_schedule:
          $ref: '#/components/schemas/offer_chain_recurrent_schedule_client_side'
        next_step_number:
          type:
            - integer
            - 'null'
          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
    offer-chain-error-model:
      type: object
      properties:
        statusCode:
          type: integer
          example: 422
        errorCode:
          type: integer
          example: 1102
        errorMessage:
          type: string
          example: >-
            [0401-1102]: Unprocessable Entity. The property `property_name` is
            required
        transactionId:
          type: string
          example: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          type:
            - object
            - 'null'
    offer_chain_id:
      type: integer
      example: 9
      description: ID unique de la chaîne d'offres.
    offer_chain_interval_type_weekly:
      type: string
      description: Fréquence de réinitialisation de la chaîne d'offres.
      enum:
        - weekly
    offer_chain_day_of_week:
      type: integer
      description: >-
        Jour de la semaine où la chaîne d'offres est réinitialisée, où `1` est
        le lundi et `7`, le dimanche.
      minimum: 1
      maximum: 7
    offer_chain_time:
      type: string
      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`."
      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])
      example: 01:00:00+08:00
    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`"
      type: string
      format: date-time
    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`"
      type: string
      format: date-time
    offer_chain_interval_type_monthly:
      type: string
      description: Fréquence de réinitialisation de la chaîne d'offres.
      enum:
        - monthly
    offer_chain_day_of_month:
      type: integer
      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.
      minimum: 1
      maximum: 31
    offer_chain_interval_type_hourly:
      type: string
      description: Fréquence de réinitialisation de la chaîne d'offres.
      enum:
        - hourly
    offer_chain_hours_interval:
      type: integer
      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\"`."
      minimum: 1
      maximum: 10000
    offer_chain_recurrent_schedule:
      type:
        - object
        - 'null'
      description: Période de réinitialisation récurrente de la chaîne d'offres.
      oneOf:
        - type:
            - object
            - 'null'
          title: interval_type = weekly
          description: Réinitialisation hebdomadaire de la chaîne d'offres.
          properties:
            interval_type:
              $ref: '#/components/schemas/offer_chain_interval_type_weekly'
            day_of_week:
              $ref: '#/components/schemas/offer_chain_day_of_week'
            time:
              $ref: '#/components/schemas/offer_chain_time'
            reset_next_date:
              $ref: '#/components/schemas/offer_chain_reset_next_date'
            displayable_reset_start_date:
              $ref: '#/components/schemas/offer_chain_displayable_reset_start_date'
            displayable_reset_next_date:
              $ref: '#/components/schemas/offer_chain_displayable_reset_next_date'
        - type: object
          title: interval_type = monthly
          description: Réinitialisation mensuelle de la chaîne d'offres.
          properties:
            interval_type:
              $ref: '#/components/schemas/offer_chain_interval_type_monthly'
            day_of_month:
              $ref: '#/components/schemas/offer_chain_day_of_month'
            time:
              $ref: '#/components/schemas/offer_chain_time'
            reset_next_date:
              $ref: '#/components/schemas/offer_chain_reset_next_date'
            displayable_reset_start_date:
              $ref: '#/components/schemas/offer_chain_displayable_reset_start_date'
            displayable_reset_next_date:
              $ref: '#/components/schemas/offer_chain_displayable_reset_next_date'
        - type: object
          title: interval_type = horaire
          description: >-
            Réinitialisation de la chaîne d'offres effectuée selon l'intervalle
            de temps spécifié, en heures.
          properties:
            interval_type:
              $ref: '#/components/schemas/offer_chain_interval_type_hourly'
            hours_interval:
              $ref: '#/components/schemas/offer_chain_hours_interval'
    admin-offer-chain-short-model:
      type: object
      description: Chaine d'offres.
      properties:
        id:
          $ref: '#/components/schemas/offer_chain_id'
        name:
          $ref: '#/components/schemas/name-localization-object'
        order:
          $ref: '#/components/schemas/order'
        description:
          $ref: '#/components/schemas/description-localization-object'
        date_start:
          $ref: '#/components/schemas/offer_chain_date_start'
        date_end:
          $ref: '#/components/schemas/offer_chain_date_end'
        is_enabled:
          $ref: '#/components/schemas/is_enabled'
        recurrent_schedule:
          $ref: '#/components/schemas/offer_chain_recurrent_schedule'
        is_always_visible:
          $ref: '#/components/schemas/chain_is_always_visible'
        attribute_conditions:
          $ref: '#/components/schemas/chain_user-attribute_conditions_model-get'
    offer_chain_recurrent_schedule_create_update:
      type:
        - object
        - 'null'
      description: Période de réinitialisation de la chaîne d'offres.
      oneOf:
        - type:
            - object
            - 'null'
          title: interval_type = weekly
          description: Réinitialisation hebdomadaire de la chaîne d'offres.
          properties:
            interval_type:
              $ref: '#/components/schemas/offer_chain_interval_type_weekly'
            day_of_week:
              $ref: '#/components/schemas/offer_chain_day_of_week'
            time:
              $ref: '#/components/schemas/offer_chain_time'
          required:
            - interval_type
            - time
            - day_of_week
        - type: object
          title: interval_type = monthly
          description: Réinitialisation mensuelle de la chaîne d'offres.
          properties:
            interval_type:
              $ref: '#/components/schemas/offer_chain_interval_type_monthly'
            day_of_month:
              $ref: '#/components/schemas/offer_chain_day_of_month'
            time:
              $ref: '#/components/schemas/offer_chain_time'
          required:
            - interval_type
            - time
            - day_of_month
        - type: object
          title: interval_type = horaire
          description: >-
            Réinitialisation de la chaîne d'offres effectuée selon l'intervalle
            de temps spécifié, en heures.
          properties:
            interval_type:
              $ref: '#/components/schemas/offer_chain_interval_type_hourly'
            hours_interval:
              $ref: '#/components/schemas/offer_chain_hours_interval'
          required:
            - interval_type
            - hours_interval
    modify-offer-chain-item-model:
      type: object
      properties:
        sku:
          $ref: '#/components/schemas/sku'
        quantity:
          type: integer
          description: Quantité d'objets de récompense pour cette étape de la chaîne.
          minimum: 1
        order:
          description: Ordre des récompenses pour l'étape de la chaîne d'offres.
          type:
            - integer
            - 'null'
          minimum: 0
      required:
        - sku
        - quantity
    create-offer-chain-step-model:
      type: object
      properties:
        step_number:
          $ref: '#/components/schemas/offer_chain_step_number'
        is_free:
          $ref: '#/components/schemas/offer_chain_is_free'
        items:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/modify-offer-chain-item-model'
      required:
        - step_number
        - is_free
        - items
    create-offer-chain-model:
      type: object
      description: Chaine d'offres.
      properties:
        name:
          $ref: '#/components/schemas/name-localization-object'
        order:
          $ref: '#/components/schemas/order'
        description:
          $ref: '#/components/schemas/description-localization-object'
        date_start:
          $ref: '#/components/schemas/offer_chain_date_start'
        date_end:
          $ref: '#/components/schemas/offer_chain_date_end'
        is_enabled:
          $ref: '#/components/schemas/is_enabled'
        recurrent_schedule:
          $ref: '#/components/schemas/offer_chain_recurrent_schedule_create_update'
        steps:
          type: array
          items:
            $ref: '#/components/schemas/create-offer-chain-step-model'
        is_always_visible:
          $ref: '#/components/schemas/chain_is_always_visible'
        attribute_conditions:
          $ref: '#/components/schemas/chain_user-attribute_conditions_model-post'
      required:
        - name
        - date_start
        - steps
        - is_enabled
    offer_chain_step_id:
      type:
        - integer
        - 'null'
      example: 10
      description: ID unique de l'étape de la chaîne.
      minimum: 1
    admin-offer-chain-item-model:
      type: object
      properties:
        item_id:
          $ref: '#/components/schemas/item_id'
        sku:
          $ref: '#/components/schemas/sku'
        type:
          $ref: '#/components/schemas/item_type'
        name:
          $ref: '#/components/schemas/name-localization-object'
        description:
          $ref: '#/components/schemas/description-localization-object'
        image_url:
          $ref: '#/components/schemas/image_url'
        is_free:
          $ref: '#/components/schemas/value-is_free'
        quantity:
          type: integer
          description: Nombre d'objets.
          minimum: 1
          example: 1
        order:
          $ref: '#/components/schemas/order'
    admin-offer-chain-step-model:
      type: object
      description: Étape de la chaîne d'offres.
      properties:
        step_id:
          $ref: '#/components/schemas/offer_chain_step_id'
        step_number:
          $ref: '#/components/schemas/offer_chain_step_number'
        is_free:
          $ref: '#/components/schemas/offer_chain_is_free'
        step_price:
          $ref: '#/components/schemas/offer_chain_step_price'
        items:
          type: array
          items:
            $ref: '#/components/schemas/admin-offer-chain-item-model'
    admin-offer-chain-long-model:
      type: object
      description: Chaine d'offres.
      properties:
        id:
          $ref: '#/components/schemas/offer_chain_id'
        name:
          $ref: '#/components/schemas/name-localization-object'
        order:
          $ref: '#/components/schemas/order'
        description:
          $ref: '#/components/schemas/description-localization-object'
        date_start:
          $ref: '#/components/schemas/offer_chain_date_start'
        date_end:
          $ref: '#/components/schemas/offer_chain_date_end'
        is_enabled:
          $ref: '#/components/schemas/is_enabled'
        recurrent_schedule:
          $ref: '#/components/schemas/offer_chain_recurrent_schedule'
        steps:
          type: array
          items:
            $ref: '#/components/schemas/admin-offer-chain-step-model'
        is_always_visible:
          $ref: '#/components/schemas/chain_is_always_visible'
        attribute_conditions:
          $ref: '#/components/schemas/chain_user-attribute_conditions_model-get'
    update_step_id:
      type:
        - integer
        - 'null'
      example: 10
      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.
      minimum: 1
    modify-offer-chain-step-model:
      type: object
      properties:
        step_id:
          $ref: '#/components/schemas/update_step_id'
        step_number:
          $ref: '#/components/schemas/offer_chain_step_number'
        is_free:
          $ref: '#/components/schemas/offer_chain_is_free'
        items:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/modify-offer-chain-item-model'
      required:
        - step_number
        - is_free
        - items
    modify-offer-chain-model:
      type: object
      description: Chaine d'offres.
      properties:
        id:
          $ref: '#/components/schemas/offer_chain_id'
        name:
          $ref: '#/components/schemas/name-localization-object'
        order:
          $ref: '#/components/schemas/order'
        description:
          $ref: '#/components/schemas/description-localization-object'
        date_start:
          $ref: '#/components/schemas/offer_chain_date_start'
        date_end:
          $ref: '#/components/schemas/offer_chain_date_end'
        is_enabled:
          $ref: '#/components/schemas/is_enabled'
        recurrent_schedule:
          $ref: '#/components/schemas/offer_chain_recurrent_schedule_create_update'
        steps:
          type: array
          items:
            $ref: '#/components/schemas/modify-offer-chain-step-model'
        is_always_visible:
          $ref: '#/components/schemas/chain_is_always_visible'
        attribute_conditions:
          $ref: '#/components/schemas/chain_user-attribute_conditions_model-post'
      required:
        - name
        - date_start
        - steps
        - is_enabled
    bundle_type:
      type: string
      description: Type de lot. Renvoyé si le type d'objet est un lot.
      enum:
        - standard
        - virtual_currency_package
        - partner_side_content
    unit_type:
      type: string
      example: game
      description: "Type d'unité\_: `game`."
    drm_name:
      type: string
      example: Steam
      description: Nom du DRM de la clé de jeu.
    drm_sku:
      type: string
      example: steam
      description: ID unique du DRM.
    Upsell-model:
      type: object
      description: Type de vente incitative.
      properties:
        type:
          type: string
          enum:
            - fixed_list
          example: true
        is_enabled:
          $ref: '#/components/schemas/is_enabled'
        items:
          type: array
          example:
            - game_sku
          default: null
          description: Tableau des UGS d'objets.
          items:
            type: string
      required:
        - is_enabled
        - type
        - items
    Upsell-model-not-fixed-list:
      type: object
      description: Type de vente incitative.
      properties:
        type:
          type: string
          enum:
            - most_sellable
            - only_promotions
          example: true
        is_enabled:
          $ref: '#/components/schemas/is_enabled'
        items:
          type: array
          example:
            - null
          default: null
          description: Tableau vide des UGS d'objets
          items:
            type: string
      required:
        - is_enabled
        - type
    Upsell-422-invalid-request:
      type: object
      properties:
        statusCode:
          type: integer
          example: 422
        errorCode:
          type: integer
          example: 1102
        errorMessage:
          type: string
          example: >-
            [0401-1102]: Unprocessable entity. The property `is_enabled` is
            required
        transactionId:
          type: string
          example: x-x-x-x-transactionId-mock-x-x-x
    Virtual-Items-Currency_admin-groups-response:
      type: array
      example:
        - external_id: horror
          name:
            en: Horror
      default: []
      description: Groupes auxquels l'objet appartient.
      items:
        type: object
        properties:
          external_id:
            type: string
            example: horror
          name:
            type: object
            description: >-
              Nom de l'objet. Doit comprendre des paires clé/valeur

              où la clé est une région au format "^[a-z]{2}", la valeur est une
              chaîne.
            example:
              en: Horror
              de: Horror
            default:
              en: Horror
            additionalProperties:
              type: string
    Virtual-Items-Currency_client-attributes:
      type: array
      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
      default: []
      items:
        type: object
        properties:
          external_id:
            $ref: '#/components/schemas/admin-attribute-external_id'
          name:
            type: object
            description: Nom de l'attribut.
            example: Genre
            additionalProperties:
              type:
                - string
                - 'null'
          values:
            type: array
            items:
              type: object
              properties:
                external_id:
                  $ref: '#/components/schemas/value-external_id'
                value:
                  type: string
                  description: Valeur de l'attribut.
                  example: Strategy
    client_virtual_prices_response:
      type: array
      description: Prix virtuels.
      items:
        type: object
        description: Prix virtuel.
        properties:
          amount:
            type: integer
            example: 100
            description: Prix de l'objet en monnaie virtuelle.
          amount_without_discount:
            type: integer
            example: 200
            description: >-
              Prix de l'objet en monnaie virtuelle, hors remise. Il correspond
              toujours à `amount`, car les remises ne s'appliquent pas aux prix
              en monnaie virtuelle.
          sku:
            type: string
            example: vc_gold
            description: UGS de la monnaie virtuelle.
          is_default:
            type: boolean
            example: true
            description: Détermine s'il s'agit du prix par défaut en monnaie virtuelle.
          image_url:
            type:
              - string
              - 'null'
            example: http://image.png
            description: URL de l'image de la monnaie virtuelle.
          name:
            type: string
            example: Gold
            description: Nom de la monnaie virtuelle.
          type:
            type: string
            example: virtual_currency
            description: >-
              Type d'objet. Pour la monnaie virtuelle, il s'agit de
              `virtual_currency`.
          description:
            type:
              - string
              - 'null'
            example: In-game currency used to purchase weapons and upgrades
            description: Virtual currency description.
    item-periods-response:
      type: array
      description: Période de vente d'objets.
      items:
        type: object
        properties:
          date_from:
            type:
              - string
              - 'null'
            format: date-time
            example: '2020-08-11T10:00:00+03:00'
            description: Date de mise en vente de l'objet spécifié.
          date_until:
            type:
              - string
              - 'null'
            format: date-time
            example: '2020-08-11T20:00:00+03:00'
            description: >-
              Date de retrait de la vente de l'objet spécifié. Peut prendre la
              valeur `null`.
    item-custom-attributes-response:
      type: object
      description: Un JSON contenant les attributs de l'objet et leurs valeurs.
      format: json
    Upsell_item:
      type: object
      properties:
        sku:
          type: string
          example: big_rocket
          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.
        name:
          type: string
          example: Big Rocket
          description: Nom de l'objet.
        groups:
          $ref: '#/components/schemas/Virtual-Items-Currency_admin-groups-response'
        attributes:
          $ref: '#/components/schemas/Virtual-Items-Currency_client-attributes'
        type:
          type: string
          example: virtual_good
          description: "Type d'objet\_: `virtual_good`/`virtual_currency`/`bundle`."
        description:
          type: string
          example: Big Rocket - description
          description: Item description.
        image_url:
          type: string
          example: >-
            https://popmedia.blob.core.windows.net/popyourself/male/outfit/male_armor_white_a-01.png
          description: URL de l'image.
        is_free:
          $ref: '#/components/schemas/value-is_free'
        price:
          type:
            - object
            - 'null'
          description: Prix de l'objet.
          properties:
            amount:
              type: string
              example: '100.99'
              description: Prix de l'objet avec remise.
            amount_without_discount:
              type: string
              example: '100.99'
              description: Prix de l'objet.
            currency:
              type: string
              example: USD
              description: >-
                Devise du prix de l'objet. Code à trois lettres selon [ISO
                4217](https://en.wikipedia.org/wiki/ISO_4217).
        virtual_prices:
          $ref: '#/components/schemas/client_virtual_prices_response'
        can_be_bought:
          $ref: '#/components/schemas/Can_be_bought'
        virtual_item_type:
          type: string
          example: non-consumable
          description: "Type d'objet virtuel.\n\nValeurs possibles\_:\n- `consumable` — Objet qui disparaît de l'inventaire après utilisation (par exemple des munitions).\n- `non_consumable` — Objet conservé dans l'inventaire sans limite de durée.\n- `non_renewing_subscription` — Objet à durée limitée pouvant représenter un accès à des services ou du contenu pendant une période définie."
          enum:
            - consumable
            - non_consumable
            - non_renewing_subscription
        promotions:
          $ref: '#/components/schemas/Catalog_item_promotions'
        limits:
          $ref: '#/components/schemas/Catalog_item_limits'
        periods:
          $ref: '#/components/schemas/item-periods-response'
        custom_attributes:
          $ref: '#/components/schemas/item-custom-attributes-response'
        vp_rewards:
          $ref: '#/components/schemas/client-item-value-point-reward'
    Upsell_item-list:
      type: object
      properties:
        has_more:
          $ref: '#/components/schemas/Pagination_has-more'
        items:
          type: array
          items:
            $ref: '#/components/schemas/Upsell_item'
  examples:
    Promotions_200-admin-promotions:
      value:
        promotions:
          - id: 1
            promotion_periods:
              - date_from: '2020-01-01T00:00:00+03:00'
                date_until: null
            name:
              en: promotion_1
            type: item_bonus
            is_enabled: true
            bonus:
              - item:
                  description: null
                  image_url: null
                  sku: com.xsolla.diamonds_pack_1
                  name:
                    en: Diamonds pack
                    ru: Пак кристаллов
                  type: bundle
                  bundle_type: virtual_currency_package
                  content: []
                quantity: 1
            condition:
              - item:
                  description: null
                  image_url: null
                  sku: com.xsolla.virtual_good_bonus_2
                  name:
                    en: VG name
                    ru: Название VG
                  type: virtual_good
            discount: null
          - id: 2
            promotion_periods:
              - date_from: '2020-01-01T00:00:00+03:00'
                date_until: '2030-01-01T00:00:00+03:00'
            name:
              en: promotion_2
            type: item_discount
            is_enabled: false
            bonus: []
            condition:
              - item:
                  description: null
                  image_url: null
                  sku: com.xsolla.virtual_good_bonus_2
                  name:
                    en: VG name
                    ru: Название VG
                  type: virtual_good
            discount:
              percent: '10.99'
          - id: 3
            promotion_periods:
              - date_from: '2020-01-01T00:00:00+03:00'
                date_until: '2030-01-01T00:00:00+03:00'
            name:
              en: promotion_3
            type: coupon_bonus
            is_enabled: true
            bonus:
              - item:
                  description: null
                  image_url: null
                  sku: com.xsolla.virtual_good_bonus_2
                  name:
                    en: VG name
                    ru: Название VG
                  type: virtual_good
                quantity: 2
            condition:
              - item:
                  external_id: coupon_2
                  name:
                    en: Coupon name
                    ru: Название купона
                  is_enabled: true
                  redeem_total_limit: null
                  redeem_user_limit: null
                  redeem_code_limit: 1
            discount: null
          - id: 4
            promotion_periods:
              - date_from: '2018-01-01T00:00:00+03:00'
                date_until: '2031-01-01T00:00:00+03:00'
            name:
              en: promotion_4
            type: promocode_bonus_discount
            is_enabled: false
            bonus:
              - item:
                  description: null
                  image_url: null
                  sku: com.xsolla.virtual_good_bonus_2
                  name:
                    en: VG name
                    ru: Название VG
                  type: virtual_good
                quantity: 2
            condition:
              - item:
                  external_id: coupon_3
                  name:
                    en: Coupon name
                    ru: Название купона
                  is_enabled: true
                  redeem_total_limit: null
                  redeem_user_limit: null
                  redeem_code_limit: 1
            discount:
              percent: '12.99'
          - id: 5
            promotion_periods:
              - date_from: '2020-01-01T00:00:00+03:00'
                date_until: null
            name:
              en: promotion_5
            type: cart_bonus
            is_enabled: true
            bonus:
              - item:
                  description: null
                  image_url: null
                  sku: com.xsolla.virtual_good_bonus_4
                  name:
                    en: VG name
                    ru: Название VG
                  type: virtual_good
                quantity: 1
            condition: null
            discount: null
        total_promotions_count: 5
        active_promotions_count: 3
        inactive_promotions_count: 2
    422-activate-deactivate-promotion:
      value:
        statusCode: 422
        errorCode: 9505
        errorMessage: '[0401-9505]: Error was occurred while promotion was being updated'
        transactionId: da145238620011eb8e24fe6913ff226a
    Promotions_200-get-coupon-rewards:
      value:
        bonus:
          - item:
              sku: com.xsolla.game_1
              name:
                en: Game name
              type: unit
              description: Game description
              image_url: >-
                https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png
              unit_items:
                - sku: com.xsolla.game_key_01
                  name: Game name
                  type: game_key
                  is_free: false
                  drm_name: Steam
                  drm_sku: steam_key_01
                - sku: game_key_02
                  name: Game name
                  type: game_key
                  drm_name: Origin
                  drm_sku: origin_key_02
            quantity: 1
          - item:
              sku: com.xsolla.game_2
              name:
                en: Game name
              type: unit
              description: Game description
              image_url: >-
                https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png
              unit_items:
                - sku: com.xsolla.game_key_01
                  type: game_key
                  name: Game name
                  drm_name: Steam
                  drm_sku: steam_key_01
            quantity: 2
        discount:
          percent: '10.00'
        is_selectable: true
    Promotions_200-admin-coupons:
      value:
        items:
          - external_id: coupon_44056_1
            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'
            name:
              en-US: New Year Bonus
              de-DE: Neujahrsbonus
            is_enabled: true
            bonus:
              - sku: com.xsolla.elven_sword_1
                quantity: 1
              - sku: com.xsolla.elven_shield_1
                quantity: 2
              - sku: com.xsolla.elven_gloves_1
                quantity: 2
            redeem_user_limit: null
            redeem_total_limit: null
            redeem_code_limit: 1
            total_limit_state: null
          - external_id: summer2021
            promotion_periods:
              - date_from: '2020-04-15T18:16:00+05:00'
                date_until: '2020-04-25T18:16:00+05:00'
            name:
              en-US: Coupon name
              de-DE: Gutscheintitel
            is_enabled: true
            bonus:
              - sku: com.xsolla.diamonds_1
                quantity: 100
            redeem_user_limit: null
            redeem_total_limit: 100
            redeem_code_limit: 1
            total_limit_state:
              available: 50
              reserved: 10
              used: 40
        total_promotions_count: 2
        active_promotions_count: 2
        inactive_promotions_count: 0
    Promotions_200-coupon-code-list:
      value:
        codes:
          - code: CODE001
          - code: CODE002
          - code: CODE003
          - code: CODE004
          - code: CODE005
        total_count: 5
    Promotions_200-get-promocode-rewards:
      value:
        bonus:
          - item:
              sku: com.xsolla.game_1
              name: Game name
              type: unit
              description: Game description
              image_url: >-
                https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png
              unit_items:
                - sku: com.xsolla.game_key_01
                  name: Game name
                  type: game_key
                  is_free: false
                  drm_name: Steam
                  drm_sku: steam_key_01
                - sku: com.xsolla.game_key_02
                  name: Game name
                  type: game_key
                  drm_name: Origin
                  drm_sku: origin_key_02
            quantity: 1
          - item:
              sku: com.xsolla.game_2
              name: Game name
              type: unit
              description: Game description
              image_url: >-
                https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png
              unit_items:
                - sku: com.xsolla.game_key_01
                  type: game_key
                  name: Game name
                  drm_name: Steam
                  drm_sku: steam_key_01
            quantity: 2
        discount:
          percent: '10.00'
        is_selectable: true
        discounted_items:
          - sku: com.xsolla.elven_sword_1
            discount:
              percent: '10.00'
    Promotions_200-admin-promocodes:
      value:
        items:
          - external_id: promocode_100_crystals
            promotion_periods:
              - date_from: '2020-04-15T18:16:00+05:00'
                date_until: '2020-04-25T18:16:00+05:00'
            name:
              en-US: New Year Bonus
              de-DE: Neujahrsbonus
            is_enabled: true
            bonus:
              - sku: com.xsolla.elven_sword_1
                quantity: 1
              - sku: com.xsolla.elven_shield_1
                quantity: 2
              - sku: com.xsolla.elven_gloves_1
                quantity: 2
            redeem_user_limit: null
            redeem_total_limit: null
            redeem_code_limit: 1
            total_limit_state: null
            discount: null
            discounted_items: null
          - external_id: summer2021
            promotion_periods:
              - date_from: '2020-04-15T18:16:00+05:00'
                date_until: '2020-04-25T18:16:00+05:00'
            name:
              en-US: Coupon name
              de-DE: Gutscheintitel
            is_enabled: true
            bonus:
              - sku: com.xsolla.diamonds_1
                quantity: 100
            redeem_user_limit: null
            redeem_total_limit: 100
            redeem_code_limit: null
            total_limit_state:
              available: 50
              reserved: 10
              used: 40
            discount:
              percent: '10.99'
            discounted_items:
              - sku: com.xsolla.elven_sword_1
                discount:
                  percent: '10.00'
            price_conditions:
              - operator: ge
                value: '10.0000'
              - operator: le
                value: '50.0000'
            excluded_promotions:
              - 23
              - 45
        total_promotions_count: 2
        active_promotions_count: 2
        inactive_promotions_count: 0
    Promotions_200-admin-unique-catalog-offers:
      value:
        items:
          - external_id: 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'
            name:
              en-US: New Year Bonus
              de-DE: Neujahrsbonus
            items:
              - booster
              - booster_mega
            is_enabled: true
            redeem_user_limit: 1
            redeem_total_limit: null
            redeem_code_limit: 1
            total_limit_state: null
          - external_id: secret_store
            promotion_periods:
              - date_from: '2020-04-15T18:16:00+05:00'
                date_until: null
            name:
              en-US: Secret store
              ru-RU: Тайный магазин
            items:
              - helmet
              - armor
              - sword
            is_enabled: true
            redeem_user_limit: 1
            redeem_total_limit: 100
            redeem_code_limit: 1
            total_limit_state:
              available: 50
              reserved: 10
              used: 40
        total_promotions_count: 2
        active_promotions_count: 2
        inactive_promotions_count: 0
    404-coupon-not-found:
      value:
        statusCode: 404
        errorCode: 9802
        errorMessage: '[0401-9802]: Coupon not found'
        transactionId: x-x-x-x-transactionId-mock-x-x-x
    404-user-not-found:
      value:
        statusCode: 404
        errorCode: 5008
        errorMessage: '[0401-5008]: Could not find User'
        transactionId: transaction id
    Promotions_422-invalid-coupon:
      value:
        statusCode: 422
        errorCode: 1102
        errorMessage: >-
          [0401-1102]: Unprocessable Entity. The property `external_id` is
          required
    code-limit:
      value:
        promotion_id: 1
        items:
          - code: WINTER2023
            per_code:
              total: 10
              available: 7
              used: 2
              reserved: 1
          - code: SUMMER2023
            per_code:
              total: 5
              available: 0
              used: 3
              reserved: 2
        total_items_count: 2
        has_more: false
    401-complex-auth-header-not-found:
      value:
        statusCode: 401
        errorCode: 1501
        errorMessage: '[0401-1501]: Authorization failed: Authorization header not sent'
        transactionId: x-x-x-x-transactionId-mock-x-x-x
    401-complex-auth-incorrect-credentials:
      value:
        statusCode: 401
        errorCode: 1013
        errorMessage: '[0401-1013]: Token not found.'
        transactionId: x-x-x-x-transactionId-mock-x-x-x
    422-user_external_id_invalid:
      value:
        statusCode: 404
        errorCode: 1102
        errorMessage: '[0401-1102]: Unprocessable Entity'
        transactionId: transaction id
        errorMessageExtended:
          - property: user_external_id
            message: Must be at least 1 characters long
          - property: user_external_id
            message: Does not match the regex pattern ^\S+$
    404-promotion-by-id-not-found:
      value:
        statusCode: 404
        errorCode: 1101
        errorMessage: '[0401-1101]: Promotion not found'
        transactionId: transaction id
    422-promotion-without-user-limit:
      value:
        statusCode: 422
        errorCode: 4509
        errorMessage: '[0401-4509]: Promotion does not have configured user limits.'
        transactionId: transaction id
    422-promotion-out-of-range-available-user-limit:
      value:
        statusCode: 422
        errorCode: 4511
        errorMessage: '[0401-4511]: Available promotion limit is out of range.'
        transactionId: transaction id
    200-value-points-reward-chain_admin_get-value-point-list:
      value:
        items:
          - sku: com.xsolla.reward_vp_1
            name:
              en: Reward VP 1
            type: value_point
            is_enabled: true
            description:
              en: Points for reward system
            long_description:
              en: Points given to users to get new rewards in a reward chain.
            image_url: >-
              https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
            media_list: []
            order: 1
            is_clan: false
          - sku: com.xsolla.reward_vp_2
            name:
              en: Reward VP 2
            type: value_point
            is_enabled: false
            description:
              en: Value points for reward system.
            long_description:
              en: >-
                Value points given to users to get new rewards in a reward
                chain.
            image_url: >-
              https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
            media_list: []
            order: 2
            is_clan: false
          - sku: com.xsolla.clan_value_point_1
            name:
              en: Clan Reward VP 1
            is_enabled: true
            description:
              en: Value points for clan reward system.
            long_description:
              en: >-
                Value points given to clans to get new rewards in a reward
                chain.
            image_url: >-
              https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
            media_list: []
            order: 3
            is_clan: true
    422-property-sku-is-required:
      value:
        statusCode: 422
        errorCode: 1102
        errorMessage: '[0401-1102]: Unprocessable Entity. The property `sku` is required'
        transactionId: da145238620011eb8e24fe6913ff226a
    200-value-points-reward-chain_admin_get-value-point:
      value:
        sku: com.xsolla.reward_vp_1
        name:
          en: Reward VP 1
        type: value_point
        is_enabled: true
        description:
          en: Points for reward system
        long_description:
          en: Points given to users to get new rewards in a reward chain.
        image_url: >-
          https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
        media_list: []
        order: 1
        is_clan: false
        can_delete: false
    200-value-points-rewards-list:
      value:
        items:
          - item_id: 14232
            sku: com.xsolla.booster_1
            name:
              en: Booster
            image_url: >-
              https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
            amount: 100
          - item_id: 14232
            sku: com.xsolla.booster_mega
            name:
              en: Mega Booster
            image_url: >-
              https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
            amount: 200
    200-client-get-reward-chains-list:
      value:
        has_more: false
        total_items_count: 1
        items:
          - reward_chain_id: 10
            name: Weekly quest
            description: Big weekly quest
            long_description: >-
              You can get a lot of additional items just by shopping during the
              week
            image_url: >-
              https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
            order: 1
            date_start: '2023-04-15T18:16:00+05:00'
            date_end: '2023-04-25T18:16:00+05:00'
            value_point:
              sku: com.xsolla.value_point_1
              name: Value point
              image_url: >-
                https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
              description: null
              long_description: null
              amount: 130
            clan_type: null
            top_contributors: []
            steps:
              - step_id: 1
                name: Level 1
                is_claimed: true
                image_url: >-
                  https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                price:
                  amount: 100
                reward:
                  - sku: com.xsolla.box_1
                    name: Super box
                    type: bundle
                    description: Super box with items
                    image_url: >-
                      https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                    quantity: 1
                  - sku: com.xsolla.box_2
                    name: Mega box
                    type: bundle
                    description: Mega box with items
                    image_url: >-
                      https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                    quantity: 1
              - step_id: 2
                name: Level 2
                is_claimed: false
                image_url: >-
                  https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                price:
                  amount: 200
                reward:
                  - sku: com.xsolla.box_1
                    name: Super box
                    type: bundle
                    description: Super box with items
                    image_url: >-
                      https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                    quantity: 2
                  - sku: com.xsolla.box_2
                    name: Mega box
                    type: bundle
                    description: Mega box with items
                    image_url: >-
                      https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                    quantity: 2
            recurrent_schedule:
              interval_type: weekly
              reset_next_date: 1746057600
            popup_header: null
            popup_instruction: null
            popup_image_url: null
          - reward_chain_id: 12
            name: Weekly clan quest
            description: Major weekly clan quest.
            long_description: >-
              You and your clan members can get additional items for shopping
              during a certain month.
            image_url: >-
              https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
            order: 2
            date_start: '2023-04-15T18:16:00+05:00'
            date_end: '2023-10-15T18:16:00+05:00'
            value_point:
              sku: com.xsolla.clan_value_point_1
              name: Clan Reward VP 1
              image_url: >-
                https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
              description: Value points for clan reward system.
              long_description: >-
                Value points given to clans to get new rewards in a reward
                chain.
              amount: 80
            clan_type: guild
            top_contributors:
              - name: Rabbit
                contributed_amount: 100
              - name: Rocket
                contributed_amount: 80
              - name: Rain
                contributed_amount: 40
            steps:
              - step_id: 1
                name: Level 1
                is_claimed: true
                image_url: >-
                  https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                price:
                  amount: 100
                reward:
                  - sku: com.xsolla.box_1
                    name: Super box
                    type: bundle
                    description: Super box with items
                    image_url: >-
                      https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                    quantity: 1
                  - sku: com.xsolla.box_2
                    name: Mega box
                    type: bundle
                    description: Mega box with items
                    image_url: >-
                      https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                    quantity: 1
              - step_id: 2
                name: Level 2
                is_claimed: false
                image_url: >-
                  https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                price:
                  amount: 200
                reward:
                  - sku: com.xsolla.box_1
                    name: Super box
                    type: bundle
                    description: Super box with items
                    image_url: >-
                      https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                    quantity: 2
                  - sku: com.xsolla.box_2
                    name: Mega box
                    type: bundle
                    description: Mega box with items
                    image_url: >-
                      https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                    quantity: 2
            recurrent_schedule:
              interval_type: monthly
              reset_next_date: 1746057600
            popup_header:
              en: How to unlock rewards
            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.
            popup_image_url: >-
              https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
    200-client-get-user-reward-chain-balance:
      summary: Reward chain example
      value:
        sku: com.xsolla.value_point_1
        name: Value point
        image_url: >-
          https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
        description: null
        long_description: null
        amount: 130
        is_clan: false
    200-client-get-user-clan-reward-chain-balance:
      summary: Clan reward chain example
      value:
        sku: com.xsolla.clan_value_point_1
        name: Clan Reward VP 1
        image_url: >-
          https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
        description: Value points for clan reward system.
        long_description: Value points given to clans to get new rewards in a reward chain.
        amount: 80
        is_clan: true
    200-client-update-user-clan:
      value:
        reward:
          - sku: com.xsolla.box_1
            name: Super box
            type: bundle
            description: Super box with items
            image_url: >-
              https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
            quantity: 1
            bundle_type: standard
          - sku: com.xsolla.potion_1
            name: Mega potion
            type: virtual_good
            description: Mega potion
            image_url: >-
              https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
            quantity: 1
    200-reward-chain-list:
      value:
        has_more: true
        items:
          - name:
              en: Reward chain
            reward_chain_id: 1
            description:
              en: Reward chain description
            long_description:
              en: Reward chain long description
            is_enabled: true
            image_url: >-
              https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
            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'
            value_point:
              sku: com.xsolla.reward_vp_1
              name:
                en: Reward VP 1
              type: value_point
              is_enabled: true
              description: Value points for standard reward system.
              long_description: >-
                Value points given to users to get new rewards in a reward
                chain.
              image_url: >-
                https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
              media_list: []
              order: 1
              is_clan: false
            recurrent_schedule: null
            attribute_conditions:
              - attribute: race
                operator: eq
                value: ork
                type: string
                can_be_missing: false
            is_always_visible: true
            is_reset_after_end: true
          - name:
              en: Clan reward chain
            reward_chain_id: 2
            description:
              en: Clan reward chain description.
            long_description:
              en: Clan reward chain long description.
            is_enabled: true
            image_url: >-
              https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
            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'
            value_point:
              sku: com.xsolla.clan_value_point_1
              name:
                en: Clan Reward VP 1
              is_enabled: true
              description: Value points for clan reward system.
              long_description: >-
                Value points given to clans to get new rewards in a reward
                chain.
              image_url: >-
                https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
              media_list: []
              order: 1
              is_clan: true
            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
            popup_header:
              en: How to unlock rewards
            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.
            popup_image_url: >-
              https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
            clan_type: guild
    200-reward-chain:
      summary: Reward chain example
      value:
        reward_chain_id: 1
        name:
          en: Reward chain
        description:
          en: Reward chain description
        long_description:
          en: Reward chain long description
        is_enabled: true
        image_url: >-
          https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
        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'
        value_point:
          sku: com.xsolla.reward_vp_1
          name:
            en: Reward VP 1
          type: value_point
          is_enabled: true
          description:
            en: Value points for reward system.
          long_description:
            en: Value points given to users to get new rewards in a reward chain.
          image_url: >-
            https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
          media_list: []
          order: 1
          is_clan: false
        steps:
          - name:
              en: First step of the reward chain
            step_id: 1
            image_url: >-
              https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
            reward:
              - sku: com.xsolla.item_1
                quantity: 5
              - sku: com.xsolla.item_2
                quantity: 1
            price:
              amount: 10
          - name:
              en: Second step of the reward chain
            step_id: 2
            image_url: >-
              https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
            reward:
              - sku: com.xsolla.item_3
                quantity: 5
              - sku: com.xsolla.item_4
                quantity: 1
            price:
              amount: 15
        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
        attribute_conditions:
          - attribute: race
            operator: eq
            value: ork
            type: string
            can_be_missing: false
        is_always_visible: true
        is_reset_after_end: true
    200-clan-reward-chain:
      summary: Clan reward chain example
      value:
        reward_chain_id: 1
        name:
          en: Clan reward chain
        description:
          en: Clan reward chain description.
        long_description:
          en: Clan reward chain long description.
        is_enabled: true
        image_url: >-
          https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
        order: 1
        periods:
          - date_from: '2020-04-15T18:16:00+05:00'
            date_until: '2021-04-15T18:16:00+05:00'
        value_point:
          sku: com.xsolla.clan_value_point_1
          name:
            en: Clan Reward VP 1
          is_enabled: true
          description:
            en: Value points for clan reward system.
          long_description:
            en: >-
              Value points given to clans to get new rewards in a certain reward
              chain.
          image_url: >-
            https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
          media_list: []
          order: 1
          is_clan: true
        steps:
          - name:
              en: First step of the reward chain
            step_id: 1
            image_url: >-
              https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
            reward:
              - sku: com.xsolla.item_1
                quantity: 5
              - sku: com.xsolla.item_2
                quantity: 1
            price:
              amount: 10
          - name:
              en: Second step of the reward chain
            step_id: 2
            image_url: >-
              https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
            reward:
              - sku: com.xsolla.item_3
                quantity: 5
              - sku: com.xsolla.item_4
                quantity: 1
            price:
              amount: 15
        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
        popup_header:
          en: How to unlock rewards
        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.
        popup_image_url: >-
          https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
        clan_type: guild
    200-admin-daily-chain-list:
      summary: Daily reward list example
      value:
        has_more: false
        total_items_count: 3
        items:
          - id: 1
            name:
              en: Daily reward
              ru: Ежедневная награда
            description:
              en: Daily reward short description
            order: 1
            number_of_steps: 10
            date_start: '2023-04-15T18:16:00+05:00'
            date_end: '2025-04-25T18:16:00+05:00'
            is_enabled: false
            is_recurrent: true
            type: calendar_hard
          - id: 2
            name:
              en: Monthly daily reward
              ru: Ежедневные награды в цепочке на месяц
            description:
              en: Monthly daily reward short description
            order: 2
            number_of_steps: 13
            date_start: '2025-04-15T00:00:00+08:00'
            date_end: '2025-04-28T15:00:00+08:00'
            is_enabled: false
            is_recurrent: true
            type: calendar_hard
          - id: 3
            name:
              en: Login reward
            description:
              en: Login reward short description
            order: 3
            number_of_steps: 7
            date_start: '2023-05-01T18:16:00+05:00'
            date_end: '2025-05-31T18:16:00+05:00'
            is_enabled: true
            is_recurrent: true
            type: rolling_skippable
          - id: 4
            name:
              en: Daily reward
              ru: Ежедневная награда
            description:
              en: Daily reward short description
            order: 4
            number_of_steps: 10
            date_start: '2023-04-15T18:16:00+05:00'
            date_end: '2025-04-25T18:16:00+05:00'
            is_enabled: true
            is_recurrent: true
            type: calendar_hard
          - id: 5
            name:
              en: Unskippable login reward
            description:
              en: Unskippable login reward short description
            order: 3
            number_of_steps: 7
            date_start: '2025-11-01T10:00:00+05:00'
            date_end: '2025-11-30T10:00:00+05:00'
            is_enabled: true
            is_recurrent: true
            type: rolling_unskippable
    422-admin-daily-chain-error-too-many-steps:
      summary: Too many steps
      description: >-
        Daily reward steps max amount limit of 30 items is exceeded. Try
        specifying less steps.
      value:
        statusCode: 422
        errorCode: 6203
        errorMessage: '[0401-6203]: Chain step count exceeds the allowed limit'
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          step_count: 31
          max_steps: 30
    422-admin-daily-chain-error-incorrect-steps-order:
      summary: Incorrect steps order
      description: >-
        Daily reward steps numbers sequence is incorrect. Correct step numbers
        should be sequential without any gaps or duplicates.
      value:
        statusCode: 422
        errorCode: 6210
        errorMessage: '[0401-6210]: Chain step numbers are invalid'
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          incorrect_step_numbers:
            duplicates:
              - 2
              - 7
            out_of_range:
              - 7
              - 8
            missing:
              - 3
              - 4
              - 5
              - 6
    422-admin-daily-chain-error-item-limit-exceeded:
      summary: Item limit exceeded
      description: >-
        Daily reward step item count exceeds the allowed limit for some steps.
        Currently only 1 item per step is allowed.
      value:
        statusCode: 422
        errorCode: 6208
        errorMessage: >-
          [0401-6208]: Chain step item count exceeds the allowed limit for some
          steps
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          max_items: 1
          steps_exceeded_limits:
            - step_number: 1
              items_count: 2
            - step_number: 4
              items_count: 3
    422-admin-daily-chain-error-incorrect-items:
      summary: Incorrect step 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.
      value:
        statusCode: 422
        errorCode: 6211
        errorMessage: '[0401-6211]: Chain steps items are not allowed or not found'
        transactionId: x-x-xX-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          invalid_items:
            not_found:
              - vg_deleted_item_1
              - vg_deleted_item_2
              - not_existing_sku_404_1
              - not_existing_sku_404_2
            disabled:
              - vg_disabled_item_1
              - vg_disabled_item_2
              - vc_disabled_1
            invalid_item_type:
              allowed_item_type_list:
                - virtual_good
                - bundle
              sku_map:
                vc_enabled_shown_in_store_1: virtual_currency
                vc_disabled_1: virtual_currency
                unit_enabled_shown_in_store_1: unit
                gk_steam_enabled_shown_in_store_1: game_key
    422-admin-daily-chain-error-invalid-dates:
      summary: Invalid date format
      description: Please, ensure dates format is valid.
      value:
        statusCode: 422
        errorCode: 6204
        errorMessage: >-
          [0401-6204]: Period of a chain is invalid. Please, check the dates in
          your request
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          chain_id: 1
          invalid_format_dates:
            date_start: '2023-04-15 17:16:00Z'
            date_end: '2025-04-25 19:16:00Z'
    422-admin-daily-chain-error-incorrect-period:
      summary: Incorrect period of a daily reward
      description: Please ensure start date is earlier than end date.
      value:
        statusCode: 422
        errorCode: 6204
        errorMessage: >-
          [0401-6204]: Period of a chain is invalid. Please, check the dates in
          your request
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          chain_id: 1
          invalid_periods:
            - start: '2025-04-25T18:16:00+05:00'
              end: '2023-04-15T18:16:00+05:00'
    200-admin-daily-chain:
      summary: Daily reward example
      value:
        id: 3
        name:
          en: Daily reward
          ru: Ежедневная награда
        description:
          en: Daily reward short description
        date_start: '2023-04-15T18:16:00+05:00'
        date_end: '2025-04-25T18:16:00+05:00'
        order: 1
        is_recurrent: false
        number_of_steps: 3
        steps:
          - step_id: 7
            step_number: 1
            items:
              - item_id: 9010
                sku: telescope
                name:
                  en: Telescope
                  ru: Телескоп
                type: virtual_good
                description:
                  en: Allows to see the stars
                  ru: Позволяет увидеть звезды
                image_url: https://picture.bundle-picture.png
                quantity: 1
              - item_id: 9012
                sku: health_potion
                name:
                  en: Healing potion
                  ru: Зелье лечения
                type: virtual_good
                description:
                  en: Heal 10% of your health
                  ru: Лечит 10% здоровья
                image_url: https://picture.bundle-picture.png
                quantity: 2
          - step_id: 6
            step_number: 2
            items:
              - item_id: 9010
                sku: telescope
                name:
                  en: Telescope
                  ru: Телескоп
                type: virtual_good
                description:
                  en: Allows to see the stars
                  ru: Позволяет увидеть звезды
                image_url: https://picture.bundle-picture.png
                quantity: 5
          - step_id: 5
            step_number: 3
            items:
              - item_id: 9010
                sku: telescope
                name:
                  en: Telescope
                  ru: Телескоп
                type: virtual_good
                description:
                  en: Allows to see the stars
                  ru: Позволяет увидеть звезды
                image_url: https://picture.bundle-picture.png
                quantity: 2
        is_enabled: true
        type: calendar_hard
    404-daily-chain-not-found:
      summary: Daily reward is not found
      description: Récompense quotidienne non trouvée.
      value:
        statusCode: 404
        errorCode: 6201
        errorMessage: '[0401-6201]: Chain not found'
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          chain_id: 4
    422-admin-daily-chain-error-invalid-chain-step-ids:
      summary: Daily reward step IDs not found
      description: >-
        Some of step IDs was not found. Please, double check if specified daily
        reward step IDs actually exist.
      value:
        statusCode: 404
        errorCode: 6206
        errorMessage: '[0401-6206]: Chain step IDs not found'
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          chain_id: 1
          chain_step_id_list:
            - 404000
    422-admin-daily-chain-error-chain-id-mismatch:
      summary: Daily reward ID mismatch
      description: Daily reward ID specified in the body does not match the URL.
      value:
        statusCode: 422
        errorCode: 6205
        errorMessage: >-
          [0401-6205]: Chain ID mismatch. Please, check the chain ID in your
          request body and URL
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          url_chain_id: 1
          body_chain_id: 2
    422-admin-daily-chain-error-duplicate-step-ids:
      summary: Duplicate daily reward step IDs
      description: >-
        Please, ensure that daily reward step IDs are unique in the request
        body.
      value:
        statusCode: 422
        errorCode: 6207
        errorMessage: '[0401-6207]: Duplicate chain step IDs detected in the request body'
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          chain_step_id_list:
            - 8
            - 9
            - 10
          chain_id: 3
    422-admin-daily-chain-error-activated:
      summary: Active daily reward cannot be updated
      description: Active daily reward have to be deactivated before being updated.
      value:
        statusCode: 422
        errorCode: 6209
        errorMessage: >-
          [0401-6209]: Active chain cannot be updated. Please deactivate it
          first
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          chain_id: 2
    200-client-daily-chain-list:
      summary: User's daily reward list example
      value:
        has_more: false
        total_items_count: 3
        items:
          - id: 101
            name: Active daily reward
            description: null
            date_start: '2025-04-01T18:16:00+05:00'
            date_end: '2025-04-03T18:16:00+05:00'
            order: 1
            steps:
              - step_number: 1
                items:
                  - item_id: 9012
                    sku: health_potion
                    name: Healing potion
                    type: virtual_good
                    description: Heal 10% of your health
                    image_url: https://picture.bundle-picture.png
                    is_free: false
                    quantity: 1
                status: claimed
                unlocked_date: 1711978560
              - step_number: 2
                items:
                  - item_id: 9012
                    sku: health_potion
                    name: Healing potion
                    type: virtual_good
                    description: Heal 10% of your health
                    image_url: https://picture.bundle-picture.png
                    is_free: false
                    quantity: 2
                status: claimable
                unlocked_date: 1712064960
              - step_number: 3
                items:
                  - item_id: 9011
                    sku: free_item
                    name: Free item
                    type: virtual_good
                    description: store_item_0_lost_telescope_2_short_description
                    image_url: https://picture.bundle-picture.png
                    is_free: true
                    quantity: 1
                status: claim_in_future
                unlocked_date: 1712151360
            type: calendar_hard
          - id: 102
            name: Active daily reward 2
            description: null
            date_start: '2025-05-01T18:16:00+05:00'
            date_end: '2025-05-03T18:16:00+05:00'
            order: 1
            steps:
              - step_number: 1
                items:
                  - item_id: 9011
                    sku: free_item
                    name: Free item
                    type: virtual_good
                    description: store_item_0_lost_telescope_2_short_description
                    image_url: https://picture.bundle-picture.png
                    is_free: true
                    quantity: 3
                status: claimable
                unlocked_date: 1714560960
              - step_number: 2
                items:
                  - item_id: 9012
                    sku: health_potion
                    name: Healing potion
                    type: virtual_good
                    description: Heal 10% of your health
                    image_url: https://picture.bundle-picture.png
                    is_free: false
                    quantity: 3
                status: claim_in_future
                unlocked_date: 1714647360
            type: calendar_hard
          - id: 103
            name: Active daily reward 3
            description: null
            date_start: '2025-04-01T18:16:00+05:00'
            date_end: '2025-04-03T18:16:00+05:00'
            order: 1
            steps:
              - step_number: 1
                items:
                  - item_id: 9011
                    sku: free_item
                    name: Free item
                    type: virtual_good
                    description: store_item_0_lost_telescope_2_short_description
                    image_url: https://picture.bundle-picture.png
                    is_free: true
                    quantity: 3
                status: claimable
                unlocked_date: 1711978560
              - step_number: 2
                items:
                  - item_id: 9012
                    sku: health_potion
                    name: Healing potion
                    type: virtual_good
                    description: Heal 10% of your health
                    image_url: https://picture.bundle-picture.png
                    is_free: false
                    quantity: 3
                status: blocked
                unlocked_date: 1712064960
              - step_number: 3
                items:
                  - item_id: 9012
                    sku: health_potion
                    name: Healing potion
                    type: virtual_good
                    description: Heal 10% of your health
                    image_url: https://picture.bundle-picture.png
                    is_free: false
                    quantity: 3
                status: blocked
                unlocked_date: 1712151360
            type: calendar_hard
          - id: 104
            name: Active daily rolling reward
            description: null
            date_start: '2025-04-01T10:00:00+05:00'
            date_end: '2025-04-28T10:00:00+05:00'
            order: 1
            steps:
              - step_number: 1
                items:
                  - item_id: 1001
                    sku: item_one
                    name: Item One
                    type: virtual_good
                    description: Item one description
                    image_url: https://picture.bundle-picture.png
                    is_free: true
                    quantity: 1
                status: claimed
                unlocked_date: -1
              - step_number: 2
                items:
                  - item_id: 1002
                    sku: item_two
                    name: Item Two
                    type: virtual_good
                    description: Item two description
                    image_url: https://picture.bundle-picture.png
                    is_free: false
                    quantity: 1
                status: claimable
                unlocked_date: 1712064960
              - step_number: 3
                items:
                  - item_id: 1003
                    sku: item_three
                    name: Item Three
                    type: virtual_good
                    description: Item three description
                    image_url: https://picture.bundle-picture.png
                    is_free: false
                    quantity: 1
                status: claim_in_future
                unlocked_date: 1712151360
            type: rolling_skippable
    200-client-daily-chain:
      summary: User's daily reward example
      value:
        id: 101
        name: Active daily reward
        description: Active daily reward description
        date_start: '2025-04-01T18:16:00+05:00'
        date_end: '2025-04-03T18:16:00+05:00'
        order: 1
        steps:
          - step_number: 1
            items:
              - item_id: 10001
                sku: bundle_with_items
                name: Bundle with awesome stuff!
                type: bundle
                description: Many stuff
                image_url: https://picture.bundle-with-many-stuff.png
                bundle_type: standard
                is_free: false
                content:
                  - item_id: 1
                    sku: d0df11c5-f7c4-4907-9ae1-7dd40cecab05
                    name: virtual_good_one
                    type: virtual_good
                    description: Virtual good one
                    image_url: https://picture.virtual-good-picture.png
                    is_free: false
                    quantity: 1
                  - item_id: 2
                    sku: coins
                    name: Gold Coins
                    type: virtual_currency
                    description: Gold Coins
                    image_url: https://picture.gold_coins.png
                    is_free: false
                    quantity: 100
                quantity: 1
            status: blocked
            unlocked_date: 1711978560
          - step_number: 2
            items:
              - item_id: 9012
                sku: health_potion
                name: Healing potion
                type: virtual_good
                description: Heal 10% of your health
                image_url: https://picture.bundle-picture.png
                is_free: false
                quantity: 1
            status: claimed
            unlocked_date: 1712064960
          - step_number: 3
            items:
              - item_id: 9012
                sku: health_potion
                name: Healing potion
                type: virtual_good
                description: Heal 10% of your health
                image_url: https://picture.bundle-picture.png
                is_free: false
                quantity: 2
            status: claimable
            unlocked_date: 1712151360
          - step_number: 4
            items:
              - item_id: 9011
                sku: free_item
                name: Free item
                type: virtual_good
                description: store_item_0_lost_telescope_2_short_description
                image_url: https://picture.bundle-picture.png
                is_free: false
                quantity: 1
            status: claim_in_future
            unlocked_date: 1712237760
        type: calendar_hard
    404-daily-chain-step-not-found:
      summary: Daily reward step not found
      description: Daily reward step was not found.
      value:
        statusCode: 404
        errorCode: 6304
        errorMessage: '[0401-6304]: Daily Chain Step not found'
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          chain_id: 100
          step_number: 1
    422-daily-chain-claim-error-invalid-step:
      summary: Can't claim step reward
      description: >-
        Ensure the user has not previously claimed the reward and that the
        correct step in the daily reward is selected for claiming.
      value:
        statusCode: 422
        errorCode: 6405
        errorMessage: '[0401-6405]: This step is not available to be claimed by the user.'
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          chain_id: 1
          step_number: 1
    200-client-offer-chain-list:
      summary: User's offer chain list example
      value:
        has_more: false
        total_items_count: 3
        items:
          - id: 101
            name: Active offer chain
            description: null
            date_start: '2018-04-15T18:16:00+05:00'
            date_end: '2025-04-25T18:16:00+05:00'
            order: 1
            recurrent_schedule: null
            steps:
              - step_number: 1
                is_free: false
                items:
                  - item_id: 9012
                    sku: health_potion
                    name: Healing potion
                    type: virtual_good
                    description: Heal 10% of your health
                    image_url: https://picture.bundle-picture.png
                    is_free: false
                    quantity: 1
                    order: 0
                is_claimed: false
                step_price:
                  amount: 99.99
                  currency: USD
                step_vp_rewards:
                  - item_id: 6039
                    sku: test_value_point_39
                    amount: 15
                    name: store_item_0_test_value_point_name
                    image_url: >-
                      https://popmedia.blob.core.windows.net/popyourself/female/accessory/female_crossnecklace_2_silver-01.png
                    is_clan: true
              - step_number: 2
                is_free: false
                items:
                  - item_id: 9012
                    sku: health_potion
                    name: Healing potion
                    type: virtual_good
                    description: Heal 10% of your health
                    image_url: https://picture.bundle-picture.png
                    is_free: false
                    quantity: 2
                    order: 0
                is_claimed: false
                step_price:
                  amount: 199.98
                  currency: USD
                step_vp_rewards:
                  - item_id: 6039
                    sku: test_value_point_39
                    amount: 30
                    name: store_item_0_test_value_point_name
                    image_url: >-
                      https://popmedia.blob.core.windows.net/popyourself/female/accessory/female_crossnecklace_2_silver-01.png
                    is_clan: true
              - step_number: 3
                is_free: true
                items:
                  - item_id: 9011
                    sku: free_item
                    name: Free item
                    type: virtual_good
                    description: store_item_0_lost_telescope_2_short_description
                    image_url: https://picture.bundle-picture.png
                    is_free: true
                    quantity: 1
                    order: 0
                is_claimed: false
                step_price: null
                step_vp_rewards: null
            next_step_number: 1
          - id: 102
            name: Active offer chain 2
            description: null
            date_start: '2018-04-15T18:16:00+05:00'
            date_end: '2025-04-25T18:16:00+05:00'
            order: 1
            recurrent_schedule: null
            steps:
              - step_number: 1
                is_free: true
                items:
                  - item_id: 9011
                    sku: free_item
                    name: Free item
                    type: virtual_good
                    description: store_item_0_lost_telescope_2_short_description
                    image_url: https://picture.bundle-picture.png
                    is_free: true
                    quantity: 3
                    order: 0
                is_claimed: false
                step_price: null
                step_vp_rewards: null
              - step_number: 2
                is_free: true
                items:
                  - item_id: 9012
                    sku: health_potion
                    name: Healing potion
                    type: virtual_good
                    description: Heal 10% of your health
                    image_url: https://picture.bundle-picture.png
                    is_free: false
                    quantity: 3
                    order: 0
                is_claimed: false
                step_price: null
                step_vp_rewards:
                  - item_id: 6039
                    sku: test_value_point_39
                    amount: 45
                    name: store_item_0_test_value_point_name
                    image_url: >-
                      https://popmedia.blob.core.windows.net/popyourself/female/accessory/female_crossnecklace_2_silver-01.png
                    is_clan: true
              - step_number: 3
                is_free: true
                items: []
                is_claimed: false
                step_price: null
                step_vp_rewards: null
            next_step_number: 1
          - id: 103
            name: Active offer chain 3
            description: null
            date_start: '2018-04-15T18:16:00+05:00'
            date_end: '2025-04-25T18:16:00+05:00'
            order: 1
            recurrent_schedule: null
            steps:
              - step_number: 1
                is_free: true
                items:
                  - item_id: 9011
                    sku: free_item
                    name: Free item
                    type: virtual_good
                    description: store_item_0_lost_telescope_2_short_description
                    image_url: https://picture.bundle-picture.png
                    is_free: true
                    quantity: 3
                    order: 0
                is_claimed: false
                step_price: null
                step_vp_rewards: null
              - step_number: 2
                is_free: false
                items:
                  - item_id: 9012
                    sku: health_potion
                    name: Healing potion
                    type: virtual_good
                    description: Heal 10% of your health
                    image_url: https://picture.bundle-picture.png
                    is_free: false
                    quantity: 3
                    order: 0
                is_claimed: false
                step_price:
                  amount: 299.97
                  currency: USD
                step_vp_rewards:
                  - item_id: 6039
                    sku: test_value_point_39
                    amount: 45
                    name: store_item_0_test_value_point_name
                    image_url: >-
                      https://popmedia.blob.core.windows.net/popyourself/female/accessory/female_crossnecklace_2_silver-01.png
                    is_clan: true
              - step_number: 3
                is_free: true
                items: []
                is_claimed: false
                step_price: null
                step_vp_rewards: null
            next_step_number: 1
    200-client-offer-chain:
      summary: User's offer chain example
      value:
        id: 4
        name: Offer chain with bundles
        description: null
        date_start: '2010-04-15T18:16:00+05:00'
        date_end: '2025-04-25T18:16:00+05:00'
        order: 1
        recurrent_schedule: null
        steps:
          - step_number: 1
            is_free: false
            items:
              - item_id: 7008
                sku: bundle_with_many_items
                name: Bundle with many awesome stuff!
                type: bundle
                description: Many stuff
                image_url: https://picture.bundle-with-many-stuff.png
                bundle_type: standard
                is_free: false
                content:
                  - item_id: 1
                    sku: d0df11c5-f7c4-4907-9ae1-7dd40cecab05
                    name: Virtual Good Bundle
                    type: virtual_good
                    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
                    quantity: 1
                  - item_id: 7009
                    sku: vg-in-bundle-big-rocket
                    name: Big Rocket
                    type: virtual_good
                    description: Big Rocket - short description
                    image_url: https://picture.bigrocket.png
                    is_free: false
                    quantity: 1
                  - item_id: 7010
                    sku: vc-in-bundle-gold-coins
                    name: Gold Coins
                    type: virtual_currency
                    description: Gold Coins - short description
                    image_url: https://picture.gold_coins.png
                    is_free: true
                    quantity: 100
                  - item_id: 7011
                    sku: digital-content-drm-in-bundle-awesome-game
                    name: Some Game
                    type: virtual_good
                    description: Some Game - short description
                    image_url: https://picture.some_game.png
                    is_free: true
                    quantity: 1
                  - item_id: 7012
                    sku: bundle-in-bundle-another-bundle
                    name: Some Bundle in Bundle
                    type: bundle
                    description: Bundle - short description
                    image_url: https://picture.bundle-picture.png
                    bundle_type: standard
                    is_free: true
                    content:
                      - item_id: 7010
                        sku: vc-in-bundle-gold-coins
                        name: Gold Coins
                        type: virtual_currency
                        description: Gold Coins - short description
                        image_url: https://picture.gold_coins.png
                        is_free: true
                        quantity: 1
                    quantity: 1
                  - item_id: 7013
                    sku: lootbox-in-bundle-awesome-game
                    name: Some Lootbox
                    type: lootbox
                    description: Lootbox in bundle - short description
                    image_url: https://picture.lootbox-picture.png
                    is_free: true
                    quantity: 1
                quantity: 5
                order: 0
            is_claimed: false
            step_price:
              amount: 499.95
              currency: USD
            step_vp_rewards: null
          - step_number: 2
            is_free: true
            items:
              - item_id: 7007
                sku: bundle-empty
                name: Empty bundle
                type: bundle
                description: 'No'
                image_url: https://picture.bundle-no-items.png
                bundle_type: standard
                is_free: true
                content: []
                quantity: 10
                order: 0
            is_claimed: false
            step_price: null
            step_vp_rewards: null
        next_step_number: 1
    404-offer-chain-not-found:
      summary: Chain not found
      description: Offer chain step was not found.
      value:
        statusCode: 404
        errorCode: 6201
        errorMessage: '[0401-6201]: Chain not found'
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          chain_id: 4
    404-offer-chain-step-not-found:
      summary: Chain step not found
      description: Offer chain step was not found.
      value:
        statusCode: 404
        errorCode: 6304
        errorMessage: '[0401-6304]: Offer Chain Step not found'
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          chain_id: 100
          step_number: 1
    422-offer-chain-claim-error-invalid-step:
      summary: Cannot claim step reward
      description: >-
        The user must claim all previous steps, and the request must use a valid
        call – <a
        href="/fr/api/shop-builder/operation/order-user-offer-chain-step-reward">Create
        order for paid offer chain step</a>, <a
        href="/fr/api/shop-builder/operation/claim-user-offer-chain-step-reward">Claim
        free offer chain step</a> for free ones.


        This 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>
      value:
        statusCode: 422
        errorCode: 6306
        errorMessage: '[0401-6306]: This step is not valid to claim by user.'
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          chain_id: 1
          step_number: 1
    200-admin-offer-chain-list:
      summary: Offer chain list example
      value:
        has_more: false
        items:
          - id: 1
            name:
              en: New personalized default offer chain
              ru: Новая персонализированная цепочка предложений по умолчанию
              de: Neue personalisierte Standard-Angebotskette
              fr: Nouvelle chaîne d'offres personnalisée par défaut
              it: Nuova catena di offerte personalizzata predefinita
            description:
              en: >-
                Default personalized offer chain for users that do not meet the
                conditions of other personalized chains
              ru: >-
                Персонализированная цепочка по умолчанию для пользователей, не
                подходящих под условия других персонализированных цепочек
              de: >-
                Standard-personalisierte Angebotskette für Benutzer, die die
                Bedingungen anderer personalisierter Ketten nicht erfüllen
              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
            order: 1
            date_start: '2023-04-15T18:16:00+05:00'
            date_end: '2025-04-25T18:16:00+05:00'
            is_enabled: true
            recurrent_schedule: null
            is_always_visible: false
          - id: 2
            name:
              en: New personalized offer chain
              ru: Новая персонализированная цепочка предложений
              de: Neue personalisierte Angebotskette
              fr: Nouvelle chaîne d'offres personnalisée
              it: Nuova catena di offerte personalizzata
            description:
              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
              ru: >-
                Персонализированная цепочка предложений с условиями по атрибутам
                пользователя - для эльфов уровня 10 и выше, достигших 10 уровня
                не позднее 2026-01-01 00:00:00 включительно
              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
              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
            order: 2
            date_start: '2023-04-15T18:16:00+05:00'
            date_end: '2025-04-25T18:16:00+05:00'
            is_enabled: true
            recurrent_schedule: null
            is_always_visible: false
            attribute_conditions:
              - attribute: race
                operator: eq
                value: elf
                type: string
                can_be_missing: false
              - attribute: level
                operator: ge
                value: '10'
                type: number
                can_be_missing: false
              - attribute: 10_level_up_date
                operator: le
                value: '2026-01-01T00:00:00'
                type: date
                can_be_missing: false
          - id: 4
            name:
              en: Weekly offer chain
              ru: Еженедельная цепочка предложений
              de: Wöchentliche Angebotskette
              fr: Chaîne d'offres hebdomadaire
              it: Catena di offerte settimanale
            description:
              en: Offer chain that resets weekly on Wednesdays at 07:00 GMT+3
              ru: >-
                Цепочка предложений, которая сбрасывается еженедельно по средам
                в 07:00 GMT+3
              de: >-
                Angebotskette, die sich wöchentlich mittwochs um 07:00 Uhr GMT+3
                zurücksetzt
              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
            order: 3
            date_start: '2023-04-15T18:16:00+05:00'
            date_end: '2025-04-25T18:16:00+05:00'
            is_enabled: false
            recurrent_schedule:
              interval_type: weekly
              day_of_week: 3
              time: 07:00:00+03:00
              displayable_reset_start_date: '2018-12-05T07:00:00+03:00'
              displayable_reset_next_date: '2018-12-05T07:00:00+03:00'
              reset_next_date: 1543982400
            is_always_visible: true
          - id: 5
            name:
              en: Monthly offer chain
              ru: Ежемесячная цепочка предложений
              de: Monatliche Angebotskette
              fr: Chaîne d'offres mensuelle
              it: Catena di offerte mensile
            description:
              en: Offer chain that resets monthly on the 28th at 15:00 GMT+8
              ru: >-
                Цепочка предложений, которая сбрасывается ежемесячно 28-го числа
                в 15:00 GMT+8
              de: >-
                Angebotskette, die sich monatlich am 28. um 15:00 Uhr GMT+8
                zurücksetzt
              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
            order: 4
            date_start: '2025-04-15T00:00:00+08:00'
            date_end: '2025-08-28T15:00:00+08:00'
            is_enabled: true
            recurrent_schedule:
              interval_type: monthly
              day_of_month: 28
              time: 15:00:00+08:00
              displayable_reset_start_date: '2025-05-28T15:00:00+08:00'
              displayable_reset_next_date: '2025-05-28T15:00:00+08:00'
              reset_next_date: 1748415600
            is_always_visible: true
    422-admin-offer-chain-error-too-many-steps:
      summary: Too many steps
      description: >-
        The number of offer chain steps exceeds the allowed limit of 30. Try
        specifying fewer steps.
      value:
        statusCode: 422
        errorCode: 6203
        errorMessage: '[0401-6203]: Chain step count exceeds the allowed limit'
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          step_count: 31
          max_steps: 30
    422-admin-offer-chain-error-incorrect-steps-order:
      summary: Invalid steps order
      description: >-
        The sequence of offer chain step numbers is incorrect. Step numbers must
        be sequential, without gaps or duplicates.
      value:
        statusCode: 422
        errorCode: 6210
        errorMessage: '[0401-6210]: Chain step numbers are invalid'
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          incorrect_step_numbers:
            duplicates:
              - 2
              - 7
            out_of_range:
              - 7
              - 8
            missing:
              - 3
              - 4
              - 5
              - 6
    422-admin-offer-chain-error-item-limit-exceeded:
      summary: 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.
      value:
        statusCode: 422
        errorCode: 6208
        errorMessage: >-
          [0401-6208]: Chain step item count exceeds the allowed limit for some
          steps
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          max_items: 1
          steps_exceeded_limits:
            - step_number: 1
              items_count: 2
            - step_number: 4
              items_count: 3
    422-admin-offer-chain-error-incorrect-items:
      summary: Invalid step 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.
      value:
        statusCode: 422
        errorCode: 6211
        errorMessage: '[0401-6211]: Chain steps items are not allowed or not found'
        transactionId: x-x-xX-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          invalid_items:
            not_found:
              - vg_deleted_item_1
              - vg_deleted_item_2
              - not_existing_sku_404_1
              - not_existing_sku_404_2
            disabled:
              - vg_disabled_item_1
              - vg_disabled_item_2
              - vc_disabled_1
            invalid_item_type:
              allowed_item_type_list:
                - virtual_good
                - bundle
              sku_map:
                vc_enabled_shown_in_store_1: virtual_currency
                vc_disabled_1: virtual_currency
                unit_enabled_shown_in_store_1: unit
                gk_steam_enabled_shown_in_store_1: game_key
    422-admin-offer-chain-error-invalid-dates:
      summary: Invalid date format
      description: >-
        The date format must be valid. Use <a
        href="https://en.wikipedia.org/wiki/ISO_8601" target="_blank">ISO
        8601</a> format.
      value:
        statusCode: 422
        errorCode: 6204
        errorMessage: >-
          [0401-6204]: Period of a chain is invalid. Please, check the dates in
          your request
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          chain_id: 1
          invalid_format_dates:
            date_start: '2023-04-15 17:16:00Z'
            date_end: '2025-04-25 19:16:00Z'
    422-admin-offer-chain-error-incorrect-period:
      summary: Invalid chain period
      description: The start date must be earlier than the end date.
      value:
        statusCode: 422
        errorCode: 6204
        errorMessage: >-
          [0401-6204]: Period of a chain is invalid. Please, check the dates in
          your request
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          chain_id: 1
          invalid_periods:
            - start: '2025-04-25T18:16:00+05:00'
              end: '2023-04-15T18:16:00+05:00'
    200-admin-offer-chain:
      summary: Offer chain example
      value:
        id: 3
        name:
          en: Offer chain
          ru: Цепочка
          de: Angebotskette
          fr: Chaîne d'offres
          it: Catena di offerte
        description:
          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
          ru: >-
            Персонализированная цепочка предложений - для эльфов 10 уровня и
            выше, достигших 10 уровня не позднее 2026-01-01 00:00:00
            включительно
          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
          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
        date_start: '2023-04-15T18:16:00+05:00'
        date_end: '2025-04-25T18:16:00+05:00'
        order: 1
        recurrent_schedule: null
        steps:
          - step_id: 7
            step_number: 1
            is_free: false
            items:
              - item_id: 9010
                sku: telescope
                name:
                  en: Telescope
                  ru: Телескоп
                  de: Teleskop
                  fr: Télescope
                  it: Telescopio
                type: virtual_good
                description:
                  en: Allows to see the stars
                  ru: Позволяет увидеть звезды
                  de: Ermöglicht das Betrachten der Sterne
                  fr: Permet de voir les étoiles
                  it: Permette di vedere le stelle
                image_url: https://cdn.picture.vg.sku-telescope.png
                quantity: 1
                order: 1
              - item_id: 9012
                sku: health_potion
                name:
                  en: Healing potion
                  ru: Зелье лечения
                  de: Heiltrank
                  fr: Potion de soin
                  it: Pozione curativa
                type: virtual_good
                description:
                  en: Heal 10% of your health
                  ru: Лечит 10% здоровья
                  de: Heilt 10% deiner Gesundheit
                  fr: Soigne 10% de votre santé
                  it: Cura il 10% della tua salute
                image_url: https://cdn.picture/vg-sku-health_potion.png
                quantity: 2
                order: 0
          - step_id: 6
            step_number: 2
            is_free: false
            items:
              - item_id: 9010
                sku: telescope
                name:
                  en: Telescope
                  ru: Телескоп
                  de: Teleskop
                  fr: Télescope
                  it: Telescopio
                type: virtual_good
                description:
                  en: Allows to see the stars
                  ru: Позволяет увидеть звезды
                  de: Ermöglicht das Betrachten der Sterne
                  fr: Permet de voir les étoiles
                  it: Permette di vedere le stelle
                image_url: https://cdn.picture/vg-sku-telescope.png
                quantity: 5
                order: 0
          - step_id: 5
            step_number: 3
            is_free: true
            items:
              - item_id: 9010
                sku: telescope
                name:
                  en: Telescope
                  ru: Телескоп
                  de: Teleskop
                  fr: Télescope
                  it: Telescopio
                type: virtual_good
                description:
                  en: Allows to see the stars
                  ru: Позволяет увидеть звезды
                  de: Ermöglicht das Betrachten der Sterne
                  fr: Permet de voir les étoiles
                  it: Permette di vedere le stelle
                image_url: https://cdn.picture/vg-sku-telescope.png
                quantity: 2
                order: 0
        is_enabled: true
        is_always_visible: false
        attribute_conditions:
          - attribute: race
            operator: eq
            value: elf
            type: string
            can_be_missing: false
          - attribute: level
            operator: ge
            value: '10'
            type: number
            can_be_missing: false
          - attribute: 10_level_up_date
            operator: le
            value: '2026-01-01T00:00:00'
            type: date
            can_be_missing: false
    422-admin-offer-chain-error-invalid-chain-step-ids:
      summary: Chain step IDs not found
      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="/fr/api/shop-builder/operation/order-user-offer-chain-step-reward#tag/offer-chain-admin/operation/admin-get-offer-chain">Get
        offer chain</a> call.
      value:
        statusCode: 404
        errorCode: 6206
        errorMessage: '[0401-6206]: Chain step IDs not found'
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          chain_id: 1
          chain_step_id_list:
            - 404000
    422-admin-offer-chain-error-chain-id-mismatch:
      summary: Chain ID mismatch
      description: Offer chain ID in the request body does not match the ID in the URL.
      value:
        statusCode: 422
        errorCode: 6205
        errorMessage: >-
          [0401-6205]: Chain ID mismatch. Please, check the chain ID in your
          request body and URL
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          url_chain_id: 1
          body_chain_id: 2
    422-admin-offer-chain-error-duplicate-step-ids:
      summary: Duplicate chain step IDs
      description: Chain step IDs must be unique in the request body.
      value:
        statusCode: 422
        errorCode: 6207
        errorMessage: '[0401-6207]: Duplicate chain step IDs detected in the request body'
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          chain_step_id_list:
            - 8
            - 9
            - 10
          chain_id: 3
    422-admin-offer-chain-error-activated:
      summary: Active offer chain cannot be updated
      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.
      value:
        statusCode: 422
        errorCode: 6209
        errorMessage: >-
          [0401-6209]: Active chain cannot be updated. Please deactivate it
          first
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          chain_id: 2
  responses:
    Promotions_200-get-promotions:
      description: La liste des promotions a été reçue avec succès.
      content:
        application/json:
          schema:
            type: object
            properties:
              promotions:
                type: array
                items:
                  $ref: '#/components/schemas/Promotions_200-get-promotion-model'
              total_promotions_count:
                $ref: '#/components/schemas/total_promotions_count'
              active_promotions_count:
                $ref: '#/components/schemas/active_promotions_count'
              inactive_promotions_count:
                $ref: '#/components/schemas/inactive_promotions_count'
          examples:
            response:
              $ref: '#/components/examples/Promotions_200-admin-promotions'
    Promotions_401-invalid-basic-auth:
      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.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 401
              errorCode:
                type: integer
                example: 1020
              errorMessage:
                type: string
                example: '[0401-1020]: Error in Authentication method occurred'
          examples:
            response:
              value:
                statusCode: 401
                errorCode: 1020
                errorMessage: '[0401-1020]: Error in Authentication method occurred'
    Promotions_422-activate-deactivate-promotion:
      description: Requête non valide.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 422
              errorCode:
                type: integer
                example: 1102
              errorMessage:
                type: string
                example: >-
                  [0401-9505]: Error was occurred while promotion was being
                  updated
              transactionId:
                type: string
                example: da145238620011eb8e24fe6913ff226a
          examples:
            Error was occurred:
              $ref: '#/components/examples/422-activate-deactivate-promotion'
    200-admin-get-redeemable-by-code:
      description: La promotion a été reçue avec succès.
      content:
        application/json:
          schema:
            $ref: >-
              #/components/schemas/admin-promotions_200-get-redeemable-coupon-promotion-model
          examples:
            Promo Code Response:
              value:
                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'
                bonus: []
                is_enabled: true
                external_id: falls2023
                name:
                  ru: Скидка по промокоду на Epic Fall Hammer
                  en: Promo Code discount for Epic Fall Hammer
                redeem_total_limit: 2
                redeem_user_limit: 3
                redeem_code_limit: null
                total_limit_state:
                  available: 1
                  reserved: 1
                  used: 0
                discount:
                  percent: null
                discounted_items:
                  - sku: epic_fall_hammer_1
                    discount:
                      percent: '20.00'
            Coupon Response:
              value:
                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'
                bonus:
                  - sku: epic_fall_hammer_1
                    quantity: 3
                is_enabled: true
                external_id: coupon_fall_hammer_2
                name:
                  en: This is a Coupon code for Epic Fall Hammer
                  ru: Eto kod kupona на Epic Fall Hammer
                redeem_total_limit: 99
                redeem_user_limit: 1
                redeem_code_limit: null
    401-invalid-basic-auth:
      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.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 401
              errorCode:
                type: integer
                example: 1020
              errorMessage:
                type: string
                example: '[0401-1020]: Error in Authentication method occurred'
          examples:
            response:
              value:
                statusCode: 401
                errorCode: 1020
                errorMessage: '[0401-1020]: Error in Authentication method occurred'
    404-code-not-found:
      description: >-
        Code utilisable non trouvé. Assurez-vous que la valeur du code fourni
        est correcte.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 404
              errorCode:
                type: integer
                example: 9811
              errorMessage:
                type: string
                example: '[0401-9811]: Code not found.'
          examples:
            response:
              value:
                statusCode: 404
                errorCode: 9811
                errorMessage: '[0401-9811]: Code not found.'
    405-method-not-found:
      description: >-
        Format de code utilisable incorrect. Le code ne peut comprendre que des
        lettres et des chiffres.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 405
              errorCode:
                type: integer
                example: 0
              errorMessage:
                type: string
                example: 'Method is not allowed. Method must be one of: OPTIONS'
          examples:
            response:
              value:
                statusCode: 405
                errorCode: 0
                errorMessage: 'Method is not allowed. Method must be one of: OPTIONS'
    Promotions_200-coupon-redeemed:
      description: Le coupon a été échangé avec succès.
      content:
        application/json:
          schema:
            type: object
            properties:
              items:
                type: array
                items:
                  type: object
                  properties:
                    sku:
                      type: string
                    groups:
                      type: array
                      items:
                        type: object
                        properties:
                          external_id:
                            type: string
                          name:
                            type: string
                    name:
                      type:
                        - string
                        - 'null'
                    price:
                      type:
                        - object
                        - 'null'
                      description: Prix de l'objet.
                      properties:
                        amount:
                          type: string
                          example: '2.9900'
                          description: Prix de l'objet avec remise.
                        amount_without_discount:
                          type: string
                          example: '2.9900'
                          description: Prix de l'objet.
                        currency:
                          type: string
                          example: USD
                          description: >-
                            Devise du prix de l'objet. Code à trois lettres
                            selon [ISO
                            4217](https://en.wikipedia.org/wiki/ISO_4217).
                    type:
                      type: string
                    virtual_item_type:
                      type: string
                      example: non-consumable
                      description: "Type d'objet virtuel.\n\nValeurs possibles\_:\n- `consumable` — Objet qui disparaît de l'inventaire après utilisation (par exemple des munitions).\n- `non_consumable` — Objet conservé dans l'inventaire sans limite de durée.\n- `non_renewing_subscription` — Objet à durée limitée pouvant représenter un accès à des services ou du contenu pendant une période définie."
                      enum:
                        - consumable
                        - non_consumable
                        - non_renewing_subscription
                    virtual_prices:
                      type: array
                    description:
                      type: string
                    image_url:
                      type: string
                    quantity:
                      type: integer
                    is_free:
                      type: boolean
                    attributes:
                      type: array
                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: []
          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: []
    Promotions_401-invalid-client-auth:
      description: L'authentification n'a pas été passée ou est incorrecte.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 401
              errorCode:
                type: integer
                example: 1501
              errorMessage:
                type: string
                example: '[0401-1501]: Authorization failed: Provide authorization'
          examples:
            response:
              value:
                statusCode: 401
                errorCode: 1501
                errorMessage: '[0401-1501]: Authorization failed: Provide authorization'
    Promotions_403-auth-header:
      description: L'en-tête d'autorisation n'a pas été passé.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 403
              errorCode:
                type: integer
                example: 0
              errorMessage:
                type: string
                example: L'en-tête d'autorisation n'a pas été passé.
              transactionId:
                type: string
                example: x-x-x-x-transactionId-mock-x-x-x
          examples:
            response:
              value:
                statusCode: 403
                errorCode: 0
                errorMessage: Authorization header not sent
    Promotions_404-coupon:
      description: Entrez un code de coupon valide.
      content:
        application/json:
          schema:
            properties:
              statusCode:
                type: integer
                example: 404
              errorCode:
                type: integer
                example: 4001
              errorMessage:
                type: string
                example: '[0401-9807]: Enter valid coupon code.'
            type: object
    Promotions_422-redeem-coupon:
      description: Requête non valide.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 422
              errorCode:
                type: integer
                example: 1102
              errorMessage:
                type: string
                example: >-
                  [0401-1102]: Unprocessable Entity. The property `coupon_code`
                  is required
              transactionId:
                type: string
                example: x-x-x-x-transactionId-mock-x-x-x
          examples:
            response:
              value:
                statusCode: 422
                errorCode: 1102
                errorMessage: >-
                  [0401-1102]: Unprocessable Entity. The property `coupon_code`
                  is required
    Promotions_200-coupon-rewards:
      description: La liste des récompenses associées au coupon a été reçue avec succès.
      content:
        application/json:
          schema:
            type: object
            properties:
              bonus:
                type: array
                items:
                  $ref: '#/components/schemas/Promotions_200-coupon-bonus-reward'
              is_selectable:
                type: boolean
                description: >-
                  Si `true`, l'utilisateur doit choisir le bonus avant
                  d'échanger un coupon.
              discount:
                $ref: '#/components/schemas/Promotions_200-coupon-discount-reward'
          examples:
            response:
              $ref: '#/components/examples/Promotions_200-get-coupon-rewards'
    Promotions_422-rewards:
      description: Requête non valide.
      content:
        application/json:
          schema:
            oneOf:
              - $ref: '#/components/schemas/Promotions_422_limit_error'
              - $ref: '#/components/schemas/Promotions_422_reglock_error'
    Promotions_200-get-coupons:
      description: La liste des coupons a été reçue avec succès.
      content:
        application/json:
          schema:
            type: object
            properties:
              items:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/admin-promotions_200-get-coupon-promotion-model
              total_promotions_count:
                $ref: '#/components/schemas/total_promotions_count'
              active_promotions_count:
                $ref: '#/components/schemas/active_promotions_count'
              inactive_promotions_count:
                $ref: '#/components/schemas/inactive_promotions_count'
          examples:
            response:
              $ref: '#/components/examples/Promotions_200-admin-coupons'
    Promotions_422-invalid-coupon:
      description: Requête non valide.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 422
              errorCode:
                type: integer
                example: 1102
              errorMessage:
                type: string
                example: >-
                  [0401-1102]: Unprocessable Entity. The property `external_id`
                  is required
          examples:
            response:
              value:
                statusCode: 422
                errorCode: 1102
                errorMessage: >-
                  [0401-1102]: Unprocessable Entity. The property `external_id`
                  is required
    Promotions_404-admin-coupon:
      description: >-
        Coupon non trouvé. Assurez-vous que le paramètre `external_id` est
        correct.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 404
              errorCode:
                type: integer
                example: 4001
              errorMessage:
                type: string
                example: '[0401-9802]: Coupon not found'
              transactionId:
                type: string
                example: x-x-x-x-transactionId-mock-x-x-x
    Promotions_422-admin-promotion-error:
      description: >-
        Une erreur s'est produite lors de la réception de la promotion par le
        service de promotion.
      content:
        application/json:
          schema:
            properties:
              statusCode:
                type: integer
                example: 422
              errorCode:
                type: integer
                example: 9502
              errorMessage:
                type: string
                example: >-
                  [0401-9502]: Error occurred while receiving the promotion from
                  the promotion service
              transactionId:
                type: string
                example: x-x-x-x-transactionId-mock-x-x-x
            type: object
    Promotions_200-coupon-code-list:
      description: La liste des codes pour un coupon a été reçue avec succès.
      content:
        application/json:
          schema:
            type: object
            properties:
              codes:
                type: array
                items:
                  type: object
                  properties:
                    code:
                      $ref: '#/components/schemas/Promotions_coupon_code'
              total_count:
                type: number
                description: Nombre total de codes de coupon.
          examples:
            response:
              $ref: '#/components/examples/Promotions_200-coupon-code-list'
    Promotions_201-coupon-promocode-code-created:
      description: Le code a été créé avec succès.
      content:
        application/json:
          schema:
            type: object
            properties:
              code:
                $ref: '#/components/schemas/Promotions_coupon_code'
          examples:
            response:
              value:
                code: WINTER2021
    Promotions_422-coupon-promocode-same-code-exists:
      description: Requête non valide. Le code existe déjà.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 422
              errorCode:
                type: integer
                example: 9803
              errorMessage:
                type: string
                example: '[0401-9803]: The code already exists.'
              transactionId:
                type: string
                example: x-x-x-x-transactionId-mock-x-x-x
          examples:
            response:
              value:
                statusCode: 422
                errorCode: 9803
                errorMessage: '[0401-9803]: The code already exists.'
                transactionId: x-x-x-x-transactionId-mock-x-x-x
    Promotions_404-admin-promocode:
      description: >-
        Code promo non trouvé. Assurez-vous que le paramètre `external_id` est
        correct.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 404
              errorCode:
                type: integer
                example: 4001
              errorMessage:
                type: string
                example: '[0401-9802]: Promocode not found'
              transactionId:
                type: string
                example: x-x-x-x-transactionId-mock-x-x-x
    Promotions_200-promo-code-redeemed:
      description: Le code promo a été utilisé avec succès.
      content:
        application/json:
          schema:
            type: object
            properties:
              cart_id:
                type: string
                example: cart_id
                description: ID de panier.
              price:
                type:
                  - object
                  - 'null'
                properties:
                  amount:
                    type: string
                    example: '50.0000000000000000'
                  amount_without_discount:
                    type: string
                    example: '100.0000000000000000'
                  currency:
                    type: string
                    example: USD
                example:
                  amount: '6150.0000000000000000'
                  amount_without_discount: '6150.0000000000000000'
                  currency: USD
                description: Prix du panier.
              is_free:
                $ref: '#/components/schemas/value-is_free'
              items:
                type: array
                items:
                  type: object
                  properties:
                    sku:
                      type: string
                    groups:
                      type: array
                      items:
                        type: object
                        properties:
                          external_id:
                            type: string
                          name:
                            type: string
                    name:
                      type:
                        - string
                        - 'null'
                    type:
                      type: string
                    description:
                      type: string
                    image_url:
                      type: string
                    quantity:
                      type: integer
                    is_free:
                      $ref: '#/components/schemas/value-is_free'
                    promotions:
                      $ref: '#/components/schemas/Catalog_item_promotions'
                    can_be_bought:
                      $ref: '#/components/schemas/Can_be_bought'
                    vp_rewards:
                      $ref: '#/components/schemas/client-item-value-point-reward'
                    limits:
                      $ref: '#/components/schemas/Catalog_item_limits'
                    periods:
                      $ref: '#/components/schemas/item-periods'
                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: 123
                    sku: com.xsolla.booster_mega_1
                    type: virtual_good
                    virtual_item_type: consumable
                    virtual_prices: []
                    promotions:
                      - name: Bonus promotion
                        date_start: '2020-04-15T16:16:00+03:00'
                        date_end: '2026-04-15T16:16:00+03:00'
                        discount:
                          percent: '50.00'
                        bonus:
                          - quantity: 1
                            name: Xsolla Minigun
                            image_url: >-
                              https://cdn.xsolla.net/img/misc/images/2fc5c491a47413a8e8000447889093c2.png
                            sku: com.xsolla.minigun_1
                            type: virtual_good
                    can_be_bought: true
                    vp_rewards:
                      - item_id: 175232
                        sku: com.xsolla.value_point_1
                        amount: 130
                        name: Value point
                        image_url: >-
                          https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                        is_clan: false
                      - item_id: 186321
                        sku: com.xsolla.clan_value_point_1
                        amount: 50
                        name: Clan Reward VP 1
                        image_url: >-
                          https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                        is_clan: true
                    limits:
                      per_user:
                        available: 3
                        recurrent_schedule:
                          interval_type: weekly
                          reset_next_date: 1746057600
                        total: 5
                    periods:
                      - date_from: '2020-08-11T10:00:00+03:00'
                        date_until: '2020-08-11T20:00:00+03:00'
              rewards:
                $ref: '#/components/schemas/Promo_code_rewards'
          examples:
            response:
              value:
                cart_id: cart_id
                is_free: false
                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: false
                    name: Xsolla Booster Mega
                    price:
                      amount: '50.0000000000000000'
                      amount_without_discount: '100.0000000000000000'
                      currency: USD
                    quantity: 123
                    sku: com.xsolla.booster_mega_1
                    type: virtual_good
                    virtual_item_type: consumable
                    virtual_prices: []
                    promotions:
                      - name: Bonus promotion
                        date_start: '2020-04-15T16:16:00+03:00'
                        date_end: '2026-04-15T16:16:00+03:00'
                        discount:
                          percent: '50.00'
                        bonus:
                          - quantity: 1
                            name: Xsolla Minigun
                            image_url: >-
                              https://cdn.xsolla.net/img/misc/images/2fc5c491a47413a8e8000447889093c2.png
                            sku: com.xsolla.minigun_1
                            type: virtual_good
                    can_be_bought: true
                    vp_rewards:
                      - item_id: 175232
                        sku: com.xsolla.value_point_1
                        amount: 130
                        name: Value point
                        image_url: >-
                          https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                        is_clan: false
                      - item_id: 186321
                        sku: com.xsolla.clan_value_point_1
                        amount: 50
                        name: Clan Reward VP 1
                        image_url: >-
                          https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                        is_clan: true
                    limits:
                      per_user:
                        available: 3
                        recurrent_schedule:
                          interval_type: weekly
                          reset_next_date: 1746057600
                        total: 5
                    periods:
                      - date_from: '2020-08-11T10:00:00+03:00'
                        date_until: '2020-08-11T20:00:00+03:00'
                  - attributes: []
                    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
                    name: Sword Xsolla Skin
                    price: []
                    quantity: 1
                    sku: com.xsolla.swords_1
                    type: virtual_good
                    virtual_item_type: non_consumable
                    virtual_prices: []
                    promotions:
                      - name: Bonus promotion
                        date_start: '2020-04-15T16:16:00+03:00'
                        date_end: '2026-04-15T16:16:00+03:00'
                        discount:
                          percent: '50.00'
                        bonus:
                          - quantity: 1
                            name: Xsolla Minigun
                            image_url: >-
                              https://cdn.xsolla.net/img/misc/images/2fc5c491a47413a8e8000447889093c2.png
                            sku: com.xsolla.minigun_1
                            type: virtual_good
                    can_be_bought: true
                    vp_rewards:
                      - item_id: 175232
                        sku: com.xsolla.value_point_1
                        amount: 130
                        name: Value point
                        image_url: >-
                          https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                      - item_id: 186321
                        sku: com.xsolla.clan_value_point_1
                        amount: 50
                        name: Clan Reward VP 1
                        image_url: >-
                          https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                        is_clan: true
                    limits:
                      per_user:
                        available: 3
                        recurrent_schedule:
                          interval_type: weekly
                          reset_next_date: 1746057600
                        total: 5
                    periods:
                      - date_from: '2020-08-11T10:00:00+03:00'
                        date_until: '2020-08-11T20:00:00+03:00'
                price:
                  amount: '6150.0000000000000000'
                  amount_without_discount: '12300.0000000000000000'
                  currency: USD
                rewards:
                  bonus:
                    - item:
                        name: Sword Xsolla Skin
                        sku: com.xsolla.swords_1
                        type: virtual_good
                        virtual_item_type: non_consumable
                        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
                      quantity: 1
                  discount:
                    percent: null
                  discounted_items:
                    - sku: com.xsolla.booster_mega_1
                      discount:
                        percent: '50.00'
                  is_selectable: false
    Promotions_404-promo-code:
      description: Entrez un code promo valide.
      content:
        application/json:
          schema:
            properties:
              statusCode:
                type: integer
                example: 404
              errorCode:
                type: integer
                example: 4001
              errorMessage:
                type: string
                example: '[0401-9807]: Enter valid promo code.'
            type: object
    Promotions_200-promo-code-canceled:
      description: Le code promo est annulé avec succès.
      content:
        application/json:
          schema:
            type: object
            properties:
              cart_id:
                type: string
                example: cart_id
                description: ID de panier.
              price:
                type:
                  - object
                  - 'null'
                properties:
                  amount:
                    type: string
                    default: '50.0000000000000000'
                  amount_without_discount:
                    type: string
                    default: '100.0000000000000000'
                  currency:
                    type: string
                    default: USD
                example:
                  amount: '6150.0000000000000000'
                  amount_without_discount: '6150.0000000000000000'
                  currency: USD
                description: Prix du panier.
              is_free:
                $ref: '#/components/schemas/value-is_free'
              items:
                type: array
                items:
                  type: object
                  properties:
                    sku:
                      type: string
                    groups:
                      type: array
                      items:
                        type: object
                        properties:
                          external_id:
                            type: string
                          name:
                            type: string
                    name:
                      type:
                        - string
                        - 'null'
                    type:
                      type: string
                    virtual_item_type:
                      type: string
                      example: non-consumable
                      description: "Type d'objet virtuel.\n\nValeurs possibles\_:\n- `consumable` — Objet qui disparaît de l'inventaire après utilisation (par exemple des munitions).\n- `non_consumable` — Objet conservé dans l'inventaire sans limite de durée.\n- `non_renewing_subscription` — Objet à durée limitée pouvant représenter un accès à des services ou du contenu pendant une période définie."
                      enum:
                        - consumable
                        - non_consumable
                        - non_renewing_subscription
                    virtual_prices:
                      type: array
                    description:
                      type: string
                    attributes:
                      $ref: '#/components/schemas/client-attributes'
                    image_url:
                      type: string
                    quantity:
                      type: integer
                    is_free:
                      $ref: '#/components/schemas/value-is_free'
                    price:
                      type:
                        - object
                        - 'null'
                      description: Prix de l'objet.
                      properties:
                        amount:
                          type: string
                          example: '2.9900'
                          description: Prix de l'objet avec remise.
                        amount_without_discount:
                          type: string
                          example: '2.9900'
                          description: Prix de l'objet.
                        currency:
                          type: string
                          example: USD
                          description: >-
                            Devise du prix de l'objet. Code à trois lettres
                            selon [ISO
                            4217](https://en.wikipedia.org/wiki/ISO_4217).
                    promotions:
                      $ref: '#/components/schemas/Catalog_item_promotions'
                    can_be_bought:
                      $ref: '#/components/schemas/Can_be_bought'
                    vp_rewards:
                      $ref: '#/components/schemas/client-item-value-point-reward'
                    limits:
                      $ref: '#/components/schemas/Catalog_item_limits'
                    periods:
                      $ref: '#/components/schemas/item-periods'
                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: 123
                    sku: com.xsolla.booster_mega_1
                    type: virtual_good
                    virtual_item_type: consumable
                    virtual_prices: []
                    promotions:
                      - name: Bonus promotion
                        date_start: '2020-04-15T16:16:00+03:00'
                        date_end: '2026-04-15T16:16:00+03:00'
                        discount:
                          percent: '50.00'
                        bonus:
                          - quantity: 1
                            name: Xsolla Minigun
                            image_url: >-
                              https://cdn.xsolla.net/img/misc/images/2fc5c491a47413a8e8000447889093c2.png
                            sku: com.xsolla.minigun_1
                            type: virtual_good
                    can_be_bought: true
                    vp_rewards:
                      - item_id: 175232
                        sku: com.xsolla.value_point_1
                        amount: 130
                        name: Value point
                        image_url: >-
                          https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                      - item_id: 186321
                        sku: com.xsolla.clan_value_point_1
                        amount: 50
                        name: Clan Reward VP 1
                        image_url: >-
                          https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                        is_clan: true
                    limits:
                      per_user:
                        available: 3
                        recurrent_schedule:
                          interval_type: weekly
                          reset_next_date: 1746057600
                        total: 5
                    periods:
                      - date_from: '2020-08-11T10:00:00+03:00'
                        date_until: '2020-08-11T20:00:00+03:00'
          examples:
            response:
              value:
                cart_id: cart_id
                is_free: false
                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: false
                    name: Xsolla Booster Mega
                    price:
                      amount: '50.0000000000000000'
                      amount_without_discount: '100.0000000000000000'
                      currency: USD
                    quantity: 123
                    sku: com.xsolla.booster_mega_1
                    type: virtual_good
                    virtual_item_type: consumable
                    virtual_prices: []
                    promotions:
                      - name: Bonus promotion
                        date_start: '2020-04-15T16:16:00+03:00'
                        date_end: '2026-04-15T16:16:00+03:00'
                        discount:
                          percent: '50.00'
                        bonus:
                          - quantity: 1
                            name: Xsolla Minigun
                            image_url: >-
                              https://cdn.xsolla.net/img/misc/images/2fc5c491a47413a8e8000447889093c2.png
                            sku: com.xsolla.minigun_1
                            type: virtual_good
                    can_be_bought: true
                    vp_rewards:
                      - item_id: 175232
                        sku: com.xsolla.value_point_1
                        amount: 130
                        name: Value point
                        image_url: >-
                          https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                      - item_id: 186321
                        sku: com.xsolla.clan_value_point_1
                        amount: 50
                        name: Clan Reward VP 1
                        image_url: >-
                          https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                        is_clan: true
                    limits:
                      per_user:
                        available: 3
                        recurrent_schedule:
                          interval_type: weekly
                          reset_next_date: 1746057600
                        total: 5
                    periods:
                      - date_from: '2020-08-11T10:00:00+03:00'
                        date_until: '2020-08-11T20:00:00+03:00'
                price:
                  amount: '6150.0000000000000000'
                  amount_without_discount: '6150.0000000000000000'
                  currency: USD
    Promotions_422-cancel-promo-code:
      description: Requête non valide.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 422
              errorCode:
                type: integer
                example: 1102
              errorMessage:
                type: string
                example: >-
                  [0401-1102]: Unprocessable Entity. The property `id` is
                  required
              transactionId:
                type: string
                example: x-x-x-x-transactionId-mock-x-x-x
          examples:
            response:
              value:
                statusCode: 422
                errorCode: 1102
                errorMessage: >-
                  [0401-1102]: Unprocessable Entity. The property `id` is
                  required
    Promotions_200-promocode-rewards:
      description: >-
        La liste des récompenses associées au code promo a été reçue avec
        succès.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Promo_code_rewards'
          examples:
            response:
              $ref: '#/components/examples/Promotions_200-get-promocode-rewards'
    Promotions_200-get-promocodes:
      description: La liste des codes promo a été reçue avec succès.
      content:
        application/json:
          schema:
            type: object
            properties:
              items:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/Promotions_200-get-promocode-promotion-model
              total_promotions_count:
                $ref: '#/components/schemas/total_promotions_count'
              active_promotions_count:
                $ref: '#/components/schemas/active_promotions_count'
              inactive_promotions_count:
                $ref: '#/components/schemas/inactive_promotions_count'
          examples:
            response:
              $ref: '#/components/examples/Promotions_200-admin-promocodes'
    Promotions_200-promocode-code-list:
      description: La liste des codes pour un code promo a été reçue avec succès.
      content:
        application/json:
          schema:
            type: object
            properties:
              codes:
                type: array
                items:
                  type: object
                  properties:
                    code:
                      $ref: '#/components/schemas/Promotions_coupon_code'
              total_count:
                type: number
                description: Nombre total de codes pour un code promo.
          examples:
            response:
              $ref: '#/components/examples/Promotions_200-coupon-code-list'
    Promotions_200-get-item-promotions:
      description: La liste des promotions sur des objets a été reçue avec succès.
      content:
        application/json:
          schema:
            type: object
            properties:
              promotions:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: integer
                      description: >-
                        ID de la promotion. Identifiant unique de la promotion
                        au sein du projet.
                    promotion_periods:
                      $ref: '#/components/schemas/promotion_periods'
                    is_enabled:
                      $ref: '#/components/schemas/Promotions_is_enabled'
                    name:
                      type: object
                      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.
                      additionalProperties:
                        type: string
                      example:
                        en-US: Promotion
                        ru-RU: Акция
                    discount:
                      type: object
                      properties:
                        percent:
                          type:
                            - string
                            - 'null'
                          description: >-
                            Pourcentage de la remise.

                            Le prix de l'objet sera diminué d'une valeur
                            calculée à l'aide de ce pourcentage.
                          default: '10.00'
                    items:
                      type:
                        - array
                        - 'null'
                      items:
                        description: Liste des objets qui seront concernés par la remise.
                        type: object
                        properties:
                          sku:
                            type:
                              - string
                              - 'null'
                            description: UGS de l'objet.
                            default: elven_sword
                    attribute_conditions:
                      $ref: >-
                        #/components/schemas/promotion_user-attribute_conditions_model-get
                    limits:
                      $ref: >-
                        #/components/schemas/Promotions_promotion_limits_response
                    excluded_promotions:
                      $ref: '#/components/schemas/excluded_promotions'
                    price_conditions:
                      $ref: '#/components/schemas/price_conditions_discount'
              total_promotions_count:
                $ref: '#/components/schemas/total_promotions_count'
              active_promotions_count:
                $ref: '#/components/schemas/active_promotions_count'
              inactive_promotions_count:
                $ref: '#/components/schemas/inactive_promotions_count'
          examples:
            response:
              value:
                promotions:
                  - id: 1
                    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'
                    is_enabled: true
                    discount:
                      percent: '20.00'
                    items:
                      - sku: com.xsolla.elven_sword_1
                    name:
                      en-US: Promotion
                      ru-RU: Акция
                    limits:
                      per_user: null
                      per_item: null
                      recurrent_schedule: null
                  - id: 2
                    promotion_periods:
                      - date_from: '2020-04-15T18:16:00+05:00'
                        date_until: '2020-04-25T18:16:00+05:00'
                    is_enabled: true
                    discount:
                      percent: '10.00'
                    items:
                      - sku: com.xsolla.elven_helmet_1
                      - sku: com.xsolla.elven_armor_1
                    name:
                      en-US: Promotion
                      ru-RU: Акция
                    limits:
                      per_user:
                        total: 10
                      per_item: null
                      recurrent_schedule:
                        per_user:
                          interval_type: daily
                          time: 11:00:00+08:00
                          reset_next_date: 1677553200
                          displayable_reset_start_date: '2023-02-28T11:00:00+08:00'
                          displayable_reset_next_date: '2023-02-28T11:00:00+08:00'
                    excluded_promotions:
                      - 1
                      - 3
                  - id: 3
                    promotion_periods:
                      - date_from: '2020-04-15T18:16:00+05:00'
                        date_until: '2020-04-25T18:16:00+05:00'
                    is_enabled: true
                    discount:
                      percent: '10.00'
                    items:
                      - sku: com.xsolla.elven_helmet_2
                      - sku: com.xsolla.elven_armor_2
                    name:
                      en-US: Promotion
                      ru-RU: Акция
                    limits:
                      per_user:
                        total: 10
                      per_item: null
                      recurrent_schedule:
                        per_user:
                          interval_type: daily
                          time: 11:00:00+08:00
                          reset_next_date: 1677553200
                          displayable_reset_start_date: '2023-02-28T11:00:00+08:00'
                          displayable_reset_next_date: '2023-02-28T11:00:00+08:00'
                    price_conditions:
                      - operator: gt
                        value: '10.0000'
                      - operator: lt
                        value: '20.0000'
                  - id: 4
                    promotion_periods:
                      - date_from: '2020-04-15T18:16:00+05:00'
                        date_until: '2020-04-25T18:16:00+05:00'
                    is_enabled: true
                    discount:
                      percent: '10.00'
                    items: null
                    name:
                      en-US: Promotion
                      ru-RU: Акция
                    limits:
                      per_user:
                        total: 10
                      per_item: null
                      recurrent_schedule:
                        per_user:
                          interval_type: daily
                          time: 11:00:00+08:00
                          reset_next_date: 1677553200
                          displayable_reset_start_date: '2023-02-28T11:00:00+08:00'
                          displayable_reset_next_date: '2023-02-28T11:00:00+08:00'
                    price_conditions:
                      - operator: lt
                        value: '20.0000'
                total_promotions_count: 4
                active_promotions_count: 4
                inactive_promotions_count: 0
    Promotions_201-create-promotion:
      description: La promotion a été créée avec succès.
      content:
        application/json:
          schema:
            type: object
            properties:
              promotion_id:
                type: integer
                description: >-
                  ID de la promotion. Identifiant unique de la promotion au sein
                  du projet.
          examples:
            response:
              value:
                promotion_id: 2384756
    Promotions_422-admin-promotion-missed-items-property:
      description: Requête non valide.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 422
              errorCode:
                type: integer
                example: 1102
              errorMessage:
                type: string
                example: >-
                  [0401-1102]:  Unprocessable Entity. The property `items` is
                  required
              transactionId:
                type: string
                example: x-x-x-x-transactionId-mock-x-x-x
          examples:
            response:
              value:
                statusCode: 422
                errorCode: 1102
                errorMessage: >-
                  [0401-1102]: Unprocessable Entity. The property `items` is
                  required
                transactionId: x-x-x-x-transactionId-mock-x-x-x
    Promotions_404-admin-promotion:
      description: >-
        Promotion non trouvée. Assurez-vous que le paramètre `promotion_id` est
        correct.
      content:
        application/json:
          schema:
            properties:
              statusCode:
                type: integer
                example: 404
              errorCode:
                type: integer
                example: 9502
              errorMessage:
                type: string
                example: >-
                  [0401-9502]: Can not find promotion with ID = 111425 in
                  project 59080
            type: object
          examples:
            response:
              value:
                statusCode: 404
                errorCode: 9502
                errorMessage: >-
                  [0401-9502]: Can not find promotion with ID = 111425 in
                  project 59080
    Promotions_200-get-bonus-promotions:
      description: La liste des promotions par bonus a été reçue avec succès.
      content:
        application/json:
          schema:
            type: object
            properties:
              promotions:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/Promotions_200-get-bonus-promotion-model
              total_promotions_count:
                $ref: '#/components/schemas/total_promotions_count'
              active_promotions_count:
                $ref: '#/components/schemas/active_promotions_count'
              inactive_promotions_count:
                $ref: '#/components/schemas/inactive_promotions_count'
          examples:
            response:
              value:
                promotions:
                  - id: 1
                    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'
                    name:
                      en-US: New Year Bonus
                      de-DE: Neujahrsbonus
                    is_enabled: true
                    condition:
                      - sku: com.xsolla.elven_boots_1
                      - sku: com.xsolla.elven_knife_1
                    bonus:
                      - sku: com.xsolla.elven_sword_1
                        quantity: 1
                      - sku: com.xsolla.elven_shield_1
                        quantity: 2
                      - sku: com.xsolla.elven_gloves_1
                        quantity: 2
                    limits:
                      per_user: null
                      per_item: null
                      recurrent_schedule: null
                  - id: 2
                    promotion_periods:
                      - date_from: '2020-04-15T18:16:00+05:00'
                        date_until: '2020-04-25T18:16:00+05:00'
                    name:
                      en-US: Summer season bonus
                      de-DE: Sommersaison Bonus
                    is_enabled: true
                    condition: null
                    bonus:
                      - sku: com.xsolla.diamonds_1
                        quantity: 100
                    limits:
                      per_user:
                        total: 10
                      per_item: null
                      recurrent_schedule:
                        per_user:
                          interval_type: daily
                          time: 11:00:00+08:00
                          reset_next_date: 1677553200
                          displayable_reset_start_date: '2023-02-28T11:00:00+08:00'
                          displayable_reset_next_date: '2023-02-28T11:00:00+08:00'
                    price_conditions:
                      - operator: gt
                        value: '10.0000'
                      - operator: lt
                        value: '50.0000'
                    excluded_promotions:
                      - 1
                total_promotions_count: 2
                active_promotions_count: 2
                inactive_promotions_count: 0
    Promotions_422-admin-promotion-missed-bonus-property:
      description: Requête non valide.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 422
              errorCode:
                type: integer
                example: 1102
              errorMessage:
                type: string
                example: >-
                  [0401-1102]:  Unprocessable Entity. The property `bonus` is
                  required
              transactionId:
                type: string
                example: x-x-x-x-transactionId-mock-x-x-x
          examples:
            response:
              value:
                statusCode: 422
                errorCode: 1102
                errorMessage: >-
                  [0401-1102]: Unprocessable Entity. The property `bonus` is
                  required
                transactionId: x-x-x-x-transactionId-mock-x-x-x
    Promotions_200-admin-get-bonus-promotion:
      description: La promotion par bonus a été reçue avec succès.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Promotions_200-get-bonus-promotion-model'
          examples:
            response:
              value:
                id: 1
                promotion_periods:
                  - date_from: '2020-04-15T18:16:00+05:00'
                    date_until: '2020-04-25T18:16:00+05:00'
                name:
                  en-US: New Year Bonus
                  de-DE: Neujahrsbonus
                is_enabled: true
                condition:
                  - sku: com.xsolla.elven_boots_1
                  - sku: com.xsolla.elven_knife_1
                bonus:
                  - sku: com.xsolla.elven_sword_1
                    quantity: 1
                  - sku: com.xsolla.elven_shield_1
                    quantity: 2
                  - sku: com.xsolla.elven_gloves_1
                    quantity: 2
                limits:
                  per_user:
                    total: 10
                  per_item: null
                  recurrent_schedule:
                    per_user:
                      interval_type: daily
                      time: 11:00:00+08:00
                      reset_next_date: 1677553200
                      displayable_reset_start_date: '2023-02-28T11:00:00+08:00'
                      displayable_reset_next_date: '2023-02-28T11:00:00+08:00'
                excluded_promotions:
                  - 23
                  - 45
                price_conditions:
                  - operator: gt
                    value: '10.0000'
                  - operator: lt
                    value: '50.0000'
    Promotions_200-verify-promo-code:
      description: Informations sur le code.
      content:
        application/json:
          schema:
            type: object
            properties:
              type:
                type: string
                description: "Type de code\_: `promocode`/`coupon`."
              code:
                $ref: '#/components/schemas/Promotions_coupon_code'
              rewards:
                oneOf:
                  - $ref: '#/components/schemas/Coupon_rewards'
                  - $ref: '#/components/schemas/Promo_code_rewards_verify'
          examples:
            coupon info:
              value:
                type: coupon
                code: WINTER2023
                rewards:
                  bonus:
                    - item:
                        sku: com.xsolla.game_1
                        name: Game name
                        type: unit
                        description: Game description
                        image_url: >-
                          https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png
                        unit_items:
                          - sku: com.xsolla.game_key_01
                            name: Game name
                            type: game_key
                            is_free: false
                            drm_name: Steam
                            drm_sku: steam_key_1
                          - sku: com.xsolla.game_key_02
                            name: Game name
                            type: game_key
                            drm_name: Origin
                            drm_sku: origin_key_1
                      quantity: 1
                    - item:
                        sku: com.xsolla.game_2
                        name: Game name
                        type: unit
                        description: Game description
                        image_url: >-
                          https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png
                        unit_items:
                          - sku: com.xsolla.game_key_01
                            type: game_key
                            name: Game name
                            drm_name: Steam
                            drm_sku: steam_key_1
                      quantity: 2
                  is_selectable: true
            promocode info:
              value:
                type: promocode
                code: SUMMER2023
                rewards:
                  bonus:
                    - item:
                        sku: com.xsolla.game_2
                        name: Game name
                        type: unit
                        description: Game description
                        image_url: >-
                          https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png
                        unit_items:
                          - sku: com.xsolla.game_key_01
                            type: game_key
                            name: Game name
                            drm_name: Steam
                            drm_sku: steam_key_1
                      quantity: 2
                  discount:
                    percent: '10.00'
                  discounted_items:
                    - sku: com.xsolla.elven_sword_1
                      name: Elven sword
                      type: virtual_good
                      description: sword
                      image_url: null
                      discount:
                        percent: '10.00'
                  is_selectable: true
    Promotions_404-verify-promo-code:
      description: Code non trouvé. Assurez-vous que la valeur de `code` est correcte.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 404
              errorCode:
                type: integer
                example: 9811
              errorMessage:
                type: string
                example: '[0401-9811]: Code not found.'
              transactionId:
                type: string
                example: x-x-x-x-transactionId-mock-x-x-x
    Promotions_422-verify-promo-code:
      description: Code promo non valide.
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: integer
              statusCode:
                type: integer
              errorMessage:
                type: string
          examples:
            code redemption limit:
              value:
                errorCode: 9804
                statusCode: 422
                errorMessage: '[0401-9804]: You have reached the coupon redemption limit.'
            regionally restricted:
              value:
                errorCode: 9808
                statusCode: 422
                errorMessage: '[0401-9808]: Coupon is not available in your region.'
    Promotions_200-get-unique-catalog-offers:
      description: La liste des coupons a été reçue avec succès.
      content:
        application/json:
          schema:
            type: object
            properties:
              items:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/Promotions_200-get-unique-catalog-offer-promotion-model
              total_promotions_count:
                $ref: '#/components/schemas/total_promotions_count'
              active_promotions_count:
                $ref: '#/components/schemas/active_promotions_count'
              inactive_promotions_count:
                $ref: '#/components/schemas/inactive_promotions_count'
          examples:
            response:
              $ref: '#/components/examples/Promotions_200-admin-unique-catalog-offers'
    Promotions_200-unique-catalog-offer-code-list:
      description: >-
        La liste des codes d'offres uniques dans le catalogue a été reçue avec
        succès.
      content:
        application/json:
          schema:
            type: object
            properties:
              codes:
                type: array
                items:
                  type: object
                  properties:
                    code:
                      $ref: '#/components/schemas/Promotions_coupon_code'
              total_count:
                type: number
                description: Nombre total de codes d'offres uniques dans le catalogue.
          examples:
            response:
              $ref: '#/components/examples/Promotions_200-coupon-code-list'
    200-admin-get-user-promo-code-limits:
      description: >-
        Les limites du code promo pour un utilisateur ont été reçues avec
        succès.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/User-limit-promo-code'
          examples:
            response:
              value:
                per_user:
                  total: 10
                  available: 9
    Common_401-invalid-basic-auth:
      description: >-
        Basic authentication credentials are not provided or are incorrect. Make
        sure you use basic authentication and verify that your credentials are
        correct.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 401
              errorCode:
                type: integer
                example: 1020
              errorMessage:
                type: string
                example: '[0401-1020]: Error in Authentication method occurred'
          examples:
            response:
              value:
                statusCode: 401
                errorCode: 1020
                errorMessage: '[0401-1020]: Error in Authentication method occurred'
    200-admin-get-user-coupon-limits:
      description: Les limites du coupon pour un utilisateur ont été reçues avec succès.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/User-limit-coupon'
          examples:
            response:
              value:
                per_user:
                  total: 10
                  available: 9
    200-admin-get-code-promo-code-limits:
      description: Les limites du code promo ont été reçues avec succès pour le code.
      content:
        application/json:
          schema:
            type: object
            properties:
              promotion_id:
                type: integer
                description: >-
                  ID de la promotion. Identifiant unique de la promotion au sein
                  du projet.
              items:
                type: array
                items:
                  $ref: '#/components/schemas/Code-limit-promo-code'
              total_items_count:
                type: number
                description: Nombre total de codes.
              has_more:
                type: boolean
                description: S'il existe une autre page avec des codes.
          examples:
            response:
              $ref: '#/components/examples/code-limit'
    200-admin-get-code-coupon-limits:
      description: Les limites du coupon ont été reçues avec succès pour le code.
      content:
        application/json:
          schema:
            type: object
            properties:
              promotion_id:
                type: integer
                description: >-
                  ID de la promotion. Identifiant unique de la promotion au sein
                  du projet.
              items:
                type: array
                items:
                  $ref: '#/components/schemas/Code-limit-promo-code'
              total_items_count:
                type: number
                description: Nombre total de codes.
              has_more:
                type: boolean
                description: S'il existe une autre page avec des codes.
          examples:
            response:
              $ref: '#/components/examples/code-limit'
    Common_401-complex:
      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.
      content:
        application/json:
          schema:
            properties:
              statusCode:
                type: integer
                example: 401
              errorCode:
                type: integer
                example: 1501
              errorMessage:
                type: string
                example: >-
                  [0401-1501]: Authorization failed: Authorization header not
                  sent
              transactionId:
                type: string
                example: x-x-x-x-transactionId-mock-x-x-x
            type: object
          examples:
            Authorization header not sent:
              $ref: '#/components/examples/401-complex-auth-header-not-found'
            Incorrect credentials:
              $ref: '#/components/examples/401-complex-auth-incorrect-credentials'
    403-auth-header-not-sent:
      description: L'en-tête d'autorisation n'a pas été passé.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 403
              errorCode:
                type: integer
                example: 0
              errorMessage:
                type: string
                example: L'en-tête d'autorisation n'a pas été passé.
              transactionId:
                type: string
                example: x-x-x-x-transactionId-mock-x-x-x
          examples:
            response:
              value:
                statusCode: 403
                errorCode: 0
                errorMessage: Authorization header not sent
    Common_422-body-validation:
      description: Erreur de validation de la requête.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/422-invalid-request'
          examples:
            response:
              value:
                statusCode: 422
                errorCode: 1102
                errorMessage: >-
                  [0401-1102]: Unprocessable Entity. The property `name` is
                  required
                transactionId: da145238620011eb8e24fe6913ff226a
    200-admin-get-user-promotion-limits:
      description: >-
        Les limites de la promotion pour un utilisateur ont été reçues avec
        succès.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/User-limit-promotion'
          examples:
            response:
              value:
                per_user:
                  total: 10
                  available: 9
    200-admin-get-value-points:
      description: La liste des points de valeur a été reçue avec succès.
      content:
        application/json:
          examples:
            response:
              $ref: >-
                #/components/examples/200-value-points-reward-chain_admin_get-value-point-list
          schema:
            type: object
            properties:
              items:
                type: array
                items:
                  $ref: '#/components/schemas/Value-points-item-model'
    201-admin-create-value-point:
      description: Le point de valeur a été créé avec succès.
      content:
        application/json:
          examples:
            response:
              value:
                sku: com.xsolla.item_new
                item_id: 10
          schema:
            type: object
            properties:
              sku:
                type: string
                example: new-sku
              item_id:
                type: integer
                example: 10
    422-admin-create-update-rc-vp-invalid-request:
      description: Requête non valide.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/422-rc-vp-invalid-request'
          examples:
            The property `sku` is required:
              $ref: '#/components/examples/422-property-sku-is-required'
    200-admin-get-value-point:
      description: Le point de valeur spécifié a été reçu avec succès.
      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'
    200-admin-get-list-value-point-rewards:
      description: >-
        La liste des objets avec des récompenses en points de valeur a été reçue
        avec succès.
      content:
        application/json:
          examples:
            response:
              $ref: '#/components/examples/200-value-points-rewards-list'
          schema:
            type: object
            properties:
              items:
                type: array
                items:
                  $ref: '#/components/schemas/admin-item-value-point-reward'
    sellable-item-by-sku_404:
      description: >-
        Objet non trouvé. Assurez-vous que les paramètres `project_id` et `sku`
        sont corrects.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 404
              errorCode:
                type: integer
                example: 4001
              errorMessage:
                type: string
                example: '[0401-4001]: Item with sku = ''electric_shiel'' not found'
    200-client-get-reward-chains-list:
      description: La chaîne de récompenses de l'utilisateur a été récupérée avec succès.
      content:
        application/json:
          examples:
            response:
              $ref: '#/components/examples/200-client-get-reward-chains-list'
          schema:
            type: object
            properties:
              has_more:
                type: boolean
                example: true
                description: Utilisé pour indiquer qu'il y a plus de pages.
              total_items_count:
                type: integer
                example: 10
                description: Nombre total de chaînes de récompenses dans le système.
              items:
                type: array
                items:
                  $ref: '#/components/schemas/client-reward-chain-item-model'
    200-client-get-user-reward-chain-balance:
      description: >-
        Le solde de points de valeur de l'utilisateur a été récupéré avec
        succès.
      content:
        application/json:
          examples:
            common:
              $ref: '#/components/examples/200-client-get-user-reward-chain-balance'
            clan:
              $ref: >-
                #/components/examples/200-client-get-user-clan-reward-chain-balance
          schema:
            type: object
            properties:
              sku:
                $ref: '#/components/schemas/value-point-sku'
              name:
                $ref: '#/components/schemas/value-point-name'
              image_url:
                $ref: '#/components/schemas/Common_admin-image_url'
              description:
                $ref: '#/components/schemas/value-point-description'
              long_description:
                $ref: '#/components/schemas/value-point-long-description'
              amount:
                type: integer
                description: Quantité de points de valeur.
              is_clan:
                $ref: '#/components/schemas/is_clan'
    404-reward-chain-step-not-found:
      description: Étape de chaîne de récompenses introuvable.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 404
              errorCode:
                type: integer
                example: 9911
              errorMessage:
                type: string
                example: '[0401-9911]: Reward chain step not found.'
          examples:
            response:
              value:
                statusCode: 404
                errorCode: 9911
                errorMessage: '[0401-9911]: Reward chain step not found.'
    422-reward-chain-step-reward-can-not-claimed:
      description: Impossible de réclamer la récompense de l'étape.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 422
              errorCode:
                type: integer
                example: 9912
              errorMessage:
                type: string
                example: '[0401-9912]: Can''t claim the step reward.'
          examples:
            Reward chain step reward already claimed:
              value:
                statusCode: 422
                errorCode: 9912
                errorMessage: '[0401-9912]: Reward already claimed.'
            Not enough VP to claim reward chain step reward:
              value:
                statusCode: 422
                errorCode: 9913
                errorMessage: '[0401-9913]: Not enough value points to claim step reward.'
    200-client-update-user-clan:
      description: Le clan de l'utilisateur a été mis à jour avec succès.
      content:
        application/json:
          examples:
            response:
              $ref: '#/components/examples/200-client-update-user-clan'
          schema:
            type: object
            properties:
              reward:
                type: array
                items:
                  type: object
                  properties:
                    sku:
                      $ref: '#/components/schemas/sku'
                    name:
                      type: string
                      example: Super box
                      description: Nom de l'objet.
                    type:
                      type: string
                      example: bundle
                      description: Type d'objet.
                    description:
                      type: string
                      example: Super box with items
                      description: Item description.
                    image_url:
                      $ref: '#/components/schemas/Common_admin-image_url'
                    quantity:
                      type: integer
                      example: 2
                      description: Quantité de l'objet.
                    bundle_type:
                      type: string
                      description: Type de lot. Renvoyé si le type d'objet est un lot.
                      enum:
                        - standard
                        - virtual_currency_package
    200-admin-get-list-reward-chains:
      description: La liste des chaînes de récompenses a été reçue avec succès.
      content:
        application/json:
          examples:
            response:
              $ref: '#/components/examples/200-reward-chain-list'
          schema:
            type: object
            properties:
              has_more:
                $ref: '#/components/schemas/Pagination_has-more'
              items:
                type: array
                items:
                  oneOf:
                    - $ref: >-
                        #/components/schemas/admin-get-reward-chain-item-basic-model
                    - $ref: >-
                        #/components/schemas/admin-get-reward-chain-item-clan-basic-model
    201-admin-create-reward-chain:
      description: La chaîne de récompenses a été créée avec succès.
      content:
        application/json:
          examples:
            response:
              value:
                reward_chain_id: 10
          schema:
            type: object
            properties:
              reward_chain_id:
                type: integer
                example: 10
    200-admin-get-reward-chain:
      description: La chaîne de récompenses spécifiée a été reçue avec succès.
      content:
        application/json:
          examples:
            common:
              $ref: '#/components/examples/200-reward-chain'
            clan:
              $ref: '#/components/examples/200-clan-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
    404-admin-reward-chain-not-found:
      description: Chaîne de récompenses introuvable.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 404
              errorCode:
                type: integer
                example: 4001
              errorMessage:
                type: string
                example: '[0401-4001]: Reward chain not found'
          examples:
            response:
              value:
                statusCode: 404
                errorCode: 9901
                errorMessage: '[0401-4001]: Reward chain not found'
    204-admin-update-reward-chain:
      description: La chaîne de récompenses a été mise à jour avec succès.
      content: {}
    204-admin-delete-reward-chain:
      description: La chaîne de récompenses a été supprimée avec succès.
      content: {}
    204-admin-toggle-reward-chain:
      description: La chaîne de récompenses a été désactivée/activée.
      content: {}
    204-admin-reset-reward-chain:
      description: La chaîne des récompenses a été réinitialisée.
      content: {}
    200-admin-get-list-daily-chains:
      description: Liste des récompenses quotidiennes récupérée avec succès.
      content:
        application/json:
          examples:
            response:
              $ref: '#/components/examples/200-admin-daily-chain-list'
          schema:
            type: object
            properties:
              has_more:
                $ref: '#/components/schemas/Pagination_has-more'
              total_items_count:
                type: integer
                example: 3
                description: Nombre total de récompenses quotidiennes.
              items:
                type: array
                items:
                  $ref: '#/components/schemas/admin-daily-chain-short-model'
    201-admin-create-daily-chain:
      description: Récompense quotidienne créée avec succès.
      content:
        application/json:
          examples:
            response:
              value:
                daily_chain_id: 10
          schema:
            type: object
            properties:
              daily_chain_id:
                type: integer
                example: 10
    422-admin-create-error-list:
      description: Erreurs de configuration de la récompense quotidienne.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/daily-chain-error-model'
          examples:
            too-many-steps-error:
              $ref: '#/components/examples/422-admin-daily-chain-error-too-many-steps'
            incorrect-steps-order-error:
              $ref: >-
                #/components/examples/422-admin-daily-chain-error-incorrect-steps-order
            item-limit-exceeded:
              $ref: >-
                #/components/examples/422-admin-daily-chain-error-item-limit-exceeded
            incorrect-items:
              $ref: >-
                #/components/examples/422-admin-daily-chain-error-incorrect-items
            invalid-dates:
              $ref: '#/components/examples/422-admin-daily-chain-error-invalid-dates'
            incorrect-period:
              $ref: >-
                #/components/examples/422-admin-daily-chain-error-incorrect-period
    200-admin-get-daily-chain:
      description: Données de la récompense quotidienne récupérées avec succès.
      content:
        application/json:
          examples:
            response:
              $ref: '#/components/examples/200-admin-daily-chain'
          schema:
            $ref: '#/components/schemas/admin-daily-chain-long-model'
    404-daily-chain-not-found:
      description: Récompense quotidienne non trouvée.
      content:
        application/json:
          examples:
            not-found:
              $ref: '#/components/examples/404-daily-chain-not-found'
          schema:
            $ref: '#/components/schemas/daily-chain-error-model'
    422-admin-update-error-list:
      description: Erreurs de configuration de la récompense quotidienne.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/daily-chain-error-model'
          examples:
            too-many-steps-error:
              $ref: '#/components/examples/422-admin-daily-chain-error-too-many-steps'
            incorrect-steps-order-error:
              $ref: >-
                #/components/examples/422-admin-daily-chain-error-incorrect-steps-order
            item-limit-exceeded:
              $ref: >-
                #/components/examples/422-admin-daily-chain-error-item-limit-exceeded
            incorrect-items:
              $ref: >-
                #/components/examples/422-admin-daily-chain-error-incorrect-items
            invalid-dates:
              $ref: '#/components/examples/422-admin-daily-chain-error-invalid-dates'
            incorrect-period:
              $ref: >-
                #/components/examples/422-admin-daily-chain-error-incorrect-period
            invalid-chain-step-ids:
              $ref: >-
                #/components/examples/422-admin-daily-chain-error-invalid-chain-step-ids
            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
            active-daily-chain:
              $ref: '#/components/examples/422-admin-daily-chain-error-activated'
    200-client-get-daily-chains-list:
      description: Récompenses quotidiennes de l'utilisateur récupérées avec succès.
      content:
        application/json:
          examples:
            response:
              $ref: '#/components/examples/200-client-daily-chain-list'
          schema:
            type: object
            properties:
              has_more:
                type: boolean
                example: true
                description: Utilisé pour indiquer qu'il y a plus de pages.
              total_items_count:
                type: integer
                example: 3
                description: Nombre total de récompenses quotidiennes.
              items:
                type: array
                items:
                  $ref: '#/components/schemas/client-daily-chain-model'
    401-client-auth-error:
      description: L'authentification n'a pas été passée ou est incorrecte.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 401
              errorCode:
                type: integer
                example: 1501
              errorMessage:
                type: string
                example: '[0401-1501]: Authorization failed: Provide authorization'
          examples:
            response:
              value:
                statusCode: 401
                errorCode: 1501
                errorMessage: '[0401-1501]: Authorization failed: Provide authorization'
    404-daily-chain-step-not-found:
      description: Récompense quotidienne ou étape de récompense quotidienne non trouvée.
      content:
        application/json:
          examples:
            not-found:
              $ref: '#/components/examples/404-daily-chain-step-not-found'
          schema:
            $ref: '#/components/schemas/daily-chain-error-model'
    200-client-get-offer-chains-list:
      description: Liste de chaînes d'offres reçue avec succès.
      content:
        application/json:
          examples:
            response:
              $ref: '#/components/examples/200-client-offer-chain-list'
          schema:
            type: object
            properties:
              has_more:
                type: boolean
                example: true
                description: Indique si d'autres pages sont disponibles.
              total_items_count:
                type: integer
                example: 10
                description: Nombre total de chaînes d'offres disponibles.
              items:
                type: array
                items:
                  $ref: '#/components/schemas/client-offer-chain-model'
    404-offer-chain-not-found:
      description: Chaîne d'offres non trouvée.
      content:
        application/json:
          examples:
            not-found:
              $ref: '#/components/examples/404-offer-chain-not-found'
          schema:
            $ref: '#/components/schemas/offer-chain-error-model'
    404-offer-chain-step-not-found:
      description: Chaîne d'offres ou étape non trouvée.
      content:
        application/json:
          examples:
            not-found:
              $ref: '#/components/examples/404-offer-chain-step-not-found'
          schema:
            $ref: '#/components/schemas/offer-chain-error-model'
    Cart-Payment_200-order-created:
      description: La commande a été créée avec succès.
      content:
        application/json:
          schema:
            type: object
            properties:
              order_id:
                type: integer
                description: ID de commande.
              token:
                type: string
                description: Jeton de paiement.
          examples:
            response:
              value:
                order_id: 641
                token: f4puMEFFDZcx9nv5HoNHIkPe9qghvBQo
    200-admin-get-list-offer-chains:
      description: Liste de chaînes d'offres récupérée avec succès.
      content:
        application/json:
          examples:
            response:
              $ref: '#/components/examples/200-admin-offer-chain-list'
          schema:
            type: object
            properties:
              has_more:
                $ref: '#/components/schemas/Pagination_has-more'
              items:
                type: array
                items:
                  $ref: '#/components/schemas/admin-offer-chain-short-model'
    201-admin-create-offer-chain:
      description: Chaîne d'offres créée avec succès.
      content:
        application/json:
          examples:
            response:
              value:
                offer_chain_id: 10
          schema:
            type: object
            properties:
              offer_chain_id:
                type: integer
                example: 10
    422-create-error-list:
      description: Configuration de la chaîne d'offres non valide.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/offer-chain-error-model'
          examples:
            too-many-steps-error:
              $ref: '#/components/examples/422-admin-offer-chain-error-too-many-steps'
            incorrect-steps-order-error:
              $ref: >-
                #/components/examples/422-admin-offer-chain-error-incorrect-steps-order
            item-limit-exceeded:
              $ref: >-
                #/components/examples/422-admin-offer-chain-error-item-limit-exceeded
            incorrect-items:
              $ref: >-
                #/components/examples/422-admin-offer-chain-error-incorrect-items
            invalid-dates:
              $ref: '#/components/examples/422-admin-offer-chain-error-invalid-dates'
            incorrect-period:
              $ref: >-
                #/components/examples/422-admin-offer-chain-error-incorrect-period
    200-admin-get-offer-chain:
      description: Données de la chaîne d'offres récupérées avec succès.
      content:
        application/json:
          examples:
            response:
              $ref: '#/components/examples/200-admin-offer-chain'
          schema:
            $ref: '#/components/schemas/admin-offer-chain-long-model'
    422-update-error-list:
      description: Configuration de la chaîne d'offres non valide.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/offer-chain-error-model'
          examples:
            too-many-steps-error:
              $ref: '#/components/examples/422-admin-offer-chain-error-too-many-steps'
            incorrect-steps-order-error:
              $ref: >-
                #/components/examples/422-admin-offer-chain-error-incorrect-steps-order
            item-limit-exceeded:
              $ref: >-
                #/components/examples/422-admin-offer-chain-error-item-limit-exceeded
            incorrect-items:
              $ref: >-
                #/components/examples/422-admin-offer-chain-error-incorrect-items
            invalid-dates:
              $ref: '#/components/examples/422-admin-offer-chain-error-invalid-dates'
            incorrect-period:
              $ref: >-
                #/components/examples/422-admin-offer-chain-error-incorrect-period
            invalid-chain-step-ids:
              $ref: >-
                #/components/examples/422-admin-offer-chain-error-invalid-chain-step-ids
            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
            active-offer-chain:
              $ref: '#/components/examples/422-admin-offer-chain-error-activated'
    Upsell-404-item-not-found:
      description: Objet non trouvé.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 404
              errorCode:
                type: integer
                example: 4001
              errorMessage:
                type: string
                example: '[0401-4001]: Items weren''t found: sku1, sku2'
          examples:
            response:
              value:
                statusCode: 404
                errorCode: 9901
                errorMessage: '[0401-4001]: Items weren''t found: sku1, sku2'
    Upsell-422-invalid-request:
      description: Requête non valide.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Upsell-422-invalid-request'
    Upsell-200-get-client-list:
      description: Liste des objets de vente incitative reçue avec succès.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Upsell_item-list'
          examples:
            response:
              value:
                has_more: true
                items:
                  - sku: com.xsolla.big_rocket_1
                    name: Big Rocket
                    groups:
                      - external_id: accessory
                        name:
                          en: accessory
                    attributes:
                      - external_id: stack_size
                        name:
                          en: Quantity of items in the upsell set
                        values:
                          - external_id: size_e3364991f92e751689a68b96598a5a5a84010b85
                            value: '5'
                    type: virtual_good
                    description: Big Rocket - description
                    image_url: >-
                      https://popmedia.blob.core.windows.net/popyourself/male/outfit/male_armor_white_a-01.png
                    is_free: false
                    price:
                      amount: '100.99'
                      amount_without_discount: '100.99'
                      currency: USD
                    virtual_prices:
                      - amount: 100
                        sku: com.xsolla.vc_1
                        is_default: true
                        amount_without_discount: 100
                        image_url: http://image.png
                        name: SHOTGUN FOR TRUE RAIDERS
                        type: virtual_currency
                        description: description
                    can_be_bought: true
                    virtual_item_type: non_renewing_subscription
                    promotions:
                      - name: Bonus promotion
                        date_start: '2020-04-15T16:16:00+03:00'
                        date_end: '2026-04-15T16:16:00+03:00'
                        discount: null
                        bonus:
                          - quantity: 1
                            name: Xsolla Minigun
                            image_url: >-
                              https://cdn.xsolla.net/img/misc/images/2fc5c491a47413a8e8000447889093c2.png
                            sku: com.xsolla.minigun_1
                            type: virtual_good
                          - quantity: 1
                            sku: com.xsolla.phys_good_1
                            type: physical_good
                          - quantity: 1
                            name: Super Lootbox with items
                            image_url: >-
                              https://cdn.xsolla.net/img/misc/images/9676f06265375087e607cb79c5283688.png
                            sku: com.xsolla.SuperLootboxBundle_1
                            type: bundle
                            bundle_type: standard
                    limits:
                      per_user:
                        total: 5
                        available: 3
                        recurrent_schedule:
                          interval_type: weekly
                          reset_next_date: 1746057600
                        limit_exceeded_visibility: show
                    periods:
                      - date_from: '2020-08-11T10:00:00+03:00'
                        date_until: '2020-08-11T20:00:00+03:00'
                    custom_attributes:
                      purchased: 0
                      attr: value
                    vp_rewards: []
                  - sku: com.xsolla.shotgun_raider_1
                    name: SHOTGUN FOR TRUE RAIDERS
                    groups:
                      - external_id: weapons
                        name:
                          en: Weapons
                    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'
                    type: virtual_good
                    description: description
                    image_url: http://image.png
                    is_free: false
                    price:
                      amount: '101.0'
                      amount_without_discount: '101.0'
                      currency: USD
                    virtual_prices:
                      - amount: 100
                        sku: com.xsolla.vc_2
                        is_default: true
                        amount_without_discount: 100
                        image_url: http://image.png
                        name: SHOTGUN FOR TRUE RAIDERS
                        type: virtual_currency
                        description: description
                      - amount: 200
                        sku: com.xsolla.vc_3
                        is_default: false
                        amount_without_discount: 200
                        image_url: http://image.png
                        name: SHOTGUN FOR TRUE RAIDERS
                        type: virtual_currency
                        description: description
                    can_be_bought: true
                    virtual_item_type: non_renewing_subscription
                    promotions: []
                    limits: null
                    periods:
                      - date_from: '2020-08-11T20:00:00+03:00'
                        date_until: null
                    vp_rewards: []
                  - sku: com.xsolla.shotgun_raider_2
                    name: SHOTGUN FOR TRUE RAIDERS
                    groups: []
                    attributes: []
                    type: virtual_good
                    description: description
                    image_url: http://image.png
                    is_free: true
                    price: null
                    virtual_prices: []
                    can_be_bought: true
                    virtual_item_type: non_renewing_subscription
                    promotions: []
                    limits: null
                    periods: []
                    vp_rewards: []
  requestBodies:
    Promotions_redeem-coupon-model:
      content:
        application/json:
          schema:
            type: object
            properties:
              coupon_code:
                type: string
                description: Code unique de coupon. Comprend des lettres et des chiffres.
                minLength: 1
                maxLength: 128
                example: WINTER2021
                default: WINTER2021
              selected_unit_items:
                $ref: '#/components/schemas/Promotions_selected_unit_items'
    Promotions_coupon-create:
      content:
        application/json:
          schema:
            type: object
            required:
              - external_id
              - name
            properties:
              external_id:
                $ref: '#/components/schemas/Promotions_coupon-external_id'
              promotion_periods:
                $ref: '#/components/schemas/promotion_periods'
              name:
                $ref: '#/components/schemas/Promotions_coupon_name'
              bonus:
                $ref: '#/components/schemas/Promotions_coupon_bonus'
              redeem_total_limit:
                $ref: '#/components/schemas/Promotions_coupon-redeem_total_limit'
              redeem_user_limit:
                $ref: '#/components/schemas/Promotions_coupon-redeem_user_limit'
              redeem_code_limit:
                $ref: '#/components/schemas/Promotions_redeem_code_limit'
              attribute_conditions:
                $ref: >-
                  #/components/schemas/promotion_user-attribute_conditions_model-post
          examples:
            simple:
              value:
                external_id: coupon_external_id
                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'
                name:
                  en-US: New Year Bonus
                  de-DE: Neujahrsbonus
                redeem_total_limit: 100
                redeem_user_limit: 1
                redeem_code_limit: 1
                bonus:
                  - sku: com.xsolla.elven_sword_1
                    quantity: 1
            personalized:
              value:
                external_id: coupon_external_id
                promotion_periods:
                  - date_from: '2020-04-15T18:16:00+05:00'
                    date_until: '2020-04-25T18:16:00+05:00'
                name:
                  en-US: New Year Bonus
                  de-DE: Neujahrsbonus
                redeem_total_limit: 100
                redeem_user_limit: 1
                redeem_code_limit: 1
                bonus:
                  - sku: com.xsolla.elven_sword_2
                    quantity: 1
                attribute_conditions:
                  - attribute: account_status
                    type: string
                    operator: eq
                    value: golden
                    can_be_missing: false
    Promotions_coupon-update:
      content:
        application/json:
          schema:
            type: object
            required:
              - name
            properties:
              promotion_periods:
                $ref: '#/components/schemas/promotion_periods'
              name:
                $ref: '#/components/schemas/Promotions_coupon_name'
              bonus:
                $ref: '#/components/schemas/Promotions_coupon_bonus'
              redeem_total_limit:
                $ref: '#/components/schemas/Promotions_coupon-redeem_total_limit'
              redeem_user_limit:
                $ref: '#/components/schemas/Promotions_coupon-redeem_user_limit'
              redeem_code_limit:
                $ref: '#/components/schemas/Promotions_redeem_code_limit'
              attribute_conditions:
                $ref: >-
                  #/components/schemas/promotion_user-attribute_conditions_model-post
          examples:
            simple:
              value:
                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'
                name:
                  en-US: New Year Bonus
                  de-DE: Neujahrsbonus
                redeem_total_limit: 100
                redeem_user_limit: 1
                redeem_code_limit: 1
                bonus:
                  - sku: com.xsolla.elven_sword_1
                    quantity: 1
            personalized:
              value:
                promotion_periods:
                  - date_from: '2020-04-15T18:16:00+05:00'
                    date_until: '2020-04-25T18:16:00+05:00'
                name:
                  en-US: New Year Bonus
                  de-DE: Neujahrsbonus
                redeem_total_limit: 100
                redeem_user_limit: 1
                redeem_code_limit: 1
                bonus:
                  - sku: com.xsolla.elven_sword_2
                    quantity: 1
                attribute_conditions:
                  - attribute: account_status
                    type: string
                    operator: eq
                    value: golden
                    can_be_missing: false
    Promotions_create-coupon-promocode-code:
      content:
        application/json:
          schema:
            type: object
            properties:
              coupon_code:
                $ref: '#/components/schemas/Promotions_coupon_code'
    Promotions_redeem-promo-code-model:
      content:
        application/json:
          schema:
            type: object
            properties:
              coupon_code:
                type: string
                description: >-
                  Code unique du code promo. Comprend des lettres et des
                  chiffres.
                minLength: 1
                maxLength: 128
                example: SUMMER2021
                default: SUMMER2021
              cart:
                type:
                  - object
                  - 'null'
                properties:
                  id:
                    type: string
                    description: ID de panier.
                    default: current
                required:
                  - id
              selected_unit_items:
                $ref: '#/components/schemas/Promotions_selected_unit_items'
    Promotions_cancel-promo-code-model:
      content:
        application/json:
          schema:
            type: object
            properties:
              cart:
                type:
                  - object
                  - 'null'
                properties:
                  id:
                    type: string
                    description: ID de panier.
                    default: current
                required:
                  - id
    Promotions_promocode-create:
      content:
        application/json:
          schema:
            type: object
            required:
              - external_id
              - name
            properties:
              external_id:
                $ref: '#/components/schemas/Promotions_coupon-external_id'
              promotion_periods:
                $ref: '#/components/schemas/promotion_periods'
              name:
                $ref: '#/components/schemas/Promotions_coupon_name'
              bonus:
                $ref: '#/components/schemas/Promotions_coupon_bonus'
              redeem_total_limit:
                $ref: '#/components/schemas/Promotions_coupon-redeem_total_limit'
              redeem_user_limit:
                $ref: '#/components/schemas/Promotions_coupon-redeem_user_limit'
              redeem_code_limit:
                $ref: '#/components/schemas/Promotions_redeem_code_limit'
              discount:
                type:
                  - object
                  - 'null'
                properties:
                  percent:
                    $ref: '#/components/schemas/Promotions_promotion_discount_percent'
                example:
                  percent: '10.10'
              discounted_items:
                $ref: '#/components/schemas/Promotions_discounted_items'
              attribute_conditions:
                $ref: >-
                  #/components/schemas/promotion_user-attribute_conditions_model-post
              price_conditions:
                $ref: '#/components/schemas/price_conditions_promocode'
              item_price_conditions:
                $ref: '#/components/schemas/item_price_conditions_promocode'
              excluded_promotions:
                $ref: '#/components/schemas/excluded_promotions'
          examples:
            simple bonus:
              value:
                external_id: promo_code_external_id
                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'
                name:
                  en-US: New Year Bonus
                  de-DE: Neujahrsbonus
                redeem_total_limit: 100
                redeem_user_limit: 1
                redeem_code_limit: 1
                bonus:
                  - sku: com.xsolla.elven_sword_1
                    quantity: 1
                  - sku: com.xsolla.elven_shield_1
                    quantity: 2
                  - sku: com.xsolla.elven_gloves_1
                    quantity: 2
            simple discount:
              value:
                external_id: promo_code_external_id
                promotion_periods:
                  - date_from: '2020-04-15T18:16:00+05:00'
                    date_until: '2020-04-25T18:16:00+05:00'
                name:
                  en-US: New Year Discount
                  de-DE: Neujahrsrabatt
                redeem_total_limit: 100
                redeem_user_limit: 1
                redeem_code_limit: 1
                discount:
                  percent: '10.10'
            personalized:
              value:
                external_id: coupon_external_id
                promotion_periods:
                  - date_from: '2020-04-15T18:16:00+05:00'
                    date_until: '2020-04-25T18:16:00+05:00'
                name:
                  en-US: New Year Discount
                  de-DE: Neujahrsrabatt
                redeem_total_limit: 100
                redeem_user_limit: 1
                redeem_code_limit: 1
                discount:
                  percent: '10.10'
                attribute_conditions:
                  - attribute: account_status
                    type: string
                    operator: eq
                    value: golden
                    can_be_missing: false
            with price conditions:
              value:
                external_id: promo_code_external_id
                promotion_periods:
                  - date_from: '2020-04-15T18:16:00+05:00'
                    date_until: '2020-04-25T18:16:00+05:00'
                name:
                  en-US: New Year Bonus
                  de-DE: Neujahrsbonus
                redeem_total_limit: 100
                redeem_user_limit: 1
                redeem_code_limit: 1
                bonus:
                  - sku: com.xsolla.elven_sword_2
                    quantity: 1
                  - sku: com.xsolla.elven_shield_2
                    quantity: 2
                  - sku: com.xsolla.elven_gloves_2
                    quantity: 2
                price_conditions:
                  - operator: ge
                    value: '10.5000'
                  - operator: lt
                    value: '50.0000'
            with item price conditions:
              value:
                external_id: promo_code_external_id
                promotion_periods:
                  - date_from: '2020-04-15T18:16:00+05:00'
                    date_until: '2020-04-25T18:16:00+05:00'
                name:
                  en-US: New Year Bonus
                  de-DE: Neujahrsbonus
                redeem_total_limit: 100
                redeem_user_limit: 1
                redeem_code_limit: 1
                discount:
                  percent: '10.10'
                bonus:
                  - sku: com.xsolla.elven_sword_3
                    quantity: 1
                  - sku: com.xsolla.elven_shield_3
                    quantity: 2
                  - sku: com.xsolla.elven_gloves_3
                    quantity: 2
                item_price_conditions:
                  - operator: ge
                    value: '10.5000'
                  - operator: lt
                    value: '50.0000'
            with excluded promotions:
              value:
                external_id: coupon_external_id
                promotion_periods:
                  - date_from: '2020-04-15T18:16:00+05:00'
                    date_until: '2020-04-25T18:16:00+05:00'
                name:
                  en-US: New Year Discount
                  de-DE: Neujahrsrabatt
                redeem_total_limit: 100
                redeem_user_limit: 1
                redeem_code_limit: 1
                discount:
                  percent: '10.10'
                excluded_promotions:
                  - 12
                  - 789
    Promotions_promocode-update:
      content:
        application/json:
          schema:
            type: object
            required:
              - name
            properties:
              promotion_periods:
                $ref: '#/components/schemas/promotion_periods'
              name:
                $ref: '#/components/schemas/Promotions_coupon_name'
              bonus:
                $ref: '#/components/schemas/Promotions_coupon_bonus'
              redeem_total_limit:
                $ref: '#/components/schemas/Promotions_coupon-redeem_total_limit'
              redeem_user_limit:
                $ref: '#/components/schemas/Promotions_coupon-redeem_user_limit'
              redeem_code_limit:
                $ref: '#/components/schemas/Promotions_redeem_code_limit'
              discount:
                type:
                  - object
                  - 'null'
                properties:
                  percent:
                    $ref: '#/components/schemas/Promotions_promotion_discount_percent'
                example:
                  percent: '10.10'
              discounted_items:
                $ref: '#/components/schemas/Promotions_discounted_items'
              attribute_conditions:
                $ref: >-
                  #/components/schemas/promotion_user-attribute_conditions_model-post
              price_conditions:
                $ref: '#/components/schemas/price_conditions_promocode'
              item_price_conditions:
                $ref: '#/components/schemas/item_price_conditions_promocode'
              excluded_promotions:
                $ref: '#/components/schemas/excluded_promotions'
          examples:
            simple bonus:
              value:
                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'
                name:
                  en-US: New Year Bonus
                  de-DE: Neujahrsbonus
                redeem_total_limit: 100
                redeem_user_limit: 1
                redeem_code_limit: 1
                bonus:
                  - sku: com.xsolla.elven_sword_1
                    quantity: 1
                  - sku: com.xsolla.elven_shield_1
                    quantity: 2
                  - sku: com.xsolla.elven_gloves_1
                    quantity: 2
            simple discount:
              value:
                promotion_periods:
                  - date_from: '2020-04-15T18:16:00+05:00'
                    date_until: '2020-04-25T18:16:00+05:00'
                name:
                  en-US: New Year Discount
                  de-DE: Neujahrsrabatt
                redeem_total_limit: 100
                redeem_user_limit: 1
                redeem_code_limit: 1
                discount:
                  percent: '10.10'
            personalized:
              value:
                promotion_periods:
                  - date_from: '2020-04-15T18:16:00+05:00'
                    date_until: '2020-04-25T18:16:00+05:00'
                name:
                  en-US: New Year Discount
                  de-DE: Neujahrsrabatt
                redeem_total_limit: 100
                redeem_user_limit: 1
                redeem_code_limit: 1
                discount:
                  percent: '10.10'
                attribute_conditions:
                  - attribute: account_status
                    type: string
                    operator: eq
                    value: golden
                    can_be_missing: false
            with price conditions:
              value:
                promotion_periods:
                  - date_from: '2020-04-15T18:16:00+05:00'
                    date_until: '2020-04-25T18:16:00+05:00'
                name:
                  en-US: New Year Bonus
                  de-DE: Neujahrsbonus
                redeem_total_limit: 100
                redeem_user_limit: 1
                redeem_code_limit: 1
                bonus:
                  - sku: com.xsolla.elven_sword_2
                    quantity: 1
                  - sku: com.xsolla.elven_shield_2
                    quantity: 2
                  - sku: com.xsolla.elven_gloves_2
                    quantity: 2
                price_conditions:
                  - operator: gt
                    value: '10.5000'
                  - operator: lt
                    value: '50.0000'
            with item price conditions:
              value:
                promotion_periods:
                  - date_from: '2020-04-15T18:16:00+05:00'
                    date_until: '2020-04-25T18:16:00+05:00'
                name:
                  en-US: New Year Bonus
                  de-DE: Neujahrsbonus
                redeem_total_limit: 100
                redeem_user_limit: 1
                redeem_code_limit: 1
                discount:
                  percent: '10.10'
                bonus:
                  - sku: com.xsolla.elven_sword_3
                    quantity: 1
                  - sku: com.xsolla.elven_shield_3
                    quantity: 2
                  - sku: com.xsolla.elven_gloves_3
                    quantity: 2
                item_price_conditions:
                  - operator: gt
                    value: '10.5000'
                  - operator: lt
                    value: '50.0000'
            with excluded promotions:
              value:
                promotion_periods:
                  - date_from: '2020-04-15T18:16:00+05:00'
                    date_until: '2020-04-25T18:16:00+05:00'
                name:
                  en-US: New Year Discount
                  de-DE: Neujahrsrabatt
                redeem_total_limit: 100
                redeem_user_limit: 1
                redeem_code_limit: 1
                discount:
                  percent: '10.10'
                excluded_promotions:
                  - 12
                  - 789
    Promotions_create-update-item-promotion:
      content:
        application/json:
          schema:
            type: object
            properties:
              name:
                type: object
                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.
                additionalProperties:
                  type: string
                example:
                  en-US: Promotion
                  ru-RU: Акция
              promotion_periods:
                $ref: '#/components/schemas/promotion_periods'
              discount:
                type: object
                properties:
                  percent:
                    type: string
                    description: >-
                      Pourcentage de la remise.

                      Le prix de l'objet sera réduit d'une valeur calculée à
                      l'aide de ce pourcentage et arrondie à 2 décimales.
                    example: 10
                required:
                  - percent
              items:
                type: array
                items:
                  description: Liste des objets qui seront concernés par la remise.
                  type: object
                  properties:
                    sku:
                      type: string
                      description: UGS de l'objet.
                      default: elven_sword
                  required:
                    - sku
              attribute_conditions:
                $ref: >-
                  #/components/schemas/promotion_user-attribute_conditions_model-post
              price_conditions:
                $ref: '#/components/schemas/price_conditions_discount'
              limits:
                $ref: '#/components/schemas/Promotions_promotion_limits'
              excluded_promotions:
                $ref: '#/components/schemas/excluded_promotions'
              is_enabled:
                $ref: '#/components/schemas/Promotions_is_enabled'
            required:
              - items
              - discount
              - name
          examples:
            simple:
              value:
                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'
                discount:
                  percent: '10.00'
                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: Акция
                is_enabled: true
            personalized:
              value:
                promotion_periods:
                  - date_from: '2020-04-15T18:16:00+05:00'
                    date_until: '2020-04-25T18:16:00+05:00'
                discount:
                  percent: '24.00'
                items: []
                is_enabled: true
                name:
                  en-US: Ork set discount
                  ru-RU: Скидка на набор для орка
                attribute_conditions:
                  - type: string
                    attribute: race
                    operator: eq
                    value: ork
                  - type: number
                    attribute: level
                    operator: eq
                    value: '10'
                    can_be_missing: true
            with price condition:
              value:
                promotion_periods:
                  - date_from: '2020-04-15T18:16:00+05:00'
                    date_until: '2020-04-25T18:16:00+05:00'
                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'
            with excluded promotions:
              value:
                promotion_periods:
                  - date_from: '2020-04-15T18:16:00+05:00'
                    date_until: '2020-04-25T18:16:00+05:00'
                discount:
                  percent: '24.00'
                items: []
                name:
                  en-US: Ork set discount
                  ru-RU: Скидка на набор для орка
                excluded_promotions:
                  - 12
                  - 789
                is_enabled: true
      description: Objet contenant des données de la promotion.
      required: true
    Promotions_create-update-bonus-promotion:
      content:
        application/json:
          schema:
            type: object
            required:
              - condition
              - bonus
              - name
            properties:
              id:
                type: integer
                description: >-
                  ID de la promotion. Identifiant unique de la promotion au sein
                  du projet.
              promotion_periods:
                $ref: '#/components/schemas/promotion_periods'
              name:
                type: object
                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.
                additionalProperties:
                  type: string
                example:
                  en-US: Summer season bonus
                  de-DE: Sommersaison Bonus
              condition:
                type:
                  - array
                  - 'null'
                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:
                  type: object
                  properties:
                    sku:
                      type: string
                      description: UGS de l'objet.
                      default: elven_sword
              attribute_conditions:
                $ref: >-
                  #/components/schemas/promotion_user-attribute_conditions_model-post
              bonus:
                type:
                  - array
                  - 'null'
                items:
                  description: >-
                    Liste des objets qui seront ajoutés à l'achat de
                    l'utilisateur en tant que bonus.
                  type: object
                  properties:
                    sku:
                      type: string
                      description: UGS de l'objet.
                      default: elven_shield
                    quantity:
                      type: number
                      description: Quantité de l'objet.
                      default: 1
              limits:
                $ref: '#/components/schemas/Promotions_promotion_limits'
              price_conditions:
                $ref: '#/components/schemas/price_conditions_bonus'
              excluded_promotions:
                $ref: '#/components/schemas/excluded_promotions'
              is_enabled:
                $ref: '#/components/schemas/Promotions_is_enabled'
          examples:
            simple:
              value:
                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'
                name:
                  en-US: New Year Bonus
                  de-DE: Neujahrsbonus
                condition:
                  - sku: com.xsolla.elven_boots_1
                  - sku: com.xsolla.elven_knife_1
                bonus:
                  - sku: com.xsolla.elven_sword_1
                    quantity: 1
                  - sku: com.xsolla.elven_shield_1
                    quantity: 2
                  - sku: com.xsolla.elven_gloves_1
                    quantity: 2
            personalized:
              value:
                promotion_periods:
                  - date_from: '2020-04-15T18:16:00+05:00'
                    date_until: '2020-04-25T18:16:00+05:00'
                name:
                  en-US: New Year Bonus
                  de-DE: Neujahrsbonus
                condition:
                  - sku: com.xsolla.year_1_season_pass
                attribute_conditions:
                  - attribute: account_status
                    type: string
                    operator: eq
                    value: golden
                    can_be_missing: false
                bonus:
                  - sku: com.xsolla.mp_credits
                    quantity: 50000
            with price conditions:
              value:
                promotion_periods:
                  - date_from: '2020-04-15T18:16:00+05:00'
                    date_until: '2020-04-25T18:16:00+05:00'
                name:
                  en-US: New Year Bonus
                  de-DE: Neujahrsbonus
                condition:
                  - sku: com.xsolla.elven_boots_2
                  - sku: com.xsolla.elven_knife_2
                bonus:
                  - sku: com.xsolla.elven_sword_2
                    quantity: 1
                  - sku: com.xsolla.elven_shield_2
                    quantity: 2
                  - sku: com.xsolla.elven_gloves_2
                    quantity: 2
                price_conditions:
                  - operator: gt
                    value: '10.0000'
                  - operator: lt
                    value: '20.0000'
            with excluded promotions:
              value:
                promotion_periods:
                  - date_from: '2020-04-15T18:16:00+05:00'
                    date_until: '2020-04-25T18:16:00+05:00'
                name:
                  en-US: New Year Bonus
                  de-DE: Neujahrsbonus
                condition:
                  - sku: com.xsolla.year_1_season_pass
                bonus:
                  - sku: com.xsolla.mp_credits
                    quantity: 50000
                excluded_promotions:
                  - 12
                  - 789
    Promotions_unique_catalog_offer-create:
      content:
        application/json:
          schema:
            type: object
            required:
              - external_id
              - name
            properties:
              external_id:
                $ref: '#/components/schemas/Promotions_coupon-external_id'
              date_start:
                $ref: '#/components/schemas/Promotions_coupon_date_start'
              date_end:
                $ref: '#/components/schemas/Promotions_coupon_date_end'
              name:
                $ref: '#/components/schemas/Promotions_coupon_name'
              items:
                type: array
                $ref: '#/components/schemas/Promotions_unique_catalog_offer_items'
              redeem_user_limit:
                $ref: '#/components/schemas/Promotions_coupon-redeem_user_limit'
              redeem_code_limit:
                $ref: '#/components/schemas/Promotions_redeem_code_limit'
              redeem_total_limit:
                $ref: '#/components/schemas/Promotions_coupon-redeem_total_limit'
          examples:
            simple:
              value:
                external_id: offer_external_id
                date_start: '2020-04-15T18:16:00+05:00'
                date_end: '2020-04-25T18:16:00+05:00'
                name:
                  en-US: New Year Offer
                  de-DE: Neujahrsangebot
                items:
                  - elven_sword
                  - elven_boots
            limited:
              value:
                external_id: offer_external_id
                date_start: '2020-04-15T18:16:00+05:00'
                date_end: '2020-04-25T18:16:00+05:00'
                name:
                  en-US: New Year Offer
                  de-DE: Neujahrsangebot
                items:
                  - elven_sword
                  - elven_boots
                redeem_total_limit: 100
                redeem_user_limit: 1
                redeem_code_limit: 1
    Promotions_unique_catalog_offer-update:
      content:
        application/json:
          schema:
            type: object
            required:
              - name
            properties:
              promotion_periods:
                $ref: '#/components/schemas/promotion_periods'
              name:
                $ref: '#/components/schemas/Promotions_coupon_name'
              items:
                $ref: '#/components/schemas/Promotions_unique_catalog_offer_items'
              redeem_total_limit:
                $ref: '#/components/schemas/Promotions_coupon-redeem_total_limit'
              redeem_user_limit:
                $ref: '#/components/schemas/Promotions_coupon-redeem_user_limit'
              redeem_code_limit:
                $ref: '#/components/schemas/Promotions_redeem_code_limit'
          examples:
            simple:
              value:
                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'
                name:
                  en-US: New Year Offer
                  de-DE: Neujahrsangebot
                items:
                  - elven_sword
                  - elven_boots
            limited:
              value:
                promotion_periods:
                  - date_from: '2020-04-15T18:16:00+05:00'
                    date_until: '2020-04-25T18:16:00+05:00'
                name:
                  en-US: New Year Offer
                  de-DE: Neujahrsangebot
                items:
                  - elven_sword
                  - elven_boots
                redeem_total_limit: 100
                redeem_user_limit: 1
                redeem_code_limit: 1
    personalized-catalog_create-update-body:
      content:
        application/json:
          schema:
            $ref: >-
              #/components/schemas/user-attribute_personalized-catalog-body-required
          example:
            name: Ork race armor rule
            is_enabled: true
            attribute_conditions:
              - attribute: race
                operator: eq
                value: ork
                type: string
                can_be_missing: false
            items:
              - item_id: 1
            is_satisfied_for_unauth: false
    reset-user-limits:
      content:
        application/json:
          schema:
            type: object
            required:
              - user
            properties:
              user:
                $ref: '#/components/schemas/User-limit_user'
          example:
            user:
              user_external_id: d342dad2-9d59-11e9-a384-42010aa8003f
    reset-user-limits-flexible:
      content:
        application/json:
          schema:
            type: object
            required:
              - user
            properties:
              user:
                $ref: '#/components/schemas/User-limit_user_flexible'
          example:
            user:
              user_external_id: d342dad2-9d59-11e9-a384-42010aa8003f
    update-user-limits-flexible:
      content:
        application/json:
          schema:
            type: object
            required:
              - user
              - available
            properties:
              user:
                $ref: '#/components/schemas/User-limit_user'
              available:
                $ref: '#/components/schemas/User-limit_available_flexible'
          example:
            user:
              user_external_id: d342dad2-9d59-11e9-a384-42010aa8003f
            available: 0
    update-user-limits-strict:
      content:
        application/json:
          schema:
            type: object
            required:
              - user
              - available
            properties:
              user:
                $ref: '#/components/schemas/User-limit_user'
              available:
                $ref: '#/components/schemas/User-limit_available'
          example:
            user:
              user_external_id: d342dad2-9d59-11e9-a384-42010aa8003f
            available: 1
    create-value-point:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/admin_value_points-create'
          examples:
            default:
              summary: Value point for reward chain
              value:
                sku: com.xsolla.reward_vp_1
                name:
                  en: Reward VP 1
                is_enabled: true
                description:
                  en: Value points for reward system.
                long_description:
                  en: >-
                    Value points given to users to get new rewards in a reward
                    chain.
                image_url: >-
                  https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
                media_list: []
                order: 1
            clan:
              summary: Value point for clan reward chain
              value:
                sku: com.xsolla.clan_value_point_1
                name:
                  en: Clan Reward VP 1
                is_enabled: true
                description:
                  en: Value points for clan reward system.
                long_description:
                  en: >-
                    Value points given to clans to get new rewards in a reward
                    chain.
                image_url: >-
                  https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
                media_list: []
                order: 3
                is_clan: true
    set-item-value-point-reward:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/item-value-point-reward-set'
          example:
            - sku: com.xsolla.booster_1
              amount: 100
            - sku: com.xsolla.booster_mega
              amount: 200
    set-item-value-point-reward-for-patch:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/item-value-point-reward-set-for-patch'
          example:
            - sku: booster_1
              amount: 100
            - sku: booster_mega
              amount: 0
    create-reward-chain:
      content:
        application/json:
          schema:
            oneOf:
              - $ref: '#/components/schemas/create-reward-chain-model'
              - $ref: '#/components/schemas/create-clan-reward-chain-model'
          examples:
            default:
              summary: Reward chain example
              value:
                name:
                  en: Reward chain
                description:
                  en: Reward chain description.
                long_description:
                  en: Description détaillée de la chaîne de récompenses.
                is_enabled: true
                image_url: >-
                  https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
                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'
                value_point:
                  sku: com.xsolla.value_point_1
                steps:
                  - name:
                      en: First step of the reward chain
                    image_url: >-
                      https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
                    reward:
                      - sku: com.xsolla.item_1
                        quantity: 5
                      - sku: com.xsolla.item_2
                        quantity: 1
                    price:
                      amount: 10
                  - name:
                      en: Second step of the reward chain
                    image_url: >-
                      https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
                    reward:
                      - sku: com.xsolla.item_3
                        quantity: 5
                      - sku: com.xsolla.item_4
                        quantity: 1
                    price:
                      amount: 15
                recurrent_schedule:
                  interval_type: weekly
                  day_of_week: 1
                  time: 01:00:00+08:00
                attribute_conditions:
                  - attribute: race
                    operator: eq
                    value: ork
                    type: string
                    can_be_missing: false
                is_always_visible: true
                is_reset_after_end: true
            clan:
              summary: Clan reward chain example
              value:
                name:
                  en: Clan reward chain
                description:
                  en: Clan reward chain description.
                long_description:
                  en: Clan reward chain long description.
                is_enabled: true
                image_url: >-
                  https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
                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'
                value_point:
                  sku: com.xsolla.clan_value_point_1
                steps:
                  - name:
                      en: First step of the reward chain
                    image_url: >-
                      https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
                    reward:
                      - sku: com.xsolla.item_1
                        quantity: 5
                      - sku: com.xsolla.item_2
                        quantity: 1
                    price:
                      amount: 10
                  - name:
                      en: Second step of the reward chain
                    image_url: >-
                      https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
                    reward:
                      - sku: com.xsolla.item_3
                        quantity: 5
                      - sku: com.xsolla.item_4
                        quantity: 1
                    price:
                      amount: 15
                recurrent_schedule:
                  interval_type: weekly
                  day_of_week: 1
                  time: 01:00:00+08:00
                popup_header:
                  en: How to unlock rewards
                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.
                popup_image_url: >-
                  https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
                clan_type: guild
    update-reward-chain:
      content:
        application/json:
          schema:
            oneOf:
              - $ref: '#/components/schemas/update-reward-chain-model'
              - $ref: '#/components/schemas/update-clan-reward-chain-model'
          examples:
            default:
              summary: Reward chain example
              value:
                name:
                  en: Reward chain
                description:
                  en: Reward chain description.
                long_description:
                  en: Description détaillée de la chaîne de récompenses.
                is_enabled: true
                image_url: >-
                  https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
                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'
                steps:
                  - name:
                      en: First step of the reward chain
                    step_id: 1
                    image_url: >-
                      https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
                    reward:
                      - sku: com.xsolla.item_1
                        quantity: 5
                      - sku: com.xsolla.item_2
                        quantity: 1
                    price:
                      amount: 10
                  - name:
                      en: Second step of the reward chain
                    step_id: 2
                    image_url: >-
                      https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
                    reward:
                      - sku: com.xsolla.item_3
                        quantity: 5
                      - sku: com.xsolla.item_4
                        quantity: 1
                    price:
                      amount: 15
                recurrent_schedule:
                  interval_type: weekly
                  day_of_week: 1
                  time: 01:00:00+08:00
                attribute_conditions:
                  - attribute: race
                    operator: eq
                    value: ork
                    type: string
                    can_be_missing: false
                is_always_visible: true
                is_reset_after_end: true
            clan:
              summary: Clan reward chain example
              value:
                name:
                  en: Clan reward chain
                description:
                  en: Clan reward chain description.
                long_description:
                  en: Clan reward chain long description.
                is_enabled: true
                image_url: >-
                  https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
                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'
                steps:
                  - name:
                      en: First step of the reward chain
                    step_id: 1
                    image_url: >-
                      https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
                    reward:
                      - sku: com.xsolla.item_1
                        quantity: 5
                      - sku: com.xsolla.item_2
                        quantity: 1
                    price:
                      amount: 10
                  - name:
                      en: Second step of the reward chain
                    step_id: 2
                    image_url: >-
                      https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
                    reward:
                      - sku: com.xsolla.item_3
                        quantity: 5
                      - sku: com.xsolla.item_4
                        quantity: 1
                    price:
                      amount: 15
                recurrent_schedule:
                  interval_type: weekly
                  day_of_week: 1
                  time: 01:00:00+08:00
                popup_header:
                  en: How to unlock rewards
                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.
                popup_image_url: >-
                  https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
                clan_type: guild
    create-daily-chain:
      content:
        application/json:
          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
          examples:
            calendar_hard:
              summary: Daily reward with `calendar_hard` type
              value:
                name:
                  en: New daily reward
                  ru: Новая ежедневная награда
                description:
                  en: New daily reward short description
                order: 4
                date_start: '2023-04-15T18:16:00+05:00'
                is_enabled: true
                steps:
                  - step_number: 1
                    items:
                      - sku: vg_enabled_shown_in_store_1
                        quantity: 2
                  - step_number: 2
                    items:
                      - sku: >-
                          bundle_enabled_shown_in_store_with_2_enabled_shown_in_store_vg
                        quantity: 2
                  - step_number: 3
                    items:
                      - sku: >-
                          vcp_enabled_shown_in_store_1_of_10_vc_enabled_shown_in_store_1
                        quantity: 2
                  - step_number: 4
                    items:
                      - sku: vg_enabled_shown_in_store_1
                        quantity: 1
                  - step_number: 5
                    items:
                      - sku: >-
                          bundle_enabled_shown_in_store_with_2_enabled_shown_in_store_vg
                        quantity: 1
                  - step_number: 6
                    items:
                      - sku: >-
                          vcp_enabled_shown_in_store_1_of_10_vc_enabled_shown_in_store_1
                        quantity: 1
                type: calendar_hard
            rolling_skippable:
              summary: Daily reward with `rolling_skippable` type
              value:
                name:
                  en: New skippable login reward
                description:
                  en: New skippable login reward short description
                order: 1
                date_start: '2023-05-01T10:00:00+05:00'
                date_end: '2023-05-31T10:00:00+05:00'
                is_enabled: true
                is_recurrent: true
                steps:
                  - step_number: 1
                    items:
                      - sku: monday_reward_item_one
                        quantity: 1
                  - step_number: 2
                    items:
                      - sku: tuesday_reward_item_two
                        quantity: 1
                  - step_number: 3
                    items:
                      - sku: wednesday_reward_item_three
                        quantity: 1
                  - step_number: 4
                    items:
                      - sku: thursday_reward_item_four
                        quantity: 1
                  - step_number: 5
                    items:
                      - sku: friday_reward_item_five
                        quantity: 1
                  - step_number: 6
                    items:
                      - sku: saturday_reward_item_six
                        quantity: 1
                  - step_number: 7
                    items:
                      - sku: sunday_reward_item_seven
                        quantity: 1
                type: rolling_skippable
            rolling_unskippable:
              summary: Daily reward with `rolling_unskippable` type
              value:
                name:
                  en: New unskippable login reward
                description:
                  en: New unskippable login reward short description
                order: 2
                date_start: '2023-06-01T10:00:00+05:00'
                date_end: '2023-06-30T10:00:00+05:00'
                is_enabled: true
                is_recurrent: false
                steps:
                  - step_number: 1
                    items:
                      - sku: monday_reward_item_one
                        quantity: 1
                  - step_number: 2
                    items:
                      - sku: tuesday_reward_item_two
                        quantity: 1
                  - step_number: 3
                    items:
                      - sku: wednesday_reward_item_three
                        quantity: 1
                  - step_number: 4
                    items:
                      - sku: thursday_reward_item_four
                        quantity: 1
                  - step_number: 5
                    items:
                      - sku: friday_reward_item_five
                        quantity: 1
                type: rolling_unskippable
    update-daily-chain:
      content:
        application/json:
          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
          examples:
            calendar_hard:
              summary: Daily reward with `calendar_hard` type
              value:
                name:
                  en: Updated daily reward
                  ru: Обновленная ежедневная награда
                description:
                  en: Updated daily reward description
                order: 4
                date_start: '2023-04-15T18:16:00+05:00'
                is_enabled: true
                steps:
                  - step_number: 1
                    items:
                      - sku: vg_enabled_shown_in_store_1
                        quantity: 1
                  - step_number: 2
                    items:
                      - sku: vg_enabled_shown_in_store_2
                        quantity: 1
                  - step_id: 10
                    step_number: 3
                    items:
                      - sku: vg_not_shown_in_store
                        quantity: 1
                  - step_id: 8
                    step_number: 4
                    items:
                      - sku: >-
                          bundle_enabled_shown_in_store_with_2_enabled_shown_in_store_vg
                        quantity: 1
                  - step_number: 5
                    items:
                      - sku: >-
                          vcp_enabled_shown_in_store_1_of_10_vc_enabled_shown_in_store_1
                        quantity: 1
                type: calendar_hard
            rolling_skippable:
              summary: Daily reward with `rolling_skippable` type
              value:
                name:
                  en: Updated login reward
                description:
                  en: Updated login reward description
                order: 4
                date_start: '2023-08-01T10:00:00+05:00'
                date_end: '2023-08-31T10:00:00+05:00'
                is_enabled: true
                steps:
                  - step_number: 1
                    items:
                      - sku: monday_reward_item_one
                        quantity: 1
                  - step_number: 2
                    items:
                      - sku: tuesday_reward_item_two
                        quantity: 1
                  - step_number: 3
                    items:
                      - sku: wednesday_reward_item_three
                        quantity: 1
                  - step_number: 4
                    items:
                      - sku: thursday_reward_item_four
                        quantity: 1
                  - step_number: 5
                    items:
                      - sku: friday_reward_item_five
                        quantity: 1
                  - step_number: 6
                    items:
                      - sku: saturday_reward_item_six
                        quantity: 1
                  - step_number: 7
                    items:
                      - sku: sunday_reward_item_seven
                        quantity: 1
                type: rolling_skippable
            rolling_unskippable:
              summary: Daily reward with `rolling_unskippable` type
              value:
                name:
                  en: Updated unskippable login reward
                description:
                  en: Updated unskippable login reward description
                order: 2
                date_start: '2023-09-01T10:00:00+05:00'
                date_end: '2023-09-30T10:00:00+05:00'
                is_enabled: true
                steps:
                  - step_number: 1
                    items:
                      - sku: monday_reward_item_one
                        quantity: 1
                  - step_number: 2
                    items:
                      - sku: tuesday_reward_item_two
                        quantity: 1
                  - step_number: 3
                    items:
                      - sku: wednesday_reward_item_three
                        quantity: 1
                  - step_number: 4
                    items:
                      - sku: thursday_reward_item_four
                        quantity: 1
                  - step_number: 5
                    items:
                      - sku: friday_reward_item_five
                        quantity: 1
                type: rolling_unskippable
    create-offer-chain:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/create-offer-chain-model'
          examples:
            default:
              summary: Non-personalized offer chain example
              value:
                name:
                  en: New offer chain
                  ru: Новая цепочка предложений
                  de: Neue Angebotskette
                  fr: Nouvelle chaîne d'offres
                  it: Nuova catena di offerte
                description:
                  en: A short description of a regular offer chain
                  ru: Краткое описание обычной цепочки предложений
                  de: Eine kurze Beschreibung einer regulären Angebotskette
                  fr: Une brève description d'une chaîne d'offres régulière
                  it: Una breve descrizione di una catena di offerte regolare
                order: 4
                date_start: '2023-04-15T18:16:00+05:00'
                date_end: null
                recurrent_schedule: null
                is_enabled: true
                steps:
                  - step_number: 1
                    is_free: false
                    items:
                      - sku: chain_step_1_paid_bundle_sku
                        quantity: 2
                  - step_number: 2
                    is_free: true
                    items:
                      - sku: chain_step_2_free_virtual_good_sku
                        quantity: 1
                  - step_number: 3
                    is_free: false
                    items:
                      - sku: chain_step_3_paid_virtual_currency_package_sku
                        quantity: 5
                  - step_number: 4
                    is_free: true
                    items:
                      - sku: chain_step_4_free_bundle_sku
                        quantity: 1
                is_always_visible: true
            recurrent:
              summary: Recurrent offer chain example
              value:
                name:
                  en: New recurrent offer chain
                  ru: Новая рекуррентная цепочка предложений
                  de: Neue wiederkehrende Angebotskette
                  fr: Nouvelle chaîne d'offres récurrente
                  it: Nuova catena di offerte ricorrente
                description:
                  en: >-
                    A recurring offer chain that resets weekly on Wednesdays at
                    07:00 AM GMT+3
                  ru: >-
                    Рекуррентная цепочка предложений, которая сбрасывается
                    еженедельно по средам в 07:00 по GMT+3
                  de: >-
                    Eine wiederkehrende Angebotskette, die wöchentlich mittwochs
                    um 07:00 Uhr GMT+3 zurückgesetzt wird
                  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
                order: 1
                date_start: '2023-04-15T18:16:00+05:00'
                date_end: '2025-04-25T18:16:00+05:00'
                is_enabled: false
                recurrent_schedule:
                  interval_type: weekly
                  day_of_week: 3
                  time: 07:00:00+03:00
                steps:
                  - step_number: 1
                    is_free: false
                    items:
                      - sku: chain_step_1_paid_bundle_sku
                        quantity: 2
                  - step_number: 2
                    is_free: true
                    items:
                      - sku: chain_step_2_free_virtual_good_sku
                        quantity: 3
                is_always_visible: true
            personalized-default:
              summary: >-
                Offer chain displayed when no personalized offer chains are
                found example
              value:
                name:
                  en: New personalized default offer chain
                  ru: Новая персонализированная цепочка предложений по умолчанию
                  de: Neue personalisierte Standard-Angebotskette
                  fr: Nouvelle chaîne d'offres personnalisée par défaut
                  it: Nuova catena di offerte personalizzata predefinita
                description:
                  en: >-
                    Default personalized offer chain for users that do not meet
                    the conditions of other personalized chains
                  ru: >-
                    Персонализированная цепочка по умолчанию для пользователей,
                    не подходящих под условия других персонализированных цепочек
                  de: >-
                    Standard-personalisierte Angebotskette für Benutzer, die die
                    Bedingungen anderer personalisierter Ketten nicht erfüllen
                  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
                order: 4
                date_start: '2023-04-15T18:16:00+05:00'
                date_end: null
                recurrent_schedule: null
                is_enabled: true
                steps:
                  - step_number: 1
                    is_free: false
                    items:
                      - sku: chain_x_step_1_item_default
                        quantity: 1
                  - step_number: 2
                    is_free: false
                    items:
                      - sku: chain_x_step_2_item_default
                        quantity: 2
                  - step_number: 3
                    is_free: true
                    items:
                      - sku: chain_x_step_3_free_item_default
                        quantity: 1
                is_always_visible: false
            personalized-with-conditions:
              summary: Personalized offer chain with user attribute conditions example
              value:
                name:
                  en: New personalized offer chain
                  ru: Новая персонализированная цепочка предложений
                  de: Neue personalisierte Angebotskette
                  fr: Nouvelle chaîne d'offres personnalisée
                  it: Nuova catena di offerte personalizzata
                description:
                  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
                  ru: >-
                    Персонализированная цепочка предложений с условиями по
                    атрибутам пользователя - для эльфов уровня 10 и выше,
                    достигших 10 уровня не позднее 2026-01-01 00:00:00
                    включительно
                  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
                  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
                order: 4
                date_start: '2023-04-15T18:16:00+05:00'
                date_end: null
                recurrent_schedule: null
                is_enabled: true
                steps:
                  - step_number: 1
                    is_free: false
                    items:
                      - sku: chain_x_step_1_item_for_elves_level_10_and_above
                        quantity: 1
                  - step_number: 2
                    is_free: false
                    items:
                      - sku: chain_x_step_2_item_for_elves_level_10_and_above
                        quantity: 2
                  - step_number: 3
                    is_free: true
                    items:
                      - sku: chain_x_step_3_free_item_for_elves_level_10_and_above
                        quantity: 1
                is_always_visible: false
                attribute_conditions:
                  - attribute: race
                    operator: eq
                    value: elf
                    type: string
                    can_be_missing: false
                  - attribute: level
                    operator: ge
                    value: '10'
                    type: number
                    can_be_missing: false
                  - attribute: 10_level_up_date
                    operator: le
                    value: '2026-01-01T00:00:00'
                    type: date
                    can_be_missing: false
    update-offer-chain:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/modify-offer-chain-model'
          examples:
            default:
              summary: Default example
              value:
                name:
                  en: Updated offer chain
                  ru: Обновляемая цепочка предложений
                  de: Aktualisierte Angebotskette
                  fr: Chaîne d'offres mise à jour
                  it: Catena di offerte aggiornata
                description:
                  en: A short description of a regular offer chain
                  ru: Краткое описание обычной цепочки предложений
                  de: Eine kurze Beschreibung einer regulären Angebotskette
                  fr: Une brève description d'une chaîne d'offres régulière
                  it: Una breve descrizione di una catena di offerte regolare
                order: 4
                date_start: '2023-04-15T18:16:00+05:00'
                date_end: null
                recurrent_schedule: null
                is_enabled: true
                steps:
                  - step_id: 10
                    step_number: 1
                    is_free: false
                    items:
                      - sku: chain_step_1_paid_bundle_sku
                        quantity: 2
                  - step_number: 2
                    is_free: true
                    items:
                      - sku: chain_step_2_free_virtual_good_sku
                        quantity: 1
                  - step_number: 3
                    is_free: false
                    items:
                      - sku: chain_step_3_paid_virtual_currency_package_sku
                        quantity: 5
                  - step_id: 9
                    step_number: 4
                    is_free: true
                    items:
                      - sku: chain_step_4_free_bundle_sku
                        quantity: 1
                is_always_visible: true
            recurrent:
              summary: Recurrent offer chain example
              value:
                id: 1
                name:
                  en: Updated recurrent offer chain
                  ru: Обновляемая рекуррентная цепочка предложений
                  de: Aktualisierte wiederkehrende Angebotskette
                  fr: Chaîne d'offres récurrente mise à jour
                  it: Catena di offerte ricorrente aggiornata
                description:
                  en: >-
                    Updated offer chain that becomes recurrent and resets
                    monthly on the 2nd day at 03:00 AM GMT+8
                  ru: >-
                    Обновляемая цепочка предложений, которая становится
                    рекуррентной и сбрасывается ежемесячно во 2-й день в 03:00
                    по GMT+8
                  de: >-
                    Aktualisierte Angebotskette, die wiederkehrend wird und
                    monatlich am 2. Tag um 03:00 Uhr GMT+8 zurückgesetzt wird
                  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
                order: 4
                date_start: '2023-04-15T17:16:00+05:00'
                date_end: '2025-04-25T19:16:00+05:00'
                is_enabled: true
                recurrent_schedule:
                  interval_type: monthly
                  day_of_month: 2
                  time: 03:00:00+08:00
                steps:
                  - step_number: 1
                    is_free: false
                    items:
                      - sku: chain_bundle_sku
                        quantity: 6
                  - step_number: 1
                    is_free: true
                    items:
                      - sku: chain_bundle_sku
                        quantity: 2
            personalized-default:
              summary: Personalized default offer chain example
              value:
                name:
                  en: New personalized default offer chain
                  ru: Новая персонализированная цепочка предложений по умолчанию
                  de: Neue personalisierte Standard-Angebotskette
                  fr: Nouvelle chaîne d'offres personnalisée par défaut
                  it: Nuova catena di offerte personalizzata predefinita
                description:
                  en: >-
                    Default personalized offer chain for users that do not meet
                    the conditions of other personalized chains
                  ru: >-
                    Персонализированная цепочка по умолчанию для пользователей,
                    не подходящих под условия других персонализированных цепочек
                  de: >-
                    Standard-personalisierte Angebotskette für Benutzer, die die
                    Bedingungen anderer personalisierter Ketten nicht erfüllen
                  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
                order: 4
                date_start: '2023-04-15T18:16:00+05:00'
                date_end: null
                recurrent_schedule: null
                is_enabled: true
                steps:
                  - step_id: 10
                    step_number: 1
                    is_free: false
                    items:
                      - sku: chain_x_step_1_item_default
                        quantity: 1
                  - step_number: 2
                    is_free: false
                    items:
                      - sku: chain_x_step_2_item_default
                        quantity: 2
                  - step_id: 9
                    step_number: 3
                    is_free: true
                    items:
                      - sku: chain_x_step_3_free_item_default
                        quantity: 1
                is_always_visible: false
            personalized-with-conditions:
              summary: Personalized offer chain with user attribute conditions example
              value:
                name:
                  en: New personalized offer chain
                  ru: Новая персонализированная цепочка предложений
                  de: Neue personalisierte Angebotskette
                  fr: Nouvelle chaîne d'offres personnalisée
                  it: Nuova catena di offerte personalizzata
                description:
                  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
                  ru: >-
                    Персонализированная цепочка предложений с условиями по
                    атрибутам пользователя - для эльфов уровня 10 и выше,
                    достигших 10 уровня не позднее 2026-01-01 00:00:00
                    включительно
                  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
                  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
                order: 4
                date_start: '2023-04-15T18:16:00+05:00'
                date_end: null
                recurrent_schedule: null
                is_enabled: true
                steps:
                  - step_id: 10
                    step_number: 1
                    is_free: false
                    items:
                      - sku: chain_x_step_1_item_for_elves_level_10_and_above
                        quantity: 1
                  - step_id: 8
                    step_number: 2
                    is_free: false
                    items:
                      - sku: chain_x_step_2_item_for_elves_level_10_and_above
                        quantity: 2
                  - step_number: 3
                    is_free: true
                    items:
                      - sku: chain_x_step_3_free_item_for_elves_level_10_and_above
                        quantity: 1
                is_always_visible: false
                attribute_conditions:
                  - attribute: race
                    operator: eq
                    value: elf
                    type: string
                    can_be_missing: false
                  - attribute: level
                    operator: ge
                    value: '10'
                    type: number
                    can_be_missing: false
                  - attribute: 10_level_up_date
                    operator: le
                    value: '2026-01-01T00:00:00'
                    type: date
                    can_be_missing: false
    update-upsell:
      content:
        application/json:
          schema:
            oneOf:
              - $ref: '#/components/schemas/Upsell-model'
              - $ref: '#/components/schemas/Upsell-model-not-fixed-list'
          examples:
            fixed_list:
              summary: Example of upsell with fixed list of items
              value:
                is_enabled: true
                type: fixed_list
                items:
                  - game_sku_1
                  - game_sku_2
                  - game_sku_3
            special_type_promotions:
              summary: Example of upsell with promotion items only
              value:
                is_enabled: true
                type: only_promotions
                items: []
            special_type_most_sellable:
              summary: Example of upsell with most sellable items for last 30 days
              value:
                is_enabled: true
                type: most_sellable
                items: []
    create-upsell:
      content:
        application/json:
          schema:
            oneOf:
              - $ref: '#/components/schemas/Upsell-model'
              - $ref: '#/components/schemas/Upsell-model-not-fixed-list'
          examples:
            fixed_list:
              summary: Example of upsell with fixed list of items
              value:
                is_enabled: true
                type: fixed_list
                items:
                  - game_sku_1
                  - game_sku_2
                  - game_sku_3
            special_type_promotions:
              summary: Example of upsell with promotion items only
              value:
                is_enabled: true
                type: only_promotions
                items: []
            special_type_most_sellable:
              summary: Example of upsell with most sellable items for last 30 days
              value:
                is_enabled: true
                type: most_sellable
                items: []
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-overview
      - reward-chain-value-points-admin
      - reward-chain-client
      - clan-reward-chain-client
  - name: CHAINES QUOTIDIENNES
    tags:
      - daily-chain-overview
      - daily-chain-admin
      - daily-chain-client
  - name: CHAÎNES D'OFFRES
    tags:
      - offer-chains-overview
      - offer-chain-admin
      - offer-chain-client
  - name: UPSELL
    tags:
      - upsell-overview
      - upsell-admin
      - upsell-client
