{
  "components": {
    "parameters": {
      "array-group-id-query-param": {
        "description": "Liste des ID des groupes auxquels les plans sont liés.",
        "in": "query",
        "name": "group_id[]",
        "schema": {
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "array-plan-id-query-param": {
        "description": "Liste des ID des plans d'abonnement.",
        "in": "query",
        "name": "plan_id[]",
        "schema": {
          "items": {
            "type": "integer"
          },
          "type": "array"
        }
      },
      "array-product-id-query-param": {
        "description": "Liste des ID des produits auxquels les plans sont liés.",
        "in": "query",
        "name": "product_id[]",
        "schema": {
          "items": {
            "type": "integer"
          },
          "type": "array"
        }
      },
      "array-project-id-query-param": {
        "description": "Liste des ID des projets.",
        "in": "query",
        "name": "project_id[]",
        "schema": {
          "items": {
            "type": "integer"
          },
          "type": "array"
        }
      },
      "campaign-id-path-param": {
        "description": "ID de campagne.",
        "in": "path",
        "name": "campaign_id",
        "required": true,
        "schema": {
          "type": "integer"
        }
      },
      "code-path-param": {
        "description": "Code de coupon.",
        "in": "path",
        "name": "code",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "datetime-from-query-param": {
        "description": "Date de l'échantillon. Permet de rechercher les abonnements créés après la requête.",
        "in": "query",
        "name": "datetime_from",
        "schema": {
          "format": "datetime",
          "type": "string"
        }
      },
      "datetime-from-query-param2": {
        "description": "Début de la période.",
        "in": "query",
        "name": "datetime_from",
        "schema": {
          "format": "datetime",
          "type": "string"
        }
      },
      "datetime-to-query-param": {
        "description": "Date de l'échantillon. Permet de rechercher les abonnements créés après la requête.",
        "in": "query",
        "name": "datetime_to",
        "schema": {
          "format": "datetime",
          "type": "string"
        }
      },
      "datetime-to-query-param2": {
        "description": "Fin de la période.",
        "in": "query",
        "name": "datetime_to",
        "schema": {
          "format": "datetime",
          "type": "string"
        }
      },
      "external-id-query-param": {
        "description": "ID externe du plan (32 caractères).",
        "in": "query",
        "name": "external_id",
        "schema": {
          "type": "string"
        }
      },
      "group-id-query-param": {
        "description": "ID du groupe auquel les plans sont liés.",
        "in": "query",
        "name": "group_id",
        "schema": {
          "type": "string"
        }
      },
      "limit-query-param": {
        "description": "Nombre maximal d'éléments sur une page.",
        "in": "query",
        "name": "limit",
        "required": true,
        "schema": {
          "type": "integer"
        }
      },
      "merchant-id-path-param": {
        "description": "ID de commerçant.",
        "in": "path",
        "name": "merchant_id",
        "required": true,
        "schema": {
          "type": "integer"
        }
      },
      "offset-query-param": {
        "description": "Numéro de l'élément à partir duquel la liste est générée (le décompte commence à 0).",
        "in": "query",
        "name": "offset",
        "schema": {
          "type": "integer"
        }
      },
      "plan-id-path-param": {
        "description": "ID de plan.",
        "in": "path",
        "name": "plan_id",
        "required": true,
        "schema": {
          "type": "integer"
        }
      },
      "plan-id-query-param": {
        "description": "ID de plan d'abonnement.",
        "in": "query",
        "name": "plan_id",
        "schema": {
          "type": "integer"
        }
      },
      "product-id-path-param": {
        "description": "ID du produit auquel les plans sont liés.",
        "in": "path",
        "name": "product_id",
        "required": true,
        "schema": {
          "type": "integer"
        }
      },
      "product-id-query-param": {
        "description": "ID du produit auquel les plans sont liés.",
        "in": "query",
        "name": "product_id",
        "schema": {
          "type": "integer"
        }
      },
      "project-id-path-param": {
        "description": "ID de projet.",
        "in": "path",
        "name": "project_id",
        "required": true,
        "schema": {
          "type": "integer"
        }
      },
      "promotion-id-path-param": {
        "description": "ID de promotion.",
        "in": "path",
        "name": "promotion_id",
        "required": true,
        "schema": {
          "type": "integer"
        }
      },
      "query-query-param": {
        "description": "Requête de recherche (recherche name.en (langue par défaut)).",
        "in": "query",
        "name": "query",
        "schema": {
          "type": "string"
        }
      },
      "status-id-query-param": {
        "description": "Statut de la transaction.",
        "in": "query",
        "name": "status",
        "schema": {
          "enum": [
            "done",
            "fail"
          ],
          "type": "string",
          "x-enumDescriptions": {
            "done": "Paiement traité avec succès.",
            "fail": "Le paiement a échoué ou un remboursement a été effectué."
          }
        }
      },
      "status-query-param-array": {
        "description": "Statut.",
        "in": "query",
        "name": "status[]",
        "schema": {
          "items": {
            "enum": [
              "active",
              "canceled",
              "non_renewing"
            ],
            "type": "string"
          },
          "type": "array"
        }
      },
      "subscription-id-path-param": {
        "description": "ID d'abonnement.",
        "in": "path",
        "name": "subscription_id",
        "required": true,
        "schema": {
          "type": "integer"
        }
      },
      "subscription-id-query-param": {
        "description": "ID d'abonnement.",
        "in": "query",
        "name": "subscription_id",
        "schema": {
          "type": "integer"
        }
      },
      "user-id-path-param": {
        "description": "ID utilisateur.",
        "in": "path",
        "name": "user_id",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "user-id-query-param": {
        "description": "ID utilisateur.",
        "in": "query",
        "name": "user_id",
        "schema": {
          "type": "string"
        }
      }
    },
    "schemas": {
      "BillingAccountResponse": {
        "properties": {
          "id": {
            "example": "12345",
            "type": "integer"
          },
          "name": {
            "example": "PP_saved_account",
            "nullable": true,
            "type": "string"
          },
          "payment_system": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PaymentSystemResponse"
              }
            ]
          },
          "type": {
            "example": "paypal",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "BillingAccountsListResponse": {
        "properties": {
          "items": {
            "default": [],
            "items": {
              "$ref": "#/components/schemas/BillingAccountResponse"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "Campaign": {
        "properties": {
          "campaign_code": {
            "description": "Nom de campagne.",
            "type": "string"
          },
          "campaign_names": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LocalizedStringPairs"
              },
              {
                "description": "Noms localisés de la campagne."
              }
            ]
          },
          "campaign_redeems_count_for_user": {
            "description": "Nombre maximal de coupons que l'utilisateur peut échanger dans le cadre de la campagne. Si `null` est passé, le nombre d'utilisations est illimité.",
            "type": "integer"
          },
          "expiration_date": {
            "description": "Date de fin de la campagne au format `YYYY-MM-DD’T’HH:MM:SS` selon la norme [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601).",
            "format": "datetime",
            "type": "string"
          },
          "project_id": {
            "description": "ID de projet.",
            "type": "integer"
          },
          "redeems_count": {
            "description": "Nombre maximal de coupons à échanger. Si `null` est passé, le nombre d'utilisations est illimité.",
            "type": "integer"
          },
          "redeems_count_for_user": {
            "description": "Nombre maximal de coupons que l'utilisateur peut échanger. Si `null` est passé, le nombre d'utilisations est illimité.",
            "type": "integer"
          },
          "subscription_coupon": {
            "description": "Paramètres de l'abonnement dans la récompense.",
            "properties": {
              "plan_id": {
                "description": "ID de plan d'abonnement.",
                "type": "integer"
              },
              "product_id": {
                "description": "ID du produit d'abonnement.",
                "type": "integer"
              },
              "trial_period": {
                "description": "Durée de la période d'essai en jours.",
                "type": "integer"
              }
            },
            "required": [
              "plan_id",
              "product_id",
              "trial_period"
            ],
            "type": "object"
          },
          "virtual_currency_amount": {
            "description": "Quantité de la monnaie virtuelle dans la récompense.",
            "format": "float",
            "type": "number"
          },
          "virtual_items": {
            "description": "Tableau des paramètres des objets virtuels dans la récompense.",
            "properties": {
              "quantity": {
                "description": "Quantité d'objets virtuels.",
                "type": "integer"
              },
              "sku": {
                "description": "UGS de l'objet virtuel.",
                "type": "string"
              }
            },
            "required": [
              "sku",
              "quantity"
            ],
            "type": "object"
          }
        },
        "type": "object"
      },
      "ChangePlanPaymentDetailsResponse": {
        "properties": {
          "charge": {
            "$ref": "#/components/schemas/Charge2"
          },
          "payment_details": {
            "$ref": "#/components/schemas/PaymentDetails"
          },
          "period": {
            "$ref": "#/components/schemas/Period2"
          },
          "plan_description": {
            "example": "Localized plan description",
            "type": "string"
          },
          "plan_end_date": {
            "example": "2031-04-11T13:51:02+03:00",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "plan_external_id": {
            "example": "PlanExternalId",
            "type": "string"
          },
          "plan_group_id": {
            "example": "TestGroupId",
            "nullable": true,
            "type": "string"
          },
          "plan_id": {
            "example": "54321",
            "type": "integer"
          },
          "plan_name": {
            "example": "Localized plan name",
            "type": "string"
          },
          "plan_start_date": {
            "example": "2021-04-11T13:51:02+03:00",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "plan_type": {
            "example": "all",
            "type": "string"
          },
          "promotion": {
            "$ref": "#/components/schemas/Promotion"
          },
          "trial_period": {
            "example": "7",
            "nullable": true,
            "type": "integer"
          }
        },
        "required": [
          "plan_id",
          "plan_external_id",
          "plan_type",
          "plan_name",
          "plan_description",
          "period",
          "charge",
          "promotion",
          "payment_details"
        ],
        "type": "object"
      },
      "Charge": {
        "properties": {
          "amount": {
            "example": "4.99",
            "format": "float",
            "type": "number"
          },
          "amount_with_promotion": {
            "default": null,
            "example": "3.99",
            "format": "float",
            "nullable": true,
            "type": "number"
          },
          "currency": {
            "example": "USD",
            "type": "string"
          }
        },
        "required": [
          "amount",
          "currency"
        ],
        "type": "object"
      },
      "Charge2": {
        "properties": {
          "amount": {
            "example": "4.99",
            "format": "float",
            "type": "number"
          },
          "currency": {
            "example": "USD",
            "type": "string"
          },
          "setup_fee": {
            "example": "0.99",
            "format": "float",
            "nullable": true,
            "type": "number"
          }
        },
        "required": [
          "amount",
          "currency"
        ],
        "type": "object"
      },
      "Charge3": {
        "properties": {
          "amount": {
            "example": "4.99",
            "format": "float",
            "type": "number"
          },
          "amount_with_promotion": {
            "default": null,
            "example": "3.99",
            "format": "float",
            "nullable": true,
            "type": "number"
          },
          "currency": {
            "example": "USD",
            "type": "string"
          }
        },
        "required": [
          "amount",
          "currency"
        ],
        "type": "object"
      },
      "Charge4": {
        "properties": {
          "amount": {
            "example": "4.99",
            "format": "float",
            "type": "number"
          },
          "currency": {
            "example": "USD",
            "type": "string"
          },
          "setup_fee": {
            "example": "0.99",
            "format": "float",
            "nullable": true,
            "type": "number"
          }
        },
        "required": [
          "amount",
          "currency"
        ],
        "type": "object"
      },
      "Coupon": {
        "properties": {
          "campaign_code": {
            "type": "string"
          },
          "coupon_code": {
            "type": "string"
          },
          "coupon_id": {
            "type": "integer"
          },
          "expiration_date": {
            "type": "string"
          },
          "is_active": {
            "type": "boolean"
          },
          "project_id": {
            "type": "integer"
          },
          "redeems_count_for_user": {
            "type": "integer"
          },
          "redeems_count_remain": {
            "type": "integer"
          },
          "subscription_coupon": {
            "nullable": true,
            "type": "string"
          },
          "virtual_currency_amount": {
            "type": "integer"
          },
          "virtual_items": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "CouponAttribute": {
        "properties": {
          "key": {
            "description": "Clé de l'attribut utilisateur.",
            "type": "string"
          },
          "list_of_values": {
            "description": "Tableau des valeurs possibles de l'attribut de type enum.",
            "items": {
              "type": "object"
            },
            "type": "array"
          },
          "name": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LocalizedStringPairs"
              },
              {
                "description": "Noms localisés d'attributs."
              }
            ]
          },
          "skip_condition_on_nonexistent_key": {
            "description": "Indique si la condition doit être ignorée au cas où la clé n'existe pas.",
            "type": "boolean"
          },
          "type": {
            "description": "Type de clé.",
            "enum": [
              "int",
              "string",
              "enum",
              "date"
            ],
            "type": "string"
          },
          "visible": {
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "CreatePromotion": {
        "properties": {
          "description": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LocalizedStringPairs"
              },
              {
                "description": "Tableau des descriptions localisées de la promotion."
              }
            ]
          },
          "label": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LocalizedStringPairs"
              },
              {
                "description": "Tableau des étiquettes localisées à afficher dans l'interface de paiement."
              }
            ]
          },
          "name": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LocalizedStringPairs"
              },
              {
                "description": "Tableau des noms localisés de la promotion."
              }
            ]
          },
          "project_id": {
            "description": "ID de projet.",
            "type": "integer"
          },
          "technical_name": {
            "description": "Nom technique de la promotion.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "GetPromotion": {
        "allOf": [
          {
            "$ref": "#/components/schemas/CreatePromotion"
          },
          {
            "properties": {
              "enabled": {
                "type": "boolean"
              },
              "id": {
                "type": "integer"
              },
              "read_only": {
                "type": "boolean"
              },
              "show_banner": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        ]
      },
      "LastSuccessfulCharge": {
        "properties": {
          "amount": {
            "example": "3.99",
            "format": "float",
            "nullable": true,
            "type": "number"
          },
          "currency": {
            "example": "USD",
            "nullable": true,
            "type": "string"
          },
          "date": {
            "example": "2031-04-11T13:51:02+03:00",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "date"
        ],
        "type": "object"
      },
      "ListManagementSubscriptionsResponse": {
        "properties": {
          "has_more": {
            "example": "false",
            "type": "boolean"
          },
          "items": {
            "default": [],
            "items": {
              "$ref": "#/components/schemas/ManagementSubscriptionResponse2"
            },
            "type": "array"
          }
        },
        "required": [
          "has_more"
        ],
        "type": "object"
      },
      "ListPlansResponse": {
        "properties": {
          "has_more": {
            "example": "false",
            "type": "boolean"
          },
          "items": {
            "default": [],
            "items": {
              "$ref": "#/components/schemas/PlanResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "has_more"
        ],
        "type": "object"
      },
      "LocalizedStringPairs": {
        "properties": {
          "ar": {
            "description": "Arabe.",
            "type": "string"
          },
          "bg": {
            "description": "Bulgare.",
            "type": "string"
          },
          "cn": {
            "description": "Chinois (simplifié).",
            "type": "string"
          },
          "cs": {
            "description": "Tchèque.",
            "type": "string"
          },
          "de": {
            "description": "Allemand.",
            "type": "string"
          },
          "en": {
            "description": "Anglais.",
            "type": "string"
          },
          "es": {
            "description": "Espagnol.",
            "type": "string"
          },
          "fr": {
            "description": "Français.",
            "type": "string"
          },
          "he": {
            "description": "Hébreu.",
            "type": "string"
          },
          "it": {
            "description": "Italien.",
            "type": "string"
          },
          "ja": {
            "description": "Japonais.",
            "type": "string"
          },
          "ko": {
            "description": "Coréen.",
            "type": "string"
          },
          "pl": {
            "description": "Polonais.",
            "type": "string"
          },
          "pt": {
            "description": "Portugais.",
            "type": "string"
          },
          "ro": {
            "description": "Roumain.",
            "type": "string"
          },
          "ru": {
            "description": "Russe.",
            "type": "string"
          },
          "th": {
            "description": "Thaïlandais.",
            "type": "string"
          },
          "tr": {
            "description": "Turc.",
            "type": "string"
          },
          "tw": {
            "description": "Chinois (traditionnel).",
            "type": "string"
          },
          "vi": {
            "description": "Vietnamien.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "ManagementSubscriptionResponse": {
        "properties": {
          "charge": {
            "$ref": "#/components/schemas/Charge"
          },
          "date_create": {
            "example": "2031-04-11T13:51:02+03:00",
            "format": "date-time",
            "type": "string"
          },
          "date_end": {
            "example": "2031-04-11T13:51:02+03:00",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "date_last_charge": {
            "example": "2031-04-11T13:51:02+03:00",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "date_next_charge": {
            "example": "2031-04-11T13:51:02+03:00",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "id": {
            "example": "12345",
            "type": "integer"
          },
          "is_change_plan_allowed": {
            "example": "false",
            "type": "boolean"
          },
          "is_change_to_non_renew_possible": {
            "example": "true",
            "type": "boolean"
          },
          "is_in_trial": {
            "example": "false",
            "type": "boolean"
          },
          "is_renew_possible": {
            "example": "true",
            "type": "boolean"
          },
          "last_successful_charge": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/LastSuccessfulCharge"
              }
            ]
          },
          "payment_account": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PaymentRecurrentAccountResponse2"
              }
            ]
          },
          "period": {
            "$ref": "#/components/schemas/Period"
          },
          "plan_description": {
            "example": "Localized plan description",
            "type": "string"
          },
          "plan_name": {
            "example": "Localized plan name",
            "type": "string"
          },
          "product_description": {
            "example": "Localized product description",
            "nullable": true,
            "type": "string"
          },
          "product_name": {
            "example": "Product name",
            "nullable": true,
            "type": "string"
          },
          "status": {
            "example": "active",
            "type": "string"
          },
          "trial_period": {
            "example": "0",
            "nullable": true,
            "type": "integer"
          }
        },
        "required": [
          "id",
          "plan_name",
          "plan_description",
          "status",
          "is_in_trial",
          "date_create",
          "charge",
          "period",
          "is_renew_possible",
          "is_change_to_non_renew_possible",
          "is_change_plan_allowed"
        ],
        "type": "object"
      },
      "ManagementSubscriptionResponse2": {
        "properties": {
          "charge": {
            "$ref": "#/components/schemas/Charge3"
          },
          "date_create": {
            "example": "2031-04-11T13:51:02+03:00",
            "format": "date-time",
            "type": "string"
          },
          "date_last_charge": {
            "example": "2031-04-11T13:51:02+03:00",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "date_next_charge": {
            "example": "2031-04-11T13:51:02+03:00",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "id": {
            "example": "12345",
            "type": "integer"
          },
          "is_in_trial": {
            "example": "false",
            "type": "boolean"
          },
          "payment_account": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PaymentRecurrentAccountResponse3"
              }
            ]
          },
          "period": {
            "$ref": "#/components/schemas/Period3"
          },
          "plan_description": {
            "example": "Localized plan description",
            "type": "string"
          },
          "plan_name": {
            "example": "Localized plan name",
            "type": "string"
          },
          "product_description": {
            "example": "Localized product description",
            "nullable": true,
            "type": "string"
          },
          "product_name": {
            "example": "Product name",
            "nullable": true,
            "type": "string"
          },
          "status": {
            "example": "active",
            "type": "string"
          },
          "trial_period": {
            "example": "0",
            "nullable": true,
            "type": "integer"
          }
        },
        "required": [
          "id",
          "plan_name",
          "plan_description",
          "status",
          "is_in_trial",
          "date_create",
          "charge",
          "period"
        ],
        "type": "object"
      },
      "PayStationLinkResponse": {
        "properties": {
          "link_to_ps": {
            "example": "https://secure.xsolla.com/paystation2/?access_token=<access_token>",
            "type": "string"
          }
        },
        "required": [
          "link_to_ps"
        ],
        "type": "object"
      },
      "PaymentDetails": {
        "properties": {
          "surcharge": {
            "default": null,
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Surcharge"
              }
            ]
          },
          "unused": {
            "default": null,
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Unused"
              }
            ]
          }
        },
        "type": "object"
      },
      "PaymentRecurrentAccountResponse": {
        "properties": {
          "card_expiry_date": {
            "nullable": true,
            "properties": {
              "month": {
                "example": "09",
                "type": "string"
              },
              "year": {
                "example": "2023",
                "type": "string"
              }
            },
            "type": "object"
          },
          "id": {
            "example": "123",
            "type": "integer"
          },
          "name": {
            "example": "** 7398",
            "nullable": true,
            "type": "string"
          },
          "ps_name": {
            "example": "Mastercard",
            "nullable": true,
            "type": "string"
          },
          "switch_icon_name": {
            "example": "mastercard.svg",
            "nullable": true,
            "type": "string"
          },
          "type": {
            "example": "card",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type"
        ],
        "type": "object"
      },
      "PaymentRecurrentAccountResponse2": {
        "properties": {
          "card_expiry_date": {
            "nullable": true,
            "properties": {
              "month": {
                "example": "09",
                "type": "string"
              },
              "year": {
                "example": "2023",
                "type": "string"
              }
            },
            "type": "object"
          },
          "id": {
            "example": "123",
            "type": "integer"
          },
          "name": {
            "example": "** 7398",
            "nullable": true,
            "type": "string"
          },
          "ps_name": {
            "example": "Mastercard",
            "nullable": true,
            "type": "string"
          },
          "switch_icon_name": {
            "example": "mastercard.svg",
            "nullable": true,
            "type": "string"
          },
          "type": {
            "example": "card",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type"
        ],
        "type": "object"
      },
      "PaymentRecurrentAccountResponse3": {
        "properties": {
          "card_expiry_date": {
            "nullable": true,
            "properties": {
              "month": {
                "example": "09",
                "type": "string"
              },
              "year": {
                "example": "2023",
                "type": "string"
              }
            },
            "type": "object"
          },
          "id": {
            "example": "123",
            "type": "integer"
          },
          "name": {
            "example": "** 7398",
            "nullable": true,
            "type": "string"
          },
          "ps_name": {
            "example": "Mastercard",
            "nullable": true,
            "type": "string"
          },
          "switch_icon_name": {
            "example": "mastercard.svg",
            "nullable": true,
            "type": "string"
          },
          "type": {
            "example": "card",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type"
        ],
        "type": "object"
      },
      "PaymentSystemResponse": {
        "properties": {
          "id": {
            "example": "12345",
            "type": "integer"
          },
          "name": {
            "example": "PayPal",
            "nullable": true,
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "Period": {
        "properties": {
          "unit": {
            "default": null,
            "example": "month",
            "nullable": true,
            "type": "string"
          },
          "value": {
            "default": null,
            "example": "1",
            "nullable": true,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "Period2": {
        "properties": {
          "unit": {
            "default": null,
            "example": "month",
            "nullable": true,
            "type": "string"
          },
          "value": {
            "default": null,
            "example": "1",
            "nullable": true,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "Period3": {
        "properties": {
          "unit": {
            "default": null,
            "example": "month",
            "nullable": true,
            "type": "string"
          },
          "value": {
            "default": null,
            "example": "1",
            "nullable": true,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "Period4": {
        "properties": {
          "unit": {
            "default": null,
            "example": "month",
            "nullable": true,
            "type": "string"
          },
          "value": {
            "default": null,
            "example": "1",
            "nullable": true,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "PlanResponse": {
        "properties": {
          "charge": {
            "$ref": "#/components/schemas/Charge4"
          },
          "period": {
            "$ref": "#/components/schemas/Period4"
          },
          "plan_description": {
            "example": "Localized plan description",
            "type": "string"
          },
          "plan_end_date": {
            "example": "2031-04-11T13:51:02+03:00",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "plan_external_id": {
            "example": "PlanExternalId",
            "type": "string"
          },
          "plan_group_id": {
            "example": "TestGroupId",
            "nullable": true,
            "type": "string"
          },
          "plan_id": {
            "example": "54321",
            "type": "integer"
          },
          "plan_name": {
            "example": "Localized plan name",
            "type": "string"
          },
          "plan_start_date": {
            "example": "2021-04-11T13:51:02+03:00",
            "format": "date-time",
            "nullable": true,
            "type": "string"
          },
          "plan_type": {
            "example": "all",
            "type": "string"
          },
          "promotion": {
            "$ref": "#/components/schemas/Promotion2"
          },
          "trial_period": {
            "example": "7",
            "nullable": true,
            "type": "integer"
          }
        },
        "required": [
          "plan_id",
          "plan_external_id",
          "plan_type",
          "plan_name",
          "plan_description",
          "period",
          "charge",
          "promotion"
        ],
        "type": "object"
      },
      "ProjectManageSubscriptionSettingsResponse": {
        "properties": {
          "allow_change_package": {
            "example": "true",
            "type": "boolean"
          },
          "recurrent_cancel_possible": {
            "example": "true",
            "type": "boolean"
          }
        },
        "required": [
          "recurrent_cancel_possible",
          "allow_change_package"
        ],
        "type": "object"
      },
      "Promotion": {
        "properties": {
          "promotion_charge_amount": {
            "default": null,
            "example": "3.99",
            "format": "float",
            "nullable": true,
            "type": "number"
          },
          "promotion_remaining_charges": {
            "default": null,
            "example": "3",
            "nullable": true,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "Promotion2": {
        "properties": {
          "promotion_charge_amount": {
            "default": null,
            "example": "3.99",
            "format": "float",
            "nullable": true,
            "type": "number"
          },
          "promotion_remaining_charges": {
            "default": null,
            "example": "3",
            "nullable": true,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "PromotionPaymentSystem": {
        "properties": {
          "payment_systems": {
            "description": "Systèmes de paiement.",
            "items": {
              "properties": {
                "id": {
                  "description": "ID de système de paiement.",
                  "type": "integer"
                },
                "name": {
                  "description": "Nom de système de paiement.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "PromotionPeriod": {
        "properties": {
          "periods": {
            "description": "Plages de dates et d'heures.",
            "items": {
              "properties": {
                "from": {
                  "description": "Début de la période.",
                  "format": "datetime",
                  "type": "string"
                },
                "offset": {
                  "description": "Numéro de l'élément à partir duquel la liste est générée (le décompte commence à 0).",
                  "type": "string"
                },
                "to": {
                  "description": "Fin de la période.",
                  "format": "datetime",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "PromotionReward": {
        "properties": {
          "item": {
            "description": "Définit la récompense pour l'achat des objets virtuels spécifiques.",
            "properties": {
              "bonus": {
                "description": "Objets virtuels supplémentaires octroyés en bonus.",
                "items": {
                  "properties": {
                    "id": {
                      "type": "integer"
                    },
                    "localized_name": {
                      "description": "Nom du plan dans la langue par défaut (en), répète la valeur du paramètre name.en.",
                      "type": "string"
                    },
                    "quantity": {
                      "description": "Nombre d'objets virtuels octroyés en bonus.",
                      "type": "integer"
                    },
                    "sku": {
                      "description": "UGS de l'objet.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "discount": {
                "description": "Remises pour l'achat des objets virtuels spécifiques.",
                "items": {
                  "properties": {
                    "discount_percent": {
                      "description": "Pourcentage de remise.",
                      "format": "float",
                      "type": "number"
                    },
                    "localized_name": {
                      "description": "Nom du plan dans la langue par défaut (en), répète la valeur du paramètre name.en.",
                      "type": "string"
                    },
                    "max_amount": {
                      "description": "Nombre maximal d'objets auxquels la promotion s'applique.",
                      "format": "integer",
                      "type": "number"
                    },
                    "sku": {
                      "description": "UGS de l'objet.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "package": {
            "description": "Définit la récompense pour l'achat d'un package de monnaie virtuelle.",
            "properties": {
              "bonus_amount": {
                "description": "Récompense sous forme d'une quantité absolue de monnaie virtuelle.",
                "format": "float",
                "type": "number"
              },
              "bonus_percent": {
                "description": "Récompense sous forme d'un pourcentage de la quantité de monnaie virtuelle dans le package.",
                "format": "float",
                "type": "number"
              }
            },
            "type": "object"
          },
          "purchase": {
            "description": "Définit la récompense pour l'ensemble de la commande.",
            "properties": {
              "discount_percent": {
                "description": "Pourcentage de remise.",
                "format": "float",
                "type": "number"
              }
            },
            "type": "object"
          },
          "subscription": {
            "description": "Définit la récompense pour l'abonnement.",
            "properties": {
              "trial_days": {
                "description": "Période d'essai en jours.",
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "PromotionSubject": {
        "properties": {
          "digital_contents": {
            "nullable": true,
            "type": "object"
          },
          "items": {
            "description": "Tableau des objets virtuels auxquels la promotion s'applique.",
            "items": {
              "properties": {
                "id": {
                  "type": "integer"
                },
                "localized_name": {
                  "description": "Nom du plan dans la langue par défaut (en), répète la valeur du paramètre name.en.",
                  "type": "string"
                },
                "sku": {
                  "description": "UGS de l'objet.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "packages": {
            "description": "Tableau des packages de monnaie virtuelle auxquels la promotion s'applique.",
            "items": {
              "type": "object"
            },
            "nullable": true,
            "type": "array"
          },
          "purchase": {
            "description": "Indique si la promotion s'applique à l'ensemble de la commande.",
            "type": "boolean"
          },
          "subscriptions": {
            "description": "Plans d'abonnement ou produits auxquels la promotion s'applique.",
            "nullable": true,
            "properties": {
              "max_charges_count": {
                "description": "Nombre maximal de facturations auxquelles la promotion s'applique.",
                "type": "integer"
              },
              "plans": {
                "items": {
                  "description": "Tableau des plans d'abonnement auxquels la promotion s'applique.",
                  "type": "string"
                },
                "type": "array"
              },
              "products": {
                "items": {
                  "description": "Tableau des produits par abonnement auxquels la promotion s'applique.",
                  "type": "string"
                },
                "type": "array"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "Subscription": {
        "properties": {
          "cancel_subscription_payment": {
            "description": "Définir sur `true` rembourse le dernier paiement effectué pour cet abonnement. **Ne fonctionne que si le statut du paiement est `canceled`**.",
            "type": "boolean"
          },
          "status": {
            "description": "Statut.",
            "enum": [
              "active",
              "canceled",
              "non_renewing"
            ],
            "type": "string"
          },
          "timeshift": {
            "description": "Report de facturation.",
            "properties": {
              "type": {
                "description": "Unité de temps de facturation. La valeur peut être `day` ou `month`.",
                "enum": [
                  "day",
                  "month"
                ],
                "type": "string"
              },
              "value": {
                "description": "Nombre d'unités de temps pour reporter la facturation. La valeur dépend du paramètre type et peut être : <br>- de 1 à 366, si `type` est défini sur `day` ;<br>- de 1 à 12, si `type` est défini sur `month`.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "xsolla_network": {
            "properties": {
              "collaborator_id": {
                "description": "ID de collaborateur – identifiant d'[influenceur](https://developers.xsolla.com/fr/doc/partner-network/#guides_network_glossary_influencer) ou de [réseau d'affiliation](https://developers.xsolla.com/fr/doc/partner-network/#guides_network_glossary_affiliate_network). Il se trouve dans le compte éditeur sous la section **Partner Network > Influencers**.",
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "SubscriptionResponse": {
        "properties": {
          "charge_amount": {
            "description": "Montant de facturation.",
            "format": "float",
            "type": "number"
          },
          "comment": {
            "description": "Raison du changement de statut de l'abonnement",
            "type": "string"
          },
          "currency": {
            "description": "Devise d'achat. Code de devise à trois lettres selon la norme ISO 4217.",
            "type": "string"
          },
          "date_create": {
            "description": "Date de création de l'abonnement au format `YYYY-MM-DD’T’HH:MM:SS` selon la norme [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601).",
            "format": "datetime",
            "type": "string"
          },
          "date_end": {
            "description": "Date de fin d'abonnement au format `YYYY-MM-DD’T’HH:MM:SS` selon la norme [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601).",
            "format": "datetime",
            "type": "string"
          },
          "date_last_charge": {
            "description": "Date de la dernière facturation de l'abonnement au format `YYYY-MM-DD’T’HH:MM:SS` selon la norme [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601).",
            "format": "datetime",
            "nullable": true,
            "type": "string"
          },
          "date_next_charge": {
            "description": "Date de la prochaine facturation de l'abonnement au format `YYYY-MM-DD’T’HH:MM:SS` selon la norme [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601).",
            "format": "datetime",
            "nullable": true,
            "type": "string"
          },
          "id": {
            "description": "ID d'abonnement",
            "type": "integer"
          },
          "plan": {
            "allOf": [
              {
                "$ref": "#/components/schemas/SubscriptionsPlan"
              }
            ]
          },
          "product": {
            "allOf": [
              {
                "$ref": "#/components/schemas/SubscriptionsProductWithId"
              }
            ]
          },
          "status": {
            "description": "Statut",
            "enum": [
              "new",
              "active",
              "canceled",
              "non_renewing",
              "freeze"
            ],
            "type": "string"
          },
          "user": {
            "allOf": [
              {
                "$ref": "#/components/schemas/User"
              }
            ]
          }
        },
        "type": "object"
      },
      "SubscriptionsPlan": {
        "properties": {
          "billing_retry": {
            "description": "Informations sur la relance de la facturation.",
            "properties": {
              "value": {
                "description": "Nombre de relances de facturation.",
                "type": "integer"
              }
            },
            "required": [
              "value"
            ],
            "type": "object"
          },
          "charge": {
            "description": "Informations de facturation.",
            "properties": {
              "amount": {
                "description": "Montant de facturation.",
                "format": "float",
                "type": "number"
              },
              "currency": {
                "description": "Devise d'achat. Code de devise à trois lettres selon la norme [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217).",
                "type": "string"
              },
              "period": {
                "description": "Période de facturation.",
                "properties": {
                  "type": {
                    "description": "Unité de temps. La valeur peut être `day`, `month` ou `lifetime`.",
                    "enum": [
                      "day",
                      "month",
                      "lifetime"
                    ],
                    "type": "string"
                  },
                  "value": {
                    "description": "Nombre d'unités de temps. La valeur dépend du paramètre type et peut être : <br>- de 1 à 366, si `type` est défini sur `day` ;<br>- de 1 à 12, si `type` est défini sur `month` ;<br>- 0 si `type` est défini sur `lifetime`.",
                    "type": "integer"
                  }
                },
                "required": [
                  "value",
                  "type"
                ],
                "type": "object"
              },
              "prices": {
                "description": "Liste des prix dans différentes devises.",
                "items": {
                  "properties": {
                    "amount": {
                      "description": "Montant de facturation.",
                      "format": "float",
                      "type": "number"
                    },
                    "currency": {
                      "description": "Devise d'achat. Code de devise à trois lettres selon la norme [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217).",
                      "type": "string"
                    },
                    "setup_fee": {
                      "description": "Frais de mise en service uniques facturés dans le cadre de la première facture.",
                      "format": "float",
                      "type": "number"
                    }
                  },
                  "required": [
                    "amount",
                    "currency"
                  ],
                  "type": "object"
                },
                "type": "array"
              }
            },
            "required": [
              "period"
            ],
            "type": "object"
          },
          "description": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LocalizedStringPairs"
              },
              {
                "description": "Description du plan. La valeur est constituée de paires \"localization\":\"plan description\"."
              }
            ]
          },
          "expiration": {
            "description": "Informations sur l'expiration de l'abonnement.",
            "properties": {
              "type": {
                "description": "Unité de temps. La valeur peut être `day` ou `month`.",
                "enum": [
                  "day",
                  "month"
                ],
                "type": "string"
              },
              "value": {
                "description": "Durée de validité.",
                "nullable": true,
                "type": "integer"
              }
            },
            "required": [
              "value",
              "type"
            ],
            "type": "object"
          },
          "external_id": {
            "description": "ID externe du plan (32 caractères).",
            "type": "string"
          },
          "grace_period": {
            "description": "Informations sur le délai de grâce.",
            "properties": {
              "type": {
                "description": "Unité de temps. L'unique valeur possible est `day`.",
                "enum": [
                  "day"
                ],
                "type": "string"
              },
              "value": {
                "description": "Nombre d'unités de temps.",
                "type": "integer"
              }
            },
            "required": [
              "value",
              "type"
            ],
            "type": "object"
          },
          "group_id": {
            "description": "ID du groupe auquel le plan est lié.",
            "nullable": true,
            "type": "string"
          },
          "id": {
            "description": "ID de plan d'abonnement.",
            "type": "integer"
          },
          "name": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LocalizedStringPairs"
              },
              {
                "description": "Nom du plan. La valeur est constituée de paires \"localization\":\"plan name\"."
              }
            ]
          },
          "project_id": {
            "description": "ID de projet.",
            "type": "integer"
          },
          "refund_period": {
            "description": "Période durant laquelle l'utilisateur peut se faire rembourser le paiement d'un abonnement (en jours).",
            "nullable": true,
            "type": "integer"
          },
          "status": {
            "properties": {
              "value": {
                "description": "Statut de plan d'abonnement.",
                "enum": [
                  "active",
                  "disabled"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "tags": {
            "description": "Balises du plan.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "trial": {
            "description": "Informations sur la période d'essai.",
            "properties": {
              "type": {
                "description": "Unité de temps. L'unique valeur possible est `day`.",
                "enum": [
                  "day"
                ],
                "type": "string"
              },
              "value": {
                "description": "Nombre d'unités de temps.",
                "type": "integer"
              }
            },
            "required": [
              "value",
              "type"
            ],
            "type": "object"
          }
        },
        "type": "object"
      },
      "SubscriptionsPlanRequest": {
        "properties": {
          "billing_retry": {
            "description": "Informations sur la relance de la facturation.",
            "properties": {
              "value": {
                "description": "Nombre de relances de facturation.",
                "type": "integer"
              }
            },
            "required": [
              "value"
            ],
            "type": "object"
          },
          "charge": {
            "description": "Informations de facturation.",
            "properties": {
              "amount": {
                "description": "Montant de facturation.",
                "format": "float",
                "type": "number"
              },
              "currency": {
                "description": "Devise d'achat. Code de devise à trois lettres selon la norme [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217).",
                "type": "string"
              },
              "period": {
                "description": "Période de facturation.",
                "properties": {
                  "type": {
                    "description": "Unité de temps. La valeur peut être `day`, `month` ou `lifetime`.",
                    "enum": [
                      "day",
                      "month",
                      "lifetime"
                    ],
                    "type": "string"
                  },
                  "value": {
                    "description": "Nombre d'unités de temps. La valeur dépend du paramètre type et peut être : <br>- de 1 à 366, si `type` est défini sur `day` ;<br>- de 1 à 12, si `type` est défini sur `month` ;<br>- 0 si `type` est défini sur `lifetime`.",
                    "type": "integer"
                  }
                },
                "required": [
                  "value",
                  "type"
                ],
                "type": "object"
              },
              "prices": {
                "description": "Liste des prix dans différentes devises.",
                "items": {
                  "properties": {
                    "amount": {
                      "description": "Montant de facturation.",
                      "format": "float",
                      "type": "number"
                    },
                    "currency": {
                      "description": "Devise d'achat. Code de devise à trois lettres selon la norme [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217).",
                      "type": "string"
                    },
                    "setup_fee": {
                      "description": "Frais de mise en service uniques facturés dans le cadre de la première facture.",
                      "format": "float",
                      "type": "number"
                    }
                  },
                  "required": [
                    "amount",
                    "currency"
                  ],
                  "type": "object"
                },
                "type": "array"
              }
            },
            "required": [
              "period"
            ],
            "type": "object"
          },
          "description": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LocalizedStringPairs"
              },
              {
                "description": "Description du plan. La valeur est constituée de paires \"localization\":\"plan description\"."
              }
            ]
          },
          "expiration": {
            "description": "Informations sur l'expiration de l'abonnement.",
            "properties": {
              "type": {
                "description": "Unité de temps. La valeur peut être `day` ou `month`.",
                "enum": [
                  "day",
                  "month"
                ],
                "type": "string"
              },
              "value": {
                "description": "Durée de validité.",
                "nullable": true,
                "type": "integer"
              }
            },
            "required": [
              "value",
              "type"
            ],
            "type": "object"
          },
          "external_id": {
            "description": "ID externe du plan (32 caractères).",
            "type": "string"
          },
          "grace_period": {
            "description": "Informations sur le délai de grâce.",
            "properties": {
              "type": {
                "description": "Unité de temps. L'unique valeur possible est `day`.",
                "enum": [
                  "day"
                ],
                "type": "string"
              },
              "value": {
                "description": "Nombre d'unités de temps.",
                "type": "integer"
              }
            },
            "required": [
              "value",
              "type"
            ],
            "type": "object"
          },
          "group_id": {
            "description": "ID du groupe auquel le plan est lié.",
            "type": "string"
          },
          "name": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LocalizedStringPairs"
              },
              {
                "description": "Nom du plan. La valeur est constituée de paires \"localization\":\"plan name\"."
              }
            ]
          },
          "refund_period": {
            "description": "Période durant laquelle l'utilisateur peut se faire rembourser le paiement d'un abonnement (en jours).",
            "nullable": true,
            "type": "integer"
          },
          "status": {
            "properties": {
              "value": {
                "description": "Statut de plan d'abonnement.",
                "enum": [
                  "active",
                  "disabled"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "tags": {
            "description": "Balises du plan.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "trial": {
            "description": "Informations sur la période d'essai. Si ce paramètre n'est pas passé, les valeurs par défaut (0 jour) sont utilisées.",
            "properties": {
              "type": {
                "description": "Unité de temps. L'unique valeur possible est `day`.",
                "enum": [
                  "day"
                ],
                "type": "string"
              },
              "value": {
                "description": "Nombre d'unités de temps.",
                "type": "integer"
              }
            },
            "required": [
              "value",
              "type"
            ],
            "type": "object"
          }
        },
        "type": "object"
      },
      "SubscriptionsProduct": {
        "nullable": true,
        "properties": {
          "description": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LocalizedStringPairs"
              },
              {
                "description": "Descriptions localisées de l'objet."
              }
            ]
          },
          "group_id": {
            "description": "ID du groupe auquel le produit est lié.",
            "type": "string"
          },
          "name": {
            "description": "Nom du produit.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "SubscriptionsProductWithId": {
        "allOf": [
          {
            "properties": {
              "id": {
                "description": "ID du produit auquel les plans sont liés.",
                "nullable": true,
                "type": "integer"
              }
            },
            "type": "object"
          },
          {
            "$ref": "#/components/schemas/SubscriptionsProduct"
          }
        ]
      },
      "Surcharge": {
        "properties": {
          "surcharge_amount": {
            "default": null,
            "example": "1.99",
            "format": "float",
            "nullable": true,
            "type": "number"
          },
          "surcharge_currency": {
            "default": null,
            "example": "USD",
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "Unused": {
        "properties": {
          "unused_amount": {
            "default": null,
            "example": "1.99",
            "format": "float",
            "nullable": true,
            "type": "number"
          },
          "unused_currency": {
            "default": null,
            "example": "USD",
            "nullable": true,
            "type": "string"
          }
        },
        "type": "object"
      },
      "User": {
        "properties": {
          "id": {
            "description": "ID utilisateur",
            "type": "string"
          },
          "name": {
            "description": "Nom d'utilisateur",
            "type": "string"
          }
        },
        "type": "object"
      },
      "token": {
        "example": {
          "purchase": {
            "checkout": {
              "amount": 10,
              "currency": "USD"
            },
            "subscription": {
              "gift": {
                "email": "recipient_email@email.com",
                "recipient": "test_recipient_v1"
              }
            }
          },
          "settings": {
            "currency": "USD",
            "language": "en",
            "project_id": 16184,
            "ui": {
              "components": {
                "virtual_currency": {
                  "custom_amount": true
                }
              },
              "desktop": {
                "virtual_item_list": {
                  "button_with_price": true,
                  "layout": "list"
                }
              },
              "size": "medium"
            }
          },
          "user": {
            "age": 19,
            "country": {
              "allow_modify": true,
              "value": "US"
            },
            "email": {
              "value": "john.smith@mail.com"
            },
            "id": {
              "value": "user_2"
            },
            "name": {
              "value": "John Smith"
            }
          }
        },
        "properties": {
          "custom_parameters": {
            "description": "Vous pouvez passer des paramètres supplémentaires dans le jeton dans l'objet `custom_parameters` pour configurer les filtres anti-fraude. Les paramètres recommandés sont indiqués dans la liste déroulante. [Voir la documentation de Pay Station](https://developers.xsolla.com/fr/doc/pay-station/features/antifraud/).",
            "properties": {
              "active_date": {
                "description": "Date de dernière visite selon la norme [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601).",
                "type": "string"
              },
              "additional_verification": {
                "description": "Indique si le joueur utilise des méthodes de vérification de compte.",
                "type": "boolean"
              },
              "character_customized": {
                "description": "Indique si le joueur a personnalisé son personnage.",
                "type": "boolean"
              },
              "chat_activity": {
                "description": "Indique si le joueur utilise la fonction de chat.",
                "type": "boolean"
              },
              "completed_tasks": {
                "description": "Nombre de tâches/objectifs terminés.",
                "type": "integer"
              },
              "forum_activity": {
                "description": "Indique si le joueur utilise la fonction forum.",
                "type": "boolean"
              },
              "items_used": {
                "description": "Indique si le joueur utilise des objets achetés dans le jeu.",
                "type": "boolean"
              },
              "karma_points": {
                "description": "Karma du joueur.",
                "type": "integer"
              },
              "last_change_password_date": {
                "description": "Date de dernier changement de mot de passe selon la norme [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601).",
                "type": "string"
              },
              "non_premium_currency": {
                "description": "Quantité de la monnaie non-premium.",
                "format": "float",
                "type": "integer"
              },
              "notifications_enabled": {
                "description": "Indique si le joueur a activé les notifications.",
                "type": "boolean"
              },
              "profile_completed": {
                "description": "Indique si le joueur a ajouté des informations supplémentaires à son profil.",
                "type": "boolean"
              },
              "profile_image_added": {
                "description": "Indique si le joueur a téléchargé une image de profil.",
                "type": "boolean"
              },
              "pvp_activity": {
                "description": "Indique si le joueur participe à des combats JcJ.",
                "type": "boolean"
              },
              "registration_date": {
                "description": "Date de création de compte selon la norme [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601).",
                "type": "string"
              },
              "session_time": {
                "description": "Durée moyenne de session selon la norme [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601).",
                "type": "string"
              },
              "social_networks_added": {
                "description": "Indique si le joueur a connecté des profils de médias sociaux.",
                "type": "boolean"
              },
              "total_bans": {
                "description": "Nombre de fois que le joueur a été banni du chat/forum.",
                "type": "integer"
              },
              "total_characters": {
                "description": "Nombre de personnages dans le jeu.",
                "type": "integer"
              },
              "total_clans": {
                "description": "Nombre de clans dont le joueur est membre.",
                "type": "integer"
              },
              "total_friends": {
                "description": "Nombre d'amis.",
                "type": "integer"
              },
              "total_game_events": {
                "description": "Nombre d'événements en jeu auxquels le joueur a participé.",
                "type": "integer"
              },
              "total_gifts": {
                "description": "Nombre de cadeaux en jeu que le joueur a envoyés/reçus.",
                "type": "integer"
              },
              "total_hours": {
                "description": "Nombre total d'heures passées dans le jeu.",
                "type": "integer"
              },
              "total_inventory_value": {
                "description": "Valeur totale de l'inventaire en monnaie de jeu.",
                "format": "float",
                "type": "integer"
              },
              "total_sum": {
                "description": "Montant total des paiements.",
                "format": "float",
                "type": "integer"
              },
              "tutorial_completed": {
                "description": "Indique si le joueur a terminé le tutoriel du jeu.",
                "type": "boolean"
              },
              "unlocked_achievements": {
                "description": "Nombre de réalisations débloquées.",
                "type": "integer"
              },
              "user_level": {
                "description": "Niveau, réputation ou rang du joueur.",
                "type": "integer"
              },
              "win_rate": {
                "description": "Taux de victoire du joueur.",
                "type": "integer"
              }
            },
            "type": "object"
          },
          "purchase": {
            "description": "Informations sur l'achat.",
            "properties": {
              "checkout": {
                "description": "Informations sur le paiement.",
                "properties": {
                  "amount": {
                    "description": "Montant de l'achat.",
                    "format": "float",
                    "type": "integer"
                  },
                  "currency": {
                    "description": "Devise d'achat. Code de devise à trois lettres selon la norme [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217).",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "subscription": {
                "description": "Données d'abonnement.",
                "properties": {
                  "available_plans": {
                    "description": "Plans d'abonnement à afficher dans l'interface de paiement.",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "currency": {
                    "description": "Devise du plan d'abonnement à utiliser dans tous les calculs.",
                    "type": "string"
                  },
                  "gift": {
                    "description": "Informations sur l'abonnement cadeau",
                    "properties": {
                      "anonymous": {
                        "description": "Détermine le masquage du donateur. Si `true`, le nom de l'expéditeur est masqué dans la notification par e-mail. La valeur par défaut est `false`.",
                        "type": "boolean"
                      },
                      "email": {
                        "description": "Adresse e-mail du destinataire.",
                        "type": "string"
                      },
                      "message": {
                        "description": "Message pour le destinataire.",
                        "type": "string"
                      },
                      "recipient": {
                        "description": "ID du destinataire.",
                        "type": "string"
                      },
                      "redirect_url": {
                        "description": "Fournissez ici un lien vers une page contenant des informations supplémentaires sur l'abonnement cadeau ou vers la page de création de compte. Le destinataire du cadeau peut naviguer vers cette page à partir de la notification par e-mail du cadeau d'abonnement.",
                        "type": "string"
                      }
                    },
                    "required": [
                      "recipient",
                      "email"
                    ],
                    "type": "object"
                  },
                  "operation": {
                    "description": "Type d'opération appliqué au plan d'abonnement de l'utilisateur. Pour modifier le plan d'abonnement, passez la valeur `change_plan`. Vous devez passer l'ID du nouveau plan dans le paramètre `purchase.subscription.plan_id`.",
                    "type": "string"
                  },
                  "plan_id": {
                    "description": "ID externe du plan d'abonnement. Il se trouve dans le compte éditeur sous la section **Subscriptions > Subscription plans**.",
                    "type": "string"
                  },
                  "product_id": {
                    "description": "ID de produit.",
                    "type": "string"
                  },
                  "trial_days": {
                    "description": "Période d'essai en jours.",
                    "type": "integer"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          },
          "settings": {
            "description": "Paramètres personnalisés de projet.",
            "properties": {
              "currency": {
                "description": "Devise de paiement préférée. Code de devise à trois lettres selon la norme [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217).",
                "type": "string"
              },
              "external_id": {
                "description": "ID de transaction dans le jeu. Il doit être unique pour chaque paiement d'utilisateur.",
                "type": "string"
              },
              "language": {
                "description": "Langue d'interface. [Code de langue](https://developers.xsolla.com/fr/doc/pay-station/features/localization/) à deux lettres minuscules.",
                "type": "string"
              },
              "mode": {
                "description": "Passez la valeur `sandbox` pour tester le processus de paiement. Dans ce cas, utilisez l'URL *https://sandbox-secure.xsolla.com* pour accéder à l'interface de paiement de test.",
                "type": "string"
              },
              "payment_method": {
                "description": "ID de mode de paiement.",
                "type": "integer"
              },
              "payment_widget": {
                "description": "Widget de paiement. La valeur peut être `paybycash` ou `giftcard`. Si le paramètre est défini, l'utilisateur est redirigé vers le widget Pay by Cash ou Gift Cards, respectivement.",
                "enum": [
                  "paybycash",
                  "giftcard"
                ],
                "type": "string"
              },
              "project_id": {
                "description": "ID Xsolla du jeu. Il se trouve dans le compte éditeur.",
                "type": "integer"
              },
              "redirect_policy": {
                "description": "Paramètres de la politique de redirection.",
                "properties": {
                  "autoredirect_from_status_page": {
                    "description": "Détermine si l'utilisateur doit être redirigé automatiquement à partir de la page d'état.",
                    "type": "boolean"
                  },
                  "delay": {
                    "description": "Délai (en secondes) après lequel l'utilisateur est automatiquement redirigé vers l'URL de retour.",
                    "type": "integer"
                  },
                  "manual_redirection_action": {
                    "description": "Comportement de Pay Station lorsque l'utilisateur ferme la fenêtre ou clique sur le bouton **Back to the Game**. La valeur peut être `redirect` (par défaut) ou `postmessage`. Si le paramètre est défini sur `redirect`, l'utilisateur est redirigé vers l'URL passée dans le jeton ou spécifiée dans le compte éditeur. S'il est défini sur `postmessage`, l'utilisateur n'est pas redirigé vers une autre page. Dans ce cas, la fermeture de la fenêtre déclenche l'envoi de l'événement `close`, tandis qu'un clic sur le bouton **Back to the Game**, l'envoi de l'événement `return`.",
                    "enum": [
                      "redirect",
                      "postmessage"
                    ],
                    "type": "string"
                  },
                  "redirect_button_caption": {
                    "description": "Texte du bouton de redirection manuelle.",
                    "type": "string"
                  },
                  "redirect_conditions": {
                    "description": "Statut de paiement pour lequel l'utilisateur est redirigé vers l'URL de retour. La valeur peut être `none`, `successful`, `successful_or_canсeled`, ou `any`.",
                    "enum": [
                      "none",
                      "successful",
                      "successful_or_canceled",
                      "any"
                    ],
                    "type": "string"
                  },
                  "status_for_manual_redirection": {
                    "description": "Statut de paiement pour lequel le bouton de redirection de l'utilisateur vers l'URL de retour apparaît. La valeur peut être `none`, `successful`, `successful_or_canсeled`, ou `any`.",
                    "enum": [
                      "none",
                      "successful",
                      "successful_or_canceled",
                      "any"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "return_url": {
                "description": "Page vers laquelle rediriger l'utilisateur après le paiement. Les paramètres `user_id`, `foreigninvoice`, `invoice_id` et `status` seront automatiquement ajoutés au lien.",
                "type": "string"
              },
              "ui": {
                "description": "Paramètres d'interface.",
                "properties": {
                  "components": {
                    "description": "Paramètres de menu.",
                    "properties": {
                      "subscriptions": {
                        "description": "Paramètres du sous-menu des plans d'abonnement.",
                        "properties": {
                          "hidden": {
                            "description": "Détermine l'affichage du sous-menu.",
                            "type": "boolean"
                          },
                          "order": {
                            "description": "Position du sous-menu dans le menu.",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "virtual_currency": {
                        "description": "Paramètres du sous-menu de la monnaie virtuelle.",
                        "properties": {
                          "custom_amount": {
                            "description": "Détermine si l'utilisateur peut saisir une quantité aléatoire de monnaie virtuelle dans l'interface de paiement.",
                            "type": "boolean"
                          },
                          "hidden": {
                            "description": "Détermine l'affichage du sous-menu.",
                            "type": "boolean"
                          },
                          "order": {
                            "description": "Position du sous-menu dans le menu.",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      },
                      "virtual_items": {
                        "description": "Paramètres du sous-menu des objets virtuels.",
                        "properties": {
                          "hidden": {
                            "description": "Détermine l'affichage du sous-menu.",
                            "type": "boolean"
                          },
                          "order": {
                            "description": "Position du sous-menu dans le menu.",
                            "type": "integer"
                          },
                          "selected_group": {
                            "description": "Groupe à afficher après l'ouverture de l'onglet des objets virtuels.",
                            "type": "string"
                          },
                          "selected_item": {
                            "description": "Objet à afficher après l'ouverture de l'onglet des objets virtuels (UGS de l'objet).",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "desktop": {
                    "description": "Paramètres de l'interface pour la version de bureau.",
                    "properties": {
                      "header": {
                        "description": "Paramètres de l'en-tête.",
                        "properties": {
                          "close_button": {
                            "description": "Détermine l'affichage du bouton Fermer sur la version de bureau de Pay Station. Un clic sur ce bouton ferme Pay Station et redirige l'utilisateur vers l'URL passée dans le paramètre `settings.return_url`. Défini sur `false` par défaut.",
                            "type": "boolean"
                          },
                          "is_visible": {
                            "description": "Détermine l'affichage de l'en-tête dans l'interface de paiement.",
                            "type": "boolean"
                          },
                          "type": {
                            "description": "Apparence de l'en-tête. La valeur peut être `compact` (le nom du projet et l'ID utilisateur ne s'affichent pas) ou `normal` (par défaut).",
                            "enum": [
                              "compact",
                              "normal"
                            ],
                            "type": "string"
                          },
                          "visible_logo": {
                            "description": "Si défini sur `true`, votre logo s'affiche dans l'en-tête (vous devez avoir fourni l'image à votre responsable de la réussite client).",
                            "type": "boolean"
                          },
                          "visible_name": {
                            "description": "Détermine l'affichage du nom du projet dans l'en-tête.",
                            "type": "boolean"
                          },
                          "visible_purchase": {
                            "description": "Détermine l'affichage de la description de l'achat (`purchase.description.value`) dans l'en-tête. Défini sur `true` par défaut.",
                            "type": "boolean"
                          }
                        },
                        "type": "object"
                      },
                      "subscription_list": {
                        "description": "Paramètres de la liste des plans d'abonnement.",
                        "properties": {
                          "description": {
                            "description": "Texte à afficher dans l'interface de paiement au-dessus de la liste des plans d'abonnement disponibles.",
                            "type": "string"
                          },
                          "display_local_price": {
                            "description": "Si défini sur `true`, et que la devise locale de l'utilisateur diffère de la devise de base du plan d'abonnement, l'utilisateur voit deux prix : l'un dans la devise locale et l'autre dans la devise de base.",
                            "type": "boolean"
                          },
                          "layout": {
                            "description": "Modèle de liste. La valeur peut être `list` (par défaut) ou `grid`.",
                            "enum": [
                              "list",
                              "grid"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "virtual_currency_list": {
                        "description": "Paramètres de la liste des monnaies virtuelles.",
                        "properties": {
                          "button_with_price": {
                            "description": "Si défini sur `true`, le prix s'affiche sur le bouton. Si défini sur `false`, le prix s'affiche à gauche du bouton. Défini sur `false` par défaut.",
                            "type": "boolean"
                          },
                          "description": {
                            "description": "Texte à afficher au-dessus de la liste des monnaies virtuelles.",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "virtual_item_list": {
                        "description": "Paramètres de la liste des objets virtuels.",
                        "properties": {
                          "button_with_price": {
                            "description": "Si défini sur `true`, le prix s'affiche sur le bouton. Si défini sur `false`, le prix s'affiche à gauche du bouton. Défini sur `false` par défaut.",
                            "type": "boolean"
                          },
                          "layout": {
                            "description": "Modèle de liste. La valeur peut être `list` (par défaut) ou `grid`.",
                            "enum": [
                              "list",
                              "grid"
                            ],
                            "type": "string"
                          },
                          "view": {
                            "description": "Affiche les groupes d'objets virtuels sous la forme d'un menu vertical/horizontal. La valeur peut être `horizontal_navigation` ou `vertical_navigation` (par défaut).",
                            "enum": [
                              "horizontal_navigation",
                              "vertical_navigation"
                            ],
                            "type": "string"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "header": {
                    "properties": {
                      "visible_virtual_currency_balance": {
                        "description": "Détermine l'affichage de cet élément dans l'interface de paiement. Défini sur `true` par défaut.",
                        "type": "boolean"
                      }
                    },
                    "type": "object"
                  },
                  "is_prevent_external_link_open": {
                    "description": "Détermine la désactivation des liens de redirection vers une ressource externe. Défini sur `true` par défaut. Un clic sur un lien externe déclenche l'envoi de l'événement `external-link-open` via le mécanisme `postMessage`. L'adresse du lien de redirection est passée dans le paramètre `url`.",
                    "type": "boolean"
                  },
                  "license_url": {
                    "description": "Lien vers le CLUF.",
                    "type": "string"
                  },
                  "mobile": {
                    "properties": {
                      "footer": {
                        "properties": {
                          "is_visible": {
                            "description": "Détermine l'affichage du pied de page dans la version mobile de l'interface de paiement.",
                            "type": "boolean"
                          }
                        },
                        "type": "object"
                      },
                      "header": {
                        "properties": {
                          "close_button": {
                            "description": "Détermine l'affichage du bouton Fermer dans la version mobile de Pay Station. Un clic sur ce bouton ferme Pay Station et redirige l'utilisateur vers l'URL passée dans le paramètre `settings.return_url`. Défini sur `false` par défaut.",
                            "type": "boolean"
                          }
                        },
                        "type": "object"
                      },
                      "mode": {
                        "description": "L'utilisateur ne peut payer qu'en utilisant les modes de paiement enregistrés. L'unique valeur possible est `saved_accounts`.",
                        "enum": [
                          "saved_accounts"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "mode": {
                    "description": "Mode d'interface dans Pay Station. L'unique valeur possible est `user_account`. Dans ce mode, l'en-tête ne contient que le menu de navigation du compte, et l'utilisateur ne peut ni sélectionner un produit ni effectuer un paiement. Ce mode est disponible uniquement sur la version de bureau.",
                    "type": "string"
                  },
                  "size": {
                    "description": "Taille de l'interface de paiement. La valeur peut être :\n  - [small](https://livedemo.xsolla.com/developers/small/) : taille minimale possible de l'interface de paiement. Utilisez cette valeur lorsque la taille de la fenêtre est strictement limitée (dimensions : 620 x 630)\n  - [medium](https://livedemo.xsolla.com/developers/medium/) : taille recommandée. Utilisez cette valeur pour afficher l'interface de paiement dans une lightbox (dimensions : 740 x 760)\n  - [large](https://livedemo.xsolla.com/developers/large/) : taille optimale pour afficher l'interface de paiement dans une nouvelle fenêtre ou un nouvel onglet (dimensions : 820 x 840)",
                    "enum": [
                      "small",
                      "medium",
                      "large"
                    ],
                    "type": "string"
                  },
                  "theme": {
                    "description": "Thème de l'interface de paiement. La valeur peut être `default` ou `default_dark`.",
                    "enum": [
                      "default",
                      "default_dark"
                    ],
                    "type": "string"
                  },
                  "user_account": {
                    "description": "Informations de compte utilisateur.",
                    "properties": {
                      "history": {
                        "allOf": [
                          {
                            "description": "Sous-menu **History**"
                          },
                          {
                            "properties": {
                              "enable": {
                                "description": "Détermine l'affichage du sous-menu. Défini sur `false` par défaut.",
                                "type": "boolean"
                              },
                              "order": {
                                "description": "Position du sous-menu dans le menu.",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        ]
                      },
                      "info": {
                        "allOf": [
                          {
                            "description": "Page **My account**."
                          },
                          {
                            "properties": {
                              "enable": {
                                "description": "Détermine l'affichage du sous-menu. Défini sur `false` par défaut.",
                                "type": "boolean"
                              },
                              "order": {
                                "description": "Position du sous-menu dans le menu.",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        ]
                      },
                      "payment_accounts": {
                        "allOf": [
                          {
                            "description": "Sous-menu **My payment accounts**."
                          },
                          {
                            "properties": {
                              "enable": {
                                "description": "Détermine l'affichage du sous-menu. Défini sur `false` par défaut.",
                                "type": "boolean"
                              },
                              "order": {
                                "description": "Position du sous-menu dans le menu.",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        ]
                      },
                      "subscriptions": {
                        "allOf": [
                          {
                            "description": "Sous-menu **Manage subscriptions**."
                          },
                          {
                            "properties": {
                              "enable": {
                                "description": "Détermine l'affichage du sous-menu. Défini sur `false` par défaut.",
                                "type": "boolean"
                              },
                              "order": {
                                "description": "Position du sous-menu dans le menu.",
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          }
                        ]
                      }
                    },
                    "type": "object"
                  },
                  "version": {
                    "description": "Type d'appareil. La valeur peut être `desktop` (par défaut) ou `mobile`.",
                    "enum": [
                      "desktop",
                      "mobile"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "required": [
              "project_id"
            ],
            "type": "object"
          },
          "user": {
            "description": "Informations sur l'utilisateur.",
            "properties": {
              "age": {
                "description": "Âge de l'utilisateur.",
                "type": "integer"
              },
              "attributes": {
                "description": "Attributs de l'utilisateur nécessaires pour filtrer la liste des objets. Ils se présentent sous la forme d'un JSON valide de paires clé-valeur.",
                "type": "object"
              },
              "country": {
                "properties": {
                  "allow_modify": {
                    "description": "Détermine si l'utilisateur peut changer le pays dans l'interface de paiement. Par défaut, si le paramètre `country.value` est passé dans le jeton, la valeur est `false`.",
                    "type": "boolean"
                  },
                  "value": {
                    "description": "Code pays à deux lettres majuscules selon la norme [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "email": {
                "description": "L'objet `user.email` est essentiel pour construire les modèles anti-fraude et permet d'améliorer les taux d'acceptation. C'est une exigence à la fois de Xsolla et des systèmes de paiement. Si ce paramètre n'est pas passé, un champ obligatoire pour la saisie de l'adresse e-mail apparaît sur la page de paiement. L'utilisateur reçoit ensuite un reçu d'achat à l'adresse e-mail indiquée dans ce paramètre ou celle saisie sur la page de paiement.",
                "properties": {
                  "value": {
                    "description": "Adresse e-mail de l'utilisateur. Doit être valide selon le protocole [RFC 822](https://www.w3.org/Protocols/rfc822/#z8).",
                    "type": "string"
                  }
                },
                "required": [
                  "value"
                ],
                "type": "object"
              },
              "id": {
                "properties": {
                  "value": {
                    "description": "ID utilisateur.",
                    "type": "string"
                  }
                },
                "required": [
                  "value"
                ],
                "type": "object"
              },
              "is_legal": {
                "description": "Détermine si l'utilisateur est une personne morale.",
                "type": "boolean"
              },
              "legal": {
                "allOf": [
                  {
                    "description": "Informations de la personne morale. L'objet et tous ses paramètres sont requis si `user.is_legal` est défini sur `true`."
                  },
                  {
                    "description": "Informations de la personne morale.",
                    "properties": {
                      "address": {
                        "description": "Adresse légale complète.",
                        "type": "string"
                      },
                      "country": {
                        "description": "Pays de constitution. Code pays à deux lettres majuscules selon la norme [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).",
                        "type": "string"
                      },
                      "name": {
                        "description": "Nom légal complet.",
                        "type": "string"
                      },
                      "vat_id": {
                        "description": "Numéro d'identification fiscal.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  }
                ]
              },
              "name": {
                "properties": {
                  "value": {
                    "description": "Pseudo de l'utilisateur.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "phone": {
                "properties": {
                  "value": {
                    "description": "Numéro de téléphone de l'utilisateur.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "public_id": {
                "properties": {
                  "value": {
                    "description": "Paramètre qui identifie l'utilisateur de manière unique et qui est connu de celui-ci (adresse e-mail, pseudo, etc.). Permet à l'utilisateur d'effectuer des achats en dehors du magasin en jeu (par exemple, via des kiosques de paiement).",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "steam_id": {
                "properties": {
                  "value": {
                    "description": "ID Steam.",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "tracking_id": {
                "properties": {
                  "value": {
                    "description": "ID de suivi unique (utilisé dans les campagnes de marketing).",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "utm": {
                "description": "Attributs de trafic.",
                "properties": {
                  "utm_campaign": {
                    "description": "Titre de la campagne translittéré ou traduit en anglais.",
                    "type": "string"
                  },
                  "utm_content": {
                    "description": "Contenu de la campagne.",
                    "type": "string"
                  },
                  "utm_medium": {
                    "description": "Canal de trafic (annonces contextuelles, annonces par affichage, e-mailing, etc.).",
                    "type": "string"
                  },
                  "utm_source": {
                    "description": "Source de trafic.",
                    "type": "string"
                  },
                  "utm_term": {
                    "description": "Mot-clé de la campagne. Si ce paramètre est défini, les statistiques seront basées sur les mots-clés utilisés pour le ciblage des annonces plutôt que sur des requêtes de recherche spécifiques. Dans Google Analytics, le terme `utm_term` spécifié fait partie du rapport général sur les termes de recherche.",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "required": [
              "id"
            ],
            "type": "object"
          }
        },
        "type": "object"
      }
    },
    "securitySchemes": {
      "basicAuth": {
        "description": "L'API de Xsolla utilise l'authentification d'accès de base. Toutes les requêtes vers l'API doivent contenir l'en-tête `Authorization: Basic <your_authorization_basic_key>` où `<your_authorization_basic_key>` est la paire `merchant_id:api_key` encodée conformément à la norme Base64.\n\nPour trouver ces paramètres, accédez au [Compte éditeur](https://publisher.xsolla.com/) :<ul><li>`merchant_id` est affiché :<ul><li>dans la section <b>Company settings > Company</b> ;</li><li>dans l'URL de la barre d'adresse du navigateur sur n'importe quelle page du compte éditeur. L'URL est au format suivant : `https://publisher.xsolla.com/<merchant_id>`.</li></ul></li><li>`api_key` ne s'affiche dans le compte éditeur qu'une seule fois lors de sa création, vous devez donc la conserver de votre côté. Vous pouvez créer une nouvelle clé dans les sections suivantes :<ul><li><b>Company settings > API keys</b> ;</li><li><b>Project settings > API keys</b>.</li></ul></li></ul><br>\nPour plus d'informations sur l'utilisation des clés API, consultez la [référence API](https://developers.xsolla.com/fr/api/getting-started/#api_keys_overview).",
        "scheme": "basic",
        "type": "http"
      },
      "subscriptionsManagementJwtAuth": {
        "scheme": "bearer",
        "type": "http"
      }
    }
  },
  "info": {
    "description": "# Présentation\n\n* **Version :** 2.0\n* **Serveurs :** `https://api.xsolla.com/merchant/v2/`\n\nCette référence API décrit les endpoints pour la gestion des abonnements, des coupons et des promotions.\nPour plus d'informations sur les abonnements, consultez le [guide du produit](https://developers.xsolla.com/fr/doc/subscriptions) et le [glossaire](https://developers.xsolla.com/fr/doc/subscriptions/integration-guide/get-started/#general_glossary).",
    "title": "Subscriptions API",
    "version": "2.0"
  },
  "openapi": "3.0.0",
  "paths": {
    "/api/user/v1/management/projects/{project_id}/subscriptions": {
      "get": {
        "operationId": "list-subscriptions",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "required": false,
            "schema": {
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "locale",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "pattern": "\\d+",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListManagementSubscriptionsResponse"
                }
              }
            },
            "description": "Get subscriptions info"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "subscriptions.bad_request",
                    "description": "Incorrect limit value, maximum allowed is 100"
                  },
                  "request_id": "e54d2081-33cc-4682-b65c-b22d98686d0a"
                }
              }
            },
            "description": "Bad request"
          }
        },
        "security": [
          {
            "subscriptionsManagementJwtAuth": []
          }
        ],
        "summary": "List subscriptions",
        "tags": [
          "subscription-management"
        ]
      },
      "servers": [
        {
          "url": "https://subscriptions.xsolla.com"
        }
      ]
    },
    "/api/user/v1/management/projects/{project_id}/subscriptions/settings": {
      "get": {
        "operationId": "get-management-settings",
        "parameters": [
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "pattern": "\\d+",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectManageSubscriptionSettingsResponse"
                }
              }
            },
            "description": "Returns project settings for managing subscription"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "subscriptions.access_denied",
                    "description": "You don't have access to requested project or resource."
                  },
                  "request_id": "e54d2081-33cc-4682-b65c-b22d98686d0a"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "subscriptions.not_found",
                    "description": "Project not found"
                  },
                  "request_id": "e54d2081-33cc-4682-b65c-b22d98686d0a"
                }
              }
            },
            "description": "Not found"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "subscriptions.exception",
                    "description": "Retrieving data from cache has failed."
                  },
                  "request_id": "e54d2081-33cc-4682-b65c-b22d98686d0a"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "security": [
          {
            "subscriptionsManagementJwtAuth": []
          }
        ],
        "summary": "Get management settings",
        "tags": [
          "subscription-management"
        ]
      },
      "servers": [
        {
          "url": "https://subscriptions.xsolla.com"
        }
      ]
    },
    "/api/user/v1/management/projects/{project_id}/subscriptions/{subscription_id}": {
      "get": {
        "operationId": "get-management-subscription",
        "parameters": [
          {
            "in": "path",
            "name": "subscription_id",
            "required": true,
            "schema": {
              "pattern": "\\d+",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "locale",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "pattern": "\\d+",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ManagementSubscriptionResponse"
                }
              }
            },
            "description": "Get subscription info"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "subscriptions.exception",
                    "description": "Project with id = 123 was not found"
                  },
                  "request_id": "e54d2081-33cc-4682-b65c-b22d98686d0a"
                }
              }
            },
            "description": "Bad request"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "subscriptions.not_found",
                    "description": "Subscription not found"
                  },
                  "request_id": "e54d2081-33cc-4682-b65c-b22d98686d0a"
                }
              }
            },
            "description": "Not found"
          }
        },
        "security": [
          {
            "subscriptionsManagementJwtAuth": []
          }
        ],
        "summary": "Get subscription",
        "tags": [
          "subscription-management"
        ]
      },
      "servers": [
        {
          "url": "https://subscriptions.xsolla.com"
        }
      ]
    },
    "/api/user/v1/management/projects/{project_id}/subscriptions/{subscription_id}/activate": {
      "put": {
        "operationId": "activate-subscription",
        "parameters": [
          {
            "in": "path",
            "name": "subscription_id",
            "required": true,
            "schema": {
              "pattern": "\\d+",
              "type": "integer"
            }
          },
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "pattern": "\\d+",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "status": "successful"
                }
              }
            },
            "description": "Move subscription from non-renew to active"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "subscriptions.bad_request",
                    "description": "Subscription is not allowed to change to active"
                  },
                  "request_id": "e54d2081-33cc-4682-b65c-b22d98686d0a"
                }
              }
            },
            "description": "Bad request"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "subscriptions.not_found",
                    "description": "Subscription not found"
                  },
                  "request_id": "e54d2081-33cc-4682-b65c-b22d98686d0a"
                }
              }
            },
            "description": "Not found"
          }
        },
        "security": [
          {
            "subscriptionsManagementJwtAuth": []
          }
        ],
        "summary": "Activate subscription",
        "tags": [
          "subscription-management"
        ]
      },
      "servers": [
        {
          "url": "https://subscriptions.xsolla.com"
        }
      ]
    },
    "/api/user/v1/management/projects/{project_id}/subscriptions/{subscription_id}/cancel": {
      "put": {
        "operationId": "cancel-subscription",
        "parameters": [
          {
            "in": "path",
            "name": "subscription_id",
            "required": true,
            "schema": {
              "pattern": "\\d+",
              "type": "integer"
            }
          },
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "pattern": "\\d+",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "description": "Make subscription non-renewable"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "subscriptions.not_active",
                    "description": "Subscription is not active"
                  },
                  "request_id": "e54d2081-33cc-4682-b65c-b22d98686d0a"
                }
              }
            },
            "description": "Bad request"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "subscriptions.not_found",
                    "description": "Subscription not found"
                  },
                  "request_id": "e54d2081-33cc-4682-b65c-b22d98686d0a"
                }
              }
            },
            "description": "Not found"
          }
        },
        "security": [
          {
            "subscriptionsManagementJwtAuth": []
          }
        ],
        "summary": "Cancel subscription",
        "tags": [
          "subscription-management"
        ]
      },
      "servers": [
        {
          "url": "https://subscriptions.xsolla.com"
        }
      ]
    },
    "/api/user/v1/management/projects/{project_id}/subscriptions/{subscription_id}/change_plan": {
      "post": {
        "operationId": "get-change-plan-link",
        "parameters": [
          {
            "in": "path",
            "name": "subscription_id",
            "required": true,
            "schema": {
              "pattern": "\\d+",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "plan_external_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "sandbox",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "pattern": "\\d+",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PayStationLinkResponse"
                }
              }
            },
            "description": "Returns link to change subscription plan"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "subscriptions.exception",
                    "description": "Change plan is not possible"
                  },
                  "request_id": "e54d2081-33cc-4682-b65c-b22d98686d0a"
                }
              }
            },
            "description": "Bad request"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "subscriptions.not_found",
                    "description": "ubscription with id = 123 not found or not belongs to user"
                  },
                  "request_id": "e54d2081-33cc-4682-b65c-b22d98686d0a"
                }
              }
            },
            "description": "Not found"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "subscriptions.exception",
                    "description": "Publisher API request failed"
                  },
                  "request_id": "e54d2081-33cc-4682-b65c-b22d98686d0a"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "security": [
          {
            "subscriptionsManagementJwtAuth": []
          }
        ],
        "summary": "Get change plan link",
        "tags": [
          "subscription-management"
        ]
      },
      "servers": [
        {
          "url": "https://subscriptions.xsolla.com"
        }
      ]
    },
    "/api/user/v1/management/projects/{project_id}/subscriptions/{subscription_id}/payment_account": {
      "get": {
        "operationId": "get-payment-account",
        "parameters": [
          {
            "in": "path",
            "name": "subscription_id",
            "required": true,
            "schema": {
              "pattern": "\\d+",
              "type": "integer"
            }
          },
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "pattern": "\\d+",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentRecurrentAccountResponse"
                }
              }
            },
            "description": "Get payment account info"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "data.not_found",
                    "description": "Data not found"
                  },
                  "request_id": "e54d2081-33cc-4682-b65c-b22d98686d0a"
                }
              }
            },
            "description": "Not found"
          }
        },
        "security": [
          {
            "subscriptionsManagementJwtAuth": []
          }
        ],
        "summary": "Get payment account",
        "tags": [
          "subscription-management"
        ]
      },
      "servers": [
        {
          "url": "https://subscriptions.xsolla.com"
        }
      ]
    },
    "/api/user/v1/management/projects/{project_id}/subscriptions/{subscription_id}/payment_account/manage": {
      "post": {
        "operationId": "manage-payment-account",
        "parameters": [
          {
            "in": "path",
            "name": "subscription_id",
            "required": true,
            "schema": {
              "pattern": "\\d+",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "sandbox",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "pattern": "\\d+",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PayStationLinkResponse"
                }
              }
            },
            "description": "Returns link for managing payment accounts"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "subscriptions.exception",
                    "description": "Token retrieve error"
                  },
                  "request_id": "e54d2081-33cc-4682-b65c-b22d98686d0a"
                }
              }
            },
            "description": "Bad request"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "subscriptions.not_found",
                    "description": "Subscription with id = 123 not found or not belongs to user"
                  },
                  "request_id": "e54d2081-33cc-4682-b65c-b22d98686d0a"
                }
              }
            },
            "description": "Not found"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "subscriptions.exception",
                    "description": "Publisher API request failed"
                  },
                  "request_id": "e54d2081-33cc-4682-b65c-b22d98686d0a"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "security": [
          {
            "subscriptionsManagementJwtAuth": []
          }
        ],
        "summary": "Manage payment account",
        "tags": [
          "subscription-management"
        ]
      },
      "servers": [
        {
          "url": "https://subscriptions.xsolla.com"
        }
      ]
    },
    "/api/user/v1/management/projects/{project_id}/subscriptions/{subscription_id}/payment_accounts": {
      "get": {
        "operationId": "list-payment-accounts",
        "parameters": [
          {
            "in": "path",
            "name": "subscription_id",
            "required": true,
            "schema": {
              "pattern": "\\d+",
              "type": "integer"
            }
          },
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "pattern": "\\d+",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BillingAccountsListResponse"
                }
              }
            },
            "description": "Returns the user's billing accounts"
          },
          "403": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "subscriptions.access_denied",
                    "description": "You don't have access to requested project or resource."
                  },
                  "request_id": "e54d2081-33cc-4682-b65c-b22d98686d0a"
                }
              }
            },
            "description": "Forbidden"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "subscriptions.not_found",
                    "description": "Subscription with id = 123 not found or not belongs to user"
                  },
                  "request_id": "e54d2081-33cc-4682-b65c-b22d98686d0a"
                }
              }
            },
            "description": "Not found"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "subscriptions.exception",
                    "description": "Publisher API request failed."
                  },
                  "request_id": "e54d2081-33cc-4682-b65c-b22d98686d0a"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "security": [
          {
            "subscriptionsManagementJwtAuth": []
          }
        ],
        "summary": "List payment accounts",
        "tags": [
          "subscription-management"
        ]
      },
      "post": {
        "operationId": "link-payment-account",
        "parameters": [
          {
            "in": "path",
            "name": "subscription_id",
            "required": true,
            "schema": {
              "pattern": "\\d+",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "payment_account_id",
            "required": true,
            "schema": {
              "type": "integer"
            }
          },
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "pattern": "\\d+",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "status": "successful"
                }
              }
            },
            "description": "Links a payment account to a subscription"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "subscriptions.exception",
                    "description": "This account is already linked"
                  },
                  "request_id": "e54d2081-33cc-4682-b65c-b22d98686d0a"
                }
              }
            },
            "description": "Bad request"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "subscriptions.not_found",
                    "description": "Subscription with id = 123 not found or not belongs to user"
                  },
                  "request_id": "e54d2081-33cc-4682-b65c-b22d98686d0a"
                }
              }
            },
            "description": "Not found"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "subscriptions.exception",
                    "description": "Publisher API request failed"
                  },
                  "request_id": "e54d2081-33cc-4682-b65c-b22d98686d0a"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "security": [
          {
            "subscriptionsManagementJwtAuth": []
          }
        ],
        "summary": "Link payment account",
        "tags": [
          "subscription-management"
        ]
      },
      "servers": [
        {
          "url": "https://subscriptions.xsolla.com"
        }
      ]
    },
    "/api/user/v1/management/projects/{project_id}/subscriptions/{subscription_id}/payment_accounts/{payment_account_id}": {
      "delete": {
        "operationId": "unlink-payment-account",
        "parameters": [
          {
            "in": "path",
            "name": "subscription_id",
            "required": true,
            "schema": {
              "pattern": "\\d+",
              "type": "integer"
            }
          },
          {
            "in": "path",
            "name": "payment_account_id",
            "required": true,
            "schema": {
              "pattern": "\\d+",
              "type": "integer"
            }
          },
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "pattern": "\\d+",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "status": "successful"
                }
              }
            },
            "description": "Unlink payment accounts"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "subscriptions.not_found",
                    "description": "Subscription with id = 123 not found or not belongs to user"
                  },
                  "request_id": "e54d2081-33cc-4682-b65c-b22d98686d0a"
                }
              }
            },
            "description": "Not found"
          },
          "500": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "subscriptions.exception",
                    "description": "Error saving data"
                  },
                  "request_id": "e54d2081-33cc-4682-b65c-b22d98686d0a"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "security": [
          {
            "subscriptionsManagementJwtAuth": []
          }
        ],
        "summary": "Unlink payment account",
        "tags": [
          "subscription-management"
        ]
      },
      "servers": [
        {
          "url": "https://subscriptions.xsolla.com"
        }
      ]
    },
    "/api/user/v1/management/projects/{project_id}/subscriptions/{subscription_id}/plans_for_change": {
      "get": {
        "operationId": "list-plans-for-change",
        "parameters": [
          {
            "in": "path",
            "name": "subscription_id",
            "required": true,
            "schema": {
              "pattern": "\\d+",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "required": false,
            "schema": {
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "locale",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "pattern": "\\d+",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListPlansResponse"
                }
              }
            },
            "description": "List of available plans for change"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "subscriptions.exception",
                    "description": "Incorrect limit value, maximum allowed is 100"
                  },
                  "request_id": "e54d2081-33cc-4682-b65c-b22d98686d0a"
                }
              }
            },
            "description": "Bad request"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "subscriptions.not_found",
                    "description": "Subscription with id = 123 not found or not belongs to user"
                  },
                  "request_id": "e54d2081-33cc-4682-b65c-b22d98686d0a"
                }
              }
            },
            "description": "Not found"
          }
        },
        "security": [
          {
            "subscriptionsManagementJwtAuth": []
          }
        ],
        "summary": "List plans for change",
        "tags": [
          "subscription-management"
        ]
      },
      "servers": [
        {
          "url": "https://subscriptions.xsolla.com"
        }
      ]
    },
    "/api/user/v1/management/projects/{project_id}/subscriptions/{subscription_id}/plans_for_change/{plan_id}": {
      "get": {
        "operationId": "get-plan-for-change",
        "parameters": [
          {
            "in": "path",
            "name": "subscription_id",
            "required": true,
            "schema": {
              "pattern": "\\d+",
              "type": "integer"
            }
          },
          {
            "in": "path",
            "name": "plan_id",
            "required": true,
            "schema": {
              "pattern": "\\d+",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "locale",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "project_id",
            "required": true,
            "schema": {
              "pattern": "\\d+",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChangePlanPaymentDetailsResponse"
                }
              }
            },
            "description": "Available plans for change with payment details"
          },
          "400": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "subscriptions.exception",
                    "description": "Change plan is not possible"
                  },
                  "request_id": "e54d2081-33cc-4682-b65c-b22d98686d0a"
                }
              }
            },
            "description": "Bad request"
          },
          "404": {
            "content": {
              "application/json": {
                "example": {
                  "error": {
                    "code": "subscriptions.not_found",
                    "description": "Subscription with id = 123 not found or not belongs to user"
                  },
                  "request_id": "e54d2081-33cc-4682-b65c-b22d98686d0a"
                }
              }
            },
            "description": "Not found"
          }
        },
        "security": [
          {
            "subscriptionsManagementJwtAuth": []
          }
        ],
        "summary": "Get plan for change",
        "tags": [
          "subscription-management"
        ]
      },
      "servers": [
        {
          "url": "https://subscriptions.xsolla.com"
        }
      ]
    },
    "/merchants/{merchant_id}/coupon_promotions": {
      "post": {
        "description": "Créez une nouvelle campagne de coupons. \n<div class=\"notice\">\n  <p><strong>Remarque</strong></p><p>Cet appel API ne contient pas le paramètre de chemin<code>project_id</code>, vous devez donc utiliser la clé API valide dans tous les projets de l'entreprise pour l'autorisation.</p>\n</div>",
        "operationId": "create-campaign",
        "parameters": [
          {
            "$ref": "#/components/parameters/merchant-id-path-param"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "campaign_code": "sample_campaign",
                "campaign_names": {
                  "en": "Campaign Name",
                  "ru": "Название кампании"
                },
                "campaign_redeems_count_for_user": 1,
                "expiration_date": "2019-12-31",
                "project_id": 12345,
                "redeems_count": 10,
                "redeems_count_for_user": 1,
                "subscription_coupon": {
                  "plan_id": 123,
                  "product_id": 456,
                  "trial_period": 30
                },
                "virtual_currency_amount": 200
              },
              "schema": {
                "allOf": [
                  {
                    "required": [
                      "campaign_code",
                      "project_id",
                      "campaign_names"
                    ]
                  },
                  {
                    "$ref": "#/components/schemas/Campaign"
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "id": {
                      "example": 9134,
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Created."
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Créer une campagne",
        "tags": [
          "coupons"
        ],
        "x-admin": true,
        "x-server": true
      },
      "servers": [
        {
          "url": "https://api.xsolla.com/merchant/v2"
        }
      ]
    },
    "/merchants/{merchant_id}/coupon_promotions/{campaign_id}/coupons": {
      "post": {
        "description": "Ajoutez un code promo à une campagne de coupons. \n<div class=\"notice\">\n  <p><strong>Remarque</strong></p><p>Cet appel API ne contient pas le paramètre de chemin<code>project_id</code>, vous devez donc utiliser la clé API valide dans tous les projets de l'entreprise pour l'autorisation.</p>\n</div>",
        "operationId": "add-coupon-to-campaign",
        "parameters": [
          {
            "$ref": "#/components/parameters/merchant-id-path-param"
          },
          {
            "$ref": "#/components/parameters/campaign-id-path-param"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "coupon_code": {
                    "description": "Code de coupon.",
                    "example": "34bryrb3",
                    "type": "string"
                  }
                },
                "required": [
                  "coupon_code"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No content."
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Ajouter un coupon à une campagne",
        "tags": [
          "coupons"
        ],
        "x-admin": true,
        "x-server": true
      },
      "servers": [
        {
          "url": "https://api.xsolla.com/merchant/v2"
        }
      ]
    },
    "/merchants/{merchant_id}/promotions": {
      "get": {
        "description": "Liste de toutes les promotions. \n<div class=\"notice\">\n  <p><strong>Remarque</strong></p><p>Cet appel API ne contient pas le paramètre de chemin<code>project_id</code>, vous devez donc utiliser la clé API valide dans tous les projets de l'entreprise pour l'autorisation.</p>\n</div>",
        "operationId": "get-promotions-list",
        "parameters": [
          {
            "$ref": "#/components/parameters/merchant-id-path-param"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": [
                  {
                    "datetime": {
                      "from": "2020-02-01T00:00:00+04:00",
                      "to": "2020-11-30T01:28:42+04:00"
                    },
                    "enabled": true,
                    "id": 17840,
                    "is_active": true,
                    "is_infinite": false,
                    "project": {
                      "id": 12345,
                      "localized_name": "Christmas sale"
                    },
                    "read_only": false,
                    "technical_name": "christmas"
                  },
                  {
                    "datetime": null,
                    "enabled": false,
                    "id": 17891,
                    "is_active": false,
                    "is_infinite": true,
                    "project": {
                      "id": 12345,
                      "localized_name": "30% discount"
                    },
                    "read_only": false,
                    "technical_name": "Sale promotion"
                  }
                ]
              }
            },
            "description": "OK."
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Lire la liste des promotions",
        "tags": [
          "promotions"
        ],
        "x-admin": true,
        "x-server": true
      },
      "post": {
        "description": "Créer une nouvelle promotion. \n<div class=\"notice\">\n  <p><strong>Remarque</strong></p><p>Cet appel API ne contient pas le paramètre de chemin<code>project_id</code>, vous devez donc utiliser la clé API valide dans tous les projets de l'entreprise pour l'autorisation.</p>\n</div>",
        "operationId": "create-promotion",
        "parameters": [
          {
            "$ref": "#/components/parameters/merchant-id-path-param"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "description": {
                  "en": "Promotion with 30% discount",
                  "ru": "Акция со скидкой 30%"
                },
                "label": {
                  "en": "30%",
                  "ru": "30%"
                },
                "name": {
                  "en": "30% discount",
                  "ru": "скидка 30%"
                },
                "project_id": 12345,
                "technical_name": "Sale promotion"
              },
              "schema": {
                "allOf": [
                  {
                    "required": [
                      "project_id",
                      "technical_name"
                    ]
                  },
                  {
                    "$ref": "#/components/schemas/GetPromotion"
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "example": {
                  "id": 17890
                },
                "schema": {
                  "properties": {
                    "id": {
                      "description": "ID de promotion.",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Created."
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Créer une promotion",
        "tags": [
          "promotions"
        ],
        "x-admin": true,
        "x-server": true
      },
      "servers": [
        {
          "url": "https://api.xsolla.com/merchant/v2"
        }
      ]
    },
    "/merchants/{merchant_id}/promotions/{promotion_id}": {
      "delete": {
        "description": "Supprime une promotion. Vous ne pouvez supprimer que les promotions avec `enabled` = `false`. \n<div class=\"notice\">\n  <p><strong>Remarque</strong></p><p>Cet appel API ne contient pas le paramètre de chemin<code>project_id</code>, vous devez donc utiliser la clé API valide dans tous les projets de l'entreprise pour l'autorisation.</p>\n</div>",
        "operationId": "delete-promotion",
        "parameters": [
          {
            "$ref": "#/components/parameters/merchant-id-path-param"
          },
          {
            "$ref": "#/components/parameters/promotion-id-path-param"
          }
        ],
        "responses": {
          "204": {
            "description": "No content."
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Supprimer une promotion",
        "tags": [
          "promotions"
        ],
        "x-admin": true,
        "x-server": true
      },
      "get": {
        "description": "Récupère une promotion. \n<div class=\"notice\">\n  <p><strong>Remarque</strong></p><p>Cet appel API ne contient pas le paramètre de chemin<code>project_id</code>, vous devez donc utiliser la clé API valide dans tous les projets de l'entreprise pour l'autorisation.</p>\n</div>",
        "operationId": "get-promotion",
        "parameters": [
          {
            "$ref": "#/components/parameters/merchant-id-path-param"
          },
          {
            "$ref": "#/components/parameters/promotion-id-path-param"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "description": {
                    "en": "Promotion with 30% discount",
                    "ru": "Акция со скидкой 30%"
                  },
                  "enabled": false,
                  "id": 17890,
                  "label": {
                    "en": "30%",
                    "ru": "30%"
                  },
                  "name": {
                    "en": "30% discount",
                    "ru": "Скидка 30%"
                  },
                  "project_id": 40544,
                  "read_only": false,
                  "show_banner": true,
                  "technical_name": "Sale promotion"
                },
                "schema": {
                  "$ref": "#/components/schemas/GetPromotion"
                }
              }
            },
            "description": "OK."
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Lire une promotion",
        "tags": [
          "promotions"
        ],
        "x-admin": true,
        "x-server": true
      },
      "put": {
        "description": "Met à jour une promotion. Si la promotion est en lecture seule (`read_only` = `true`), vous n'êtes pas autorisé à modifier le paramètre `project_id`. \n<div class=\"notice\">\n  <p><strong>Remarque</strong></p><p>Cet appel API ne contient pas le paramètre de chemin<code>project_id</code>, vous devez donc utiliser la clé API valide dans tous les projets de l'entreprise pour l'autorisation.</p>\n</div>",
        "operationId": "update-promotion",
        "parameters": [
          {
            "$ref": "#/components/parameters/merchant-id-path-param"
          },
          {
            "$ref": "#/components/parameters/promotion-id-path-param"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "description": {
                  "en": "Promotion with 5% discount",
                  "ru": "Акция со скидкой 5%"
                },
                "label": {
                  "en": "5%",
                  "ru": "5%"
                },
                "name": {
                  "en": "5% discount",
                  "ru": "скидка 5%"
                },
                "project_id": 40544,
                "technical_name": "Sale promotion"
              },
              "schema": {
                "allOf": [
                  {
                    "required": [
                      "project_id",
                      "technical_name"
                    ]
                  },
                  {
                    "$ref": "#/components/schemas/GetPromotion"
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No content."
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Mettre à jour une promotion",
        "tags": [
          "promotions"
        ],
        "x-admin": true,
        "x-server": true
      },
      "servers": [
        {
          "url": "https://api.xsolla.com/merchant/v2"
        }
      ]
    },
    "/merchants/{merchant_id}/promotions/{promotion_id}/coupons": {
      "put": {
        "description": "Associez une campagne de coupons à une promotion spécifique. \n<div class=\"notice\">\n  <p><strong>Remarque</strong></p><p>Cet appel API ne contient pas le paramètre de chemin<code>project_id</code>, vous devez donc utiliser la clé API valide dans tous les projets de l'entreprise pour l'autorisation.</p>\n</div>",
        "operationId": "attach-campaign-to-promotion",
        "parameters": [
          {
            "$ref": "#/components/parameters/merchant-id-path-param"
          },
          {
            "$ref": "#/components/parameters/promotion-id-path-param"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "campaigns": {
                    "description": "Tableau des ID des campagnes.",
                    "example": [
                      9135
                    ],
                    "items": {
                      "type": "integer"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "campaigns"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No content."
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Lier une campagne à une promotion",
        "tags": [
          "coupons"
        ],
        "x-admin": true,
        "x-server": true
      },
      "servers": [
        {
          "url": "https://api.xsolla.com/merchant/v2"
        }
      ]
    },
    "/merchants/{merchant_id}/promotions/{promotion_id}/payment_systems": {
      "get": {
        "description": "Obtient les systèmes de paiement pris en charge pour une promotion. Si la liste est vide, la promotion s'appliquera à tous les systèmes de paiement. \n<div class=\"notice\">\n  <p><strong>Remarque</strong></p><p>Cet appel API ne contient pas le paramètre de chemin<code>project_id</code>, vous devez donc utiliser la clé API valide dans tous les projets de l'entreprise pour l'autorisation.</p>\n</div>",
        "operationId": "get-payment-systems",
        "parameters": [
          {
            "$ref": "#/components/parameters/merchant-id-path-param"
          },
          {
            "$ref": "#/components/parameters/promotion-id-path-param"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "id": 17840,
                  "payment_systems": [
                    {
                      "id": 27,
                      "name": "Yandex.Money"
                    }
                  ]
                },
                "schema": {
                  "allOf": [
                    {
                      "properties": {
                        "id": {
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    {
                      "$ref": "#/components/schemas/PromotionPaymentSystem"
                    }
                  ]
                }
              }
            },
            "description": "OK."
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Lire les systèmes de paiement",
        "tags": [
          "promotions"
        ],
        "x-admin": true,
        "x-server": true
      },
      "put": {
        "description": "Définit les systèmes de paiement pris en charge pour une promotion. Si la liste est vide, la promotion s'appliquera à tous les systèmes de paiement. Si la promotion est en lecture seule (`read_only` = `true`), vous ne pouvez pas appeler cette méthode. \n<div class=\"notice\">\n  <p><strong>Remarque</strong></p><p>Cet appel API ne contient pas le paramètre de chemin<code>project_id</code>, vous devez donc utiliser la clé API valide dans tous les projets de l'entreprise pour l'autorisation.</p>\n</div>",
        "operationId": "set-payment-systems",
        "parameters": [
          {
            "$ref": "#/components/parameters/merchant-id-path-param"
          },
          {
            "$ref": "#/components/parameters/promotion-id-path-param"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "payment_systems": [
                  {
                    "id": 24,
                    "name": "PayPal"
                  }
                ]
              },
              "schema": {
                "$ref": "#/components/schemas/PromotionPaymentSystem"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No content."
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Définir les systèmes de paiement",
        "tags": [
          "promotions"
        ],
        "x-admin": true,
        "x-server": true
      },
      "servers": [
        {
          "url": "https://api.xsolla.com/merchant/v2"
        }
      ]
    },
    "/merchants/{merchant_id}/promotions/{promotion_id}/periods": {
      "get": {
        "description": "Obtient les plages de dates/heures pendant lesquelles une promotion est valide. \n<div class=\"notice\">\n  <p><strong>Remarque</strong></p><p> Cet appel API ne contient pas le paramètre de chemin <code>project_id</code>, vous devez donc utiliser la clé API valide dans tous les projets de l'entreprise pour l'autorisation.</p>\n</div>",
        "operationId": "get-validity-periods",
        "parameters": [
          {
            "$ref": "#/components/parameters/merchant-id-path-param"
          },
          {
            "$ref": "#/components/parameters/promotion-id-path-param"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "id": 17840,
                  "periods": [
                    {
                      "from": "2020-02-01T00:00:00+04:00",
                      "offset": "+04:00",
                      "to": "2020-11-30T01:28:42+04:00"
                    }
                  ]
                },
                "schema": {
                  "allOf": [
                    {
                      "properties": {
                        "id": {
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    {
                      "$ref": "#/components/schemas/PromotionPeriod"
                    }
                  ]
                }
              }
            },
            "description": "OK."
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Lire les périodes de validité",
        "tags": [
          "promotions"
        ],
        "x-admin": true,
        "x-server": true
      },
      "put": {
        "description": "Définit les plages de dates/heures pendant lesquelles une promotion est valide. Si la promotion est en lecture seule (`read_only` = `true`), vous ne pouvez pas modifier les périodes existantes, mais vous pouvez en ajouter de nouvelles. \n<div class=\"notice\">\n  <p><strong>Remarque</strong></p><p> Cet appel API ne contient pas le paramètre de chemin <code>project_id</code>, vous devez donc utiliser la clé API valide dans tous les projets de l'entreprise pour l'autorisation.</p>\n</div>",
        "operationId": "set-validity-periods",
        "parameters": [
          {
            "$ref": "#/components/parameters/merchant-id-path-param"
          },
          {
            "$ref": "#/components/parameters/promotion-id-path-param"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "periods": [
                  {
                    "from": "2019-03-02T00:00:00+04:00",
                    "to": "2019-04-02T00:00:00+04:00"
                  }
                ]
              },
              "schema": {
                "$ref": "#/components/schemas/PromotionPeriod"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No content."
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Définir les périodes de validité",
        "tags": [
          "promotions"
        ],
        "x-admin": true,
        "x-server": true
      },
      "servers": [
        {
          "url": "https://api.xsolla.com/merchant/v2"
        }
      ]
    },
    "/merchants/{merchant_id}/promotions/{promotion_id}/review": {
      "get": {
        "description": "Vous devez vérifier une promotion avant de l'activer. Cette méthode renvoie la liste des erreurs, le cas échéant. \n<div class=\"notice\">\n  <p><strong>Remarque</strong></p><p> Cet appel API ne contient pas le paramètre de chemin <code>project_id</code>, vous devez donc utiliser la clé API valide dans tous les projets de l'entreprise pour l'autorisation.</p>\n</div>",
        "operationId": "review-promotion",
        "parameters": [
          {
            "$ref": "#/components/parameters/merchant-id-path-param"
          },
          {
            "$ref": "#/components/parameters/promotion-id-path-param"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": [
                  {
                    "component": "rewards",
                    "message": "Please select a reward"
                  }
                ],
                "schema": {
                  "items": {
                    "properties": {
                      "component": {
                        "type": "string"
                      },
                      "message": {
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                }
              }
            },
            "description": "OK."
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Réviser une promotion",
        "tags": [
          "promotions"
        ],
        "x-admin": true,
        "x-server": true
      },
      "servers": [
        {
          "url": "https://api.xsolla.com/merchant/v2"
        }
      ]
    },
    "/merchants/{merchant_id}/promotions/{promotion_id}/rewards": {
      "get": {
        "description": "Obtient la liste des récompenses associées à une promotion. \n<div class=\"notice\">\n  <p><strong>Remarque</strong></p><p> Cet appel API ne contient pas le paramètre de chemin <code>project_id</code>, vous devez donc utiliser la clé API valide dans tous les projets de l'entreprise pour l'autorisation.</p>\n</div>",
        "operationId": "get-rewards",
        "parameters": [
          {
            "$ref": "#/components/parameters/merchant-id-path-param"
          },
          {
            "$ref": "#/components/parameters/promotion-id-path-param"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "id": 17840,
                  "item": {
                    "bonus": [
                      {
                        "id": 123456,
                        "localized_name": "T-34-3",
                        "quantity": 2,
                        "sku": "1234"
                      }
                    ],
                    "discount": [
                      {
                        "discount_percent": 5,
                        "localized_name": "T-34-3",
                        "max_amount": 10,
                        "sku": "1234"
                      }
                    ]
                  },
                  "package": {
                    "bonus_amount": 5,
                    "bonus_percent": 5
                  },
                  "purchase": {
                    "discount_percent": 10
                  },
                  "subscription": {
                    "trial_days": 30
                  }
                },
                "schema": {
                  "allOf": [
                    {
                      "properties": {
                        "id": {
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    },
                    {
                      "$ref": "#/components/schemas/PromotionReward"
                    }
                  ]
                }
              }
            },
            "description": "OK."
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Lire les récompenses",
        "tags": [
          "promotions"
        ],
        "x-admin": true,
        "x-server": true
      },
      "put": {
        "description": "Définit les récompenses pour une promotion. Si la promotion est en lecture seule (`read_only` = `true`), vous ne pouvez pas mettre à jour les récompenses. \n<div class=\"notice\">\n  <p><strong>Remarque</strong></p><p> Cet appel API ne contient pas le paramètre de chemin <code>project_id</code>, vous devez donc utiliser la clé API valide dans tous les projets de l'entreprise pour l'autorisation.</p>\n</div>",
        "operationId": "set-rewards",
        "parameters": [
          {
            "$ref": "#/components/parameters/merchant-id-path-param"
          },
          {
            "$ref": "#/components/parameters/promotion-id-path-param"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "item": {
                  "bonus": [
                    {
                      "quantity": 2,
                      "sku": "1234"
                    }
                  ],
                  "discount": [
                    {
                      "discount_percent": 5,
                      "max_amount": 10,
                      "sku": "1234"
                    }
                  ]
                },
                "package": {
                  "bonus_amount": 5,
                  "bonus_percent": 5
                },
                "purchase": {
                  "discount_percent": 10
                },
                "subscription": {
                  "trial_days": 30
                }
              },
              "schema": {
                "$ref": "#/components/schemas/PromotionReward"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No content."
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Définir les récompenses",
        "tags": [
          "promotions"
        ],
        "x-admin": true,
        "x-server": true
      },
      "servers": [
        {
          "url": "https://api.xsolla.com/merchant/v2"
        }
      ]
    },
    "/merchants/{merchant_id}/promotions/{promotion_id}/subject": {
      "get": {
        "description": "Obtient des informations sur le sujet d'une promotion. \n<div class=\"notice\">\n  <p><strong>Remarque</strong></p><p> Cet appel API ne contient pas le paramètre de chemin <code>project_id</code>, vous devez donc utiliser la clé API valide dans tous les projets de l'entreprise pour l'autorisation.</p>\n</div>",
        "operationId": "get-subject",
        "parameters": [
          {
            "$ref": "#/components/parameters/merchant-id-path-param"
          },
          {
            "$ref": "#/components/parameters/promotion-id-path-param"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "digital_contents": null,
                  "id": 178,
                  "items": [
                    {
                      "id": 1234,
                      "localized_name": "T-34-3",
                      "sku": "1234"
                    }
                  ],
                  "packages": null,
                  "purchase": false,
                  "subscriptions": null
                },
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/PromotionSubject"
                    },
                    {
                      "properties": {
                        "id": {
                          "type": "integer"
                        }
                      },
                      "type": "object"
                    }
                  ]
                }
              }
            },
            "description": "OK."
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Lire le sujet",
        "tags": [
          "promotions"
        ],
        "x-admin": true,
        "x-server": true
      },
      "put": {
        "description": "Définit le sujet d'une promotion. Si la promotion est en lecture seule (`read_only` = `true`), vous ne pouvez pas mettre à jour le sujet. Le sujet peut prendre les valeurs suivantes : `purchase`, `items` ou `packages`. \n<div class=\"notice\">\n  <p><strong>Remarque</strong></p><p> Cet appel API ne contient pas le paramètre de chemin <code>project_id</code>, vous devez donc utiliser la clé API valide dans tous les projets de l'entreprise pour l'autorisation.</p>\n</div>",
        "operationId": "set-subject",
        "parameters": [
          {
            "$ref": "#/components/parameters/merchant-id-path-param"
          },
          {
            "$ref": "#/components/parameters/promotion-id-path-param"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "digital_contents": null,
                "items": [
                  {
                    "sku": "1234"
                  }
                ],
                "packages": null,
                "purchase": false,
                "subscriptions": null
              },
              "schema": {
                "$ref": "#/components/schemas/PromotionSubject"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No content."
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Définir le sujet",
        "tags": [
          "promotions"
        ],
        "x-admin": true,
        "x-server": true
      },
      "servers": [
        {
          "url": "https://api.xsolla.com/merchant/v2"
        }
      ]
    },
    "/merchants/{merchant_id}/promotions/{promotion_id}/toggle": {
      "put": {
        "description": "Bascule le statut d'une promotion de `enabled` à `disabled` et vice versa. \n<div class=\"notice\">\n  <p><strong>Remarque</strong></p><p> Cet appel API ne contient pas le paramètre de chemin <code>project_id</code>, vous devez donc utiliser la clé API valide dans tous les projets de l'entreprise pour l'autorisation.</p>\n</div> ",
        "operationId": "toggle-promotion",
        "parameters": [
          {
            "$ref": "#/components/parameters/merchant-id-path-param"
          },
          {
            "$ref": "#/components/parameters/promotion-id-path-param"
          }
        ],
        "responses": {
          "204": {
            "description": "No content."
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Basculer une promotion",
        "tags": [
          "promotions"
        ],
        "x-admin": true,
        "x-server": true
      },
      "servers": [
        {
          "url": "https://api.xsolla.com/merchant/v2"
        }
      ]
    },
    "/merchants/{merchant_id}/subscriptions": {
      "get": {
        "description": "Répertorie tous les abonnements récurrents.<div class=\"notice\"><strong>Remarque</strong><br><br> Cette méthode API ne peut pas être utilisée en cas de charge élevée. La charge maximale est de 20 requêtes par minute.</div>\n<div class=\"notice\">\n  <p><strong>Remarque</strong></p><p> Cet appel API ne contient pas le paramètre de chemin <code>project_id</code>, vous devez donc utiliser la clé API valide dans tous les projets de l'entreprise pour l'autorisation.</p>\n</div> ",
        "operationId": "get-subscriptions",
        "parameters": [
          {
            "$ref": "#/components/parameters/merchant-id-path-param"
          },
          {
            "$ref": "#/components/parameters/offset-query-param"
          },
          {
            "$ref": "#/components/parameters/limit-query-param"
          },
          {
            "$ref": "#/components/parameters/user-id-query-param"
          },
          {
            "$ref": "#/components/parameters/array-project-id-query-param"
          },
          {
            "$ref": "#/components/parameters/array-plan-id-query-param"
          },
          {
            "$ref": "#/components/parameters/array-product-id-query-param"
          },
          {
            "$ref": "#/components/parameters/array-group-id-query-param"
          },
          {
            "$ref": "#/components/parameters/status-query-param-array"
          },
          {
            "$ref": "#/components/parameters/datetime-from-query-param"
          },
          {
            "$ref": "#/components/parameters/datetime-to-query-param"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": [
                  {
                    "charge_amount": 0.03,
                    "currency": "USD",
                    "date_create": "2013-09-05T15:27:47+04:00",
                    "date_end": "2014-02-06T11:32:48+04:00",
                    "date_last_charge": null,
                    "date_next_charge": null,
                    "id": 45,
                    "plan": {
                      "id": 12345,
                      "project_id": 12345
                    },
                    "product": {
                      "id": null
                    },
                    "status": "canceled",
                    "user": {
                      "id": "User1",
                      "name": "John Smith"
                    }
                  }
                ],
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/SubscriptionResponse"
                  },
                  "type": "array"
                }
              }
            },
            "description": "OK."
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Lire la liste des abonnements",
        "tags": [
          "subscriptions"
        ],
        "x-admin": true,
        "x-server": true
      },
      "servers": [
        {
          "url": "https://api.xsolla.com/merchant/v2"
        }
      ]
    },
    "/merchants/{merchant_id}/token": {
      "post": {
        "description": "Vous pouvez créer un jeton avec des paramètres utilisateur arbitraires. Vous envoyez ces paramètres lors de l'obtention du jeton et les recevez en retour après un paiement réussi. Un jeton ne peut contenir que des paramètres décrits dans ce document ou prédéfinis par vous.\n\nSi un paramètre est envoyé dans un format incorrect ou a un type incorrect, aucun jeton ne sera émis. Vous recevrez un code HTTP 422 avec la description de l'erreur dans le corps JSON. Dans `extended_message`, vous recevrez une information sur les paramètres exacts qui ont été envoyés de manière incorrecte.\n<div class=\"notice\">\n  <p><strong>Remarque</strong></p><p> Cet appel API ne contient pas le paramètre de chemin <code>project_id</code>, vous devez donc utiliser la clé API valide dans tous les projets de l'entreprise pour l'autorisation.</p>\n</div> ",
        "operationId": "create-token",
        "parameters": [
          {
            "$ref": "#/components/parameters/merchant-id-path-param"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/token"
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "token": "eop57k1boA7nnYPtewZ6KEXJyJADEwRT"
                },
                "schema": {
                  "properties": {
                    "token": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Created."
          },
          "422": {
            "content": {
              "application/json": {
                "example": {
                  "extended_message": {
                    "global_errors": [],
                    "property_errors": {
                      "purchase.checkout.amount": [
                        "String value found, but a number is required"
                      ]
                    }
                  },
                  "http_status_code": 422,
                  "message": "JSON is not valid against json schema, please check documentation https://developers.xsolla.com/fr/api/v2/getting-started/#api_token_ui",
                  "request_id": "cd72633"
                },
                "schema": {
                  "properties": {
                    "extended_message": {
                      "properties": {
                        "global_errors": {
                          "items": {
                            "type": "string"
                          },
                          "type": "array"
                        },
                        "property_errors": {
                          "description": "Noms des paramètres avec la description de l'erreur.",
                          "type": "object"
                        }
                      },
                      "type": "object"
                    },
                    "http_status_code": {
                      "type": "integer"
                    },
                    "message": {
                      "type": "string"
                    },
                    "request_id": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Unprocessable Entity."
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Créer un jeton",
        "tags": [
          "token"
        ],
        "x-server": true
      },
      "servers": [
        {
          "url": "https://api.xsolla.com/merchant/v2"
        }
      ]
    },
    "/projects/{project_id}/coupons/{code}/details": {
      "get": {
        "description": "Récupération des informations sur le coupon par son code.",
        "operationId": "get-coupon",
        "parameters": [
          {
            "$ref": "#/components/parameters/project-id-path-param"
          },
          {
            "$ref": "#/components/parameters/code-path-param"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "key": "12",
                  "list_of_values": [],
                  "name": {
                    "en": "Level",
                    "ru": "Уровень"
                  },
                  "skip_condition_on_nonexistent_key": true,
                  "type": "int",
                  "visible": false
                },
                "schema": {
                  "$ref": "#/components/schemas/CouponAttribute"
                }
              }
            },
            "description": "OK."
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Lire un coupon",
        "tags": [
          "coupons"
        ],
        "x-admin": true,
        "x-server": true
      },
      "servers": [
        {
          "url": "https://api.xsolla.com/merchant/v2"
        }
      ]
    },
    "/projects/{project_id}/coupons/{code}/redeem": {
      "post": {
        "description": "Utilisation d'un coupon par son code.",
        "operationId": "redeem-coupon",
        "parameters": [
          {
            "$ref": "#/components/parameters/project-id-path-param"
          },
          {
            "$ref": "#/components/parameters/code-path-param"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "user_id": {
                    "description": "ID utilisateur.",
                    "example": "1234",
                    "type": "string"
                  }
                },
                "required": [
                  "user_id"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "campaign_code": "new_campaign",
                  "coupon_code": "ddgf5bn4",
                  "coupon_id": 89613996,
                  "expiration_date": "2019-12-31T00:00:00+00:00",
                  "is_active": true,
                  "project_id": 12345,
                  "redeems_count_for_user": 10,
                  "redeems_count_remain": 20,
                  "subscription_coupon": null,
                  "virtual_currency_amount": 200,
                  "virtual_items": []
                },
                "schema": {
                  "$ref": "#/components/schemas/Coupon"
                }
              }
            },
            "description": "OK."
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Échanger un coupon",
        "tags": [
          "coupons"
        ],
        "x-admin": true,
        "x-server": true
      },
      "servers": [
        {
          "url": "https://api.xsolla.com/merchant/v2"
        }
      ]
    },
    "/projects/{project_id}/subscriptions/currencies": {
      "get": {
        "description": "Récupère la liste de toutes les devises d'abonnement prises en charge.",
        "operationId": "get-currencies",
        "parameters": [
          {
            "$ref": "#/components/parameters/project-id-path-param"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": [
                  "AED",
                  "ALL",
                  "AMD",
                  "ARS",
                  "AUD",
                  "AZN",
                  "BAM",
                  "BBD",
                  "BGN",
                  "BHD",
                  "BND",
                  "BRL",
                  "BYN",
                  "BZD",
                  "CAD",
                  "CHF",
                  "CLP",
                  "CNY",
                  "COP",
                  "CRC",
                  "CZK",
                  "DKK",
                  "DZD",
                  "EGP",
                  "EUR",
                  "GBP",
                  "GEL",
                  "GHS",
                  "GIP",
                  "GTQ",
                  "HKD",
                  "HRK",
                  "HUF",
                  "IDR",
                  "ILS",
                  "INR",
                  "IQD",
                  "IRR",
                  "ISK",
                  "JMD",
                  "JOD",
                  "JPY",
                  "KES",
                  "KGS",
                  "KRW",
                  "KWD",
                  "KZT",
                  "LAK",
                  "LBP",
                  "LKR",
                  "MAD",
                  "MDL",
                  "MKD",
                  "MMK",
                  "MNT",
                  "MUR",
                  "MXN",
                  "MYR",
                  "NGN",
                  "NIO",
                  "NOK",
                  "NPR",
                  "NZD",
                  "OMR",
                  "PAB",
                  "PEN",
                  "PHP",
                  "PKR",
                  "PLN",
                  "PYG",
                  "QAR",
                  "RON",
                  "RSD",
                  "RUB",
                  "SAR",
                  "SEK",
                  "SGD",
                  "SVC",
                  "THB",
                  "TND",
                  "TRY",
                  "TWD",
                  "UAH",
                  "USD",
                  "UYU",
                  "UZS",
                  "VEF",
                  "VND",
                  "XOF",
                  "YER",
                  "ZAR"
                ]
              }
            },
            "description": "OK."
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Lire les devises",
        "tags": [
          "payments"
        ],
        "x-admin": true,
        "x-server": true
      },
      "servers": [
        {
          "url": "https://api.xsolla.com/merchant/v2"
        }
      ]
    },
    "/projects/{project_id}/subscriptions/payments": {
      "get": {
        "description": "Récupère la liste de tous les paiements d'abonnements.",
        "operationId": "get-payments",
        "parameters": [
          {
            "$ref": "#/components/parameters/project-id-path-param"
          },
          {
            "$ref": "#/components/parameters/offset-query-param"
          },
          {
            "$ref": "#/components/parameters/limit-query-param"
          },
          {
            "$ref": "#/components/parameters/user-id-query-param"
          },
          {
            "$ref": "#/components/parameters/status-id-query-param"
          },
          {
            "$ref": "#/components/parameters/datetime-from-query-param2"
          },
          {
            "$ref": "#/components/parameters/datetime-to-query-param2"
          },
          {
            "$ref": "#/components/parameters/subscription-id-query-param"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": [
                  {
                    "date_payment": "2016-04-05T10:02:01+03:00",
                    "id": 67683,
                    "id_payment": 203960,
                    "status": "fail",
                    "subscription": {
                      "charge_amount": 1,
                      "comment": null,
                      "currency": "RUB",
                      "date_create": "2015-05-28T14:33:54+03:00",
                      "date_end": "2016-04-05T10:02:07+03:00",
                      "date_last_charge": "2015-06-03T16:07:29+03:00",
                      "date_next_charge": "2015-06-04T00:00:00+03:00",
                      "id": 3646,
                      "plan": {
                        "billing_retry": {
                          "value": 1
                        },
                        "charge": {
                          "amount": 1,
                          "currency": "RUB",
                          "period": {
                            "type": "day",
                            "value": 1
                          }
                        },
                        "description": null,
                        "expiration": {
                          "type": "day",
                          "value": 0
                        },
                        "external_id": "E8nJ79",
                        "grace_period": {
                          "type": "day",
                          "value": 0
                        },
                        "group_id": "charge",
                        "id": 24,
                        "localized_name": null,
                        "name": null,
                        "project_id": 12345,
                        "refund_period": null,
                        "status": {
                          "value": "deleted"
                        },
                        "tags": null,
                        "trial": {
                          "type": "day",
                          "value": 0
                        },
                        "type": "charge"
                      },
                      "product": {
                        "description": null,
                        "group_id": "charge",
                        "id": 1,
                        "name": "charge"
                      },
                      "status": "freeze",
                      "user": {
                        "id": "10",
                        "name": "user2"
                      }
                    }
                  },
                  {
                    "date_payment": "2015-09-21T17:06:47+03:00",
                    "id": 1531,
                    "id_payment": 168866,
                    "status": "done",
                    "subscription": {
                      "charge_amount": 1,
                      "comment": "  \r\n",
                      "currency": "RUB",
                      "date_create": "2015-09-21T17:06:47+03:00",
                      "date_end": null,
                      "date_last_charge": "2015-09-21T18:10:09+03:00",
                      "date_next_charge": "2015-09-22T18:10:09+03:00",
                      "id": 2004846,
                      "plan": {
                        "billing_retry": {
                          "value": 1
                        },
                        "charge": {
                          "amount": 1,
                          "currency": "RUB",
                          "period": {
                            "type": "day",
                            "value": 1
                          }
                        },
                        "description": null,
                        "expiration": {
                          "type": "day",
                          "value": 0
                        },
                        "external_id": "E8nX9",
                        "grace_period": {
                          "type": "day",
                          "value": 0
                        },
                        "group_id": "charge",
                        "id": 200,
                        "localized_name": null,
                        "name": null,
                        "project_id": 70,
                        "refund_period": null,
                        "status": {
                          "value": "deleted"
                        },
                        "tags": null,
                        "trial": {
                          "type": "day",
                          "value": 0
                        },
                        "type": "charge"
                      },
                      "product": null,
                      "status": "new",
                      "user": {
                        "id": "12",
                        "name": "user1"
                      }
                    }
                  }
                ]
              }
            },
            "description": "OK."
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Lire les paiements",
        "tags": [
          "payments"
        ],
        "x-admin": true,
        "x-server": true
      },
      "servers": [
        {
          "url": "https://api.xsolla.com/merchant/v2"
        }
      ]
    },
    "/projects/{project_id}/subscriptions/plans": {
      "get": {
        "description": "Récupère la liste de tous les plans d'abonnement.",
        "operationId": "get-plans",
        "parameters": [
          {
            "$ref": "#/components/parameters/project-id-path-param"
          },
          {
            "$ref": "#/components/parameters/plan-id-query-param"
          },
          {
            "$ref": "#/components/parameters/limit-query-param"
          },
          {
            "$ref": "#/components/parameters/offset-query-param"
          },
          {
            "$ref": "#/components/parameters/external-id-query-param"
          },
          {
            "$ref": "#/components/parameters/group-id-query-param"
          },
          {
            "$ref": "#/components/parameters/product-id-query-param"
          },
          {
            "$ref": "#/components/parameters/query-query-param"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": [
                  {
                    "billing_retry": {
                      "value": 1
                    },
                    "charge": {
                      "amount": 19.99,
                      "currency": "USD",
                      "period": {
                        "type": "month",
                        "value": 1
                      },
                      "prices": [
                        {
                          "amount": 17.99,
                          "currency": "EUR",
                          "setup_fee": 1.5
                        },
                        {
                          "amount": 2000,
                          "currency": "JPY",
                          "setup_fee": 2.5
                        }
                      ]
                    },
                    "description": {
                      "en": "10x more experience!"
                    },
                    "expiration": {
                      "type": "day",
                      "value": 0
                    },
                    "external_id": "3b355320",
                    "grace_period": {
                      "type": "day",
                      "value": 0
                    },
                    "group_id": null,
                    "id": 241037,
                    "localized_name": "Platinum VIP",
                    "name": {
                      "en": "Platinum VIP",
                      "fr": "Le VIP-statut platinum"
                    },
                    "project_id": 40797,
                    "refund_period": null,
                    "status": {
                      "value": "active"
                    },
                    "tags": [],
                    "trial": {
                      "type": "day",
                      "value": 0
                    }
                  },
                  {
                    "billing_retry": {
                      "value": 1
                    },
                    "charge": {
                      "amount": 9.99,
                      "currency": "USD",
                      "period": {
                        "type": "month",
                        "value": 1
                      },
                      "prices": [
                        {
                          "amount": 8,
                          "currency": "EUR",
                          "setup_fee": 1.5
                        },
                        {
                          "amount": 1000,
                          "currency": "JPY",
                          "setup_fee": 2.5
                        }
                      ]
                    },
                    "description": {
                      "en": "3x more experience!"
                    },
                    "expiration": {
                      "type": "day",
                      "value": 0
                    },
                    "external_id": "0fe1b6fc",
                    "grace_period": {
                      "type": "day",
                      "value": 0
                    },
                    "group_id": null,
                    "id": 241038,
                    "localized_name": "Gold Status",
                    "name": {
                      "en": "Gold Status",
                      "fr": "Le statut d’or"
                    },
                    "project_id": 40797,
                    "refund_period": null,
                    "status": {
                      "value": "active"
                    },
                    "tags": [],
                    "trial": {
                      "type": "day",
                      "value": 0
                    }
                  }
                ],
                "schema": {
                  "items": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/SubscriptionsPlan"
                      },
                      {
                        "properties": {
                          "localized_name": {
                            "description": "Nom du plan dans la langue par défaut (en), répète la valeur du paramètre name.en.",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      }
                    ]
                  },
                  "type": "array"
                }
              }
            },
            "description": "OK."
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Lire les plans",
        "tags": [
          "plans"
        ],
        "x-admin": true,
        "x-server": true
      },
      "post": {
        "description": "Crée un plan d'abonnement.",
        "operationId": "create-plan",
        "parameters": [
          {
            "$ref": "#/components/parameters/project-id-path-param"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "billing_retry": {
                  "value": 1
                },
                "charge": {
                  "amount": 10,
                  "currency": "USD",
                  "period": {
                    "type": "month",
                    "value": 1
                  },
                  "prices": [
                    {
                      "amount": 8,
                      "currency": "EUR",
                      "setup_fee": 1.5
                    },
                    {
                      "amount": 1000,
                      "currency": "JPY",
                      "setup_fee": 2.5
                    }
                  ]
                },
                "description": {
                  "en": "2x more experience!"
                },
                "expiration": {
                  "type": "day",
                  "value": null
                },
                "external_id": "exp",
                "grace_period": {
                  "type": "day",
                  "value": 2
                },
                "name": {
                  "en": "Experience boost"
                },
                "refund_period": null,
                "status": {
                  "value": "active"
                },
                "trial": {
                  "type": "day",
                  "value": 7
                }
              },
              "schema": {
                "allOf": [
                  {
                    "required": [
                      "name",
                      "charge"
                    ]
                  },
                  {
                    "$ref": "#/components/schemas/SubscriptionsPlan"
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "example": {
                  "external_id": "exp",
                  "plan_id": 241082
                },
                "schema": {
                  "properties": {
                    "external_id": {
                      "type": "string"
                    },
                    "plan_id": {
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Сreated."
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Créer un plan",
        "tags": [
          "plans"
        ],
        "x-admin": true,
        "x-server": true
      },
      "servers": [
        {
          "url": "https://api.xsolla.com/merchant/v2"
        }
      ]
    },
    "/projects/{project_id}/subscriptions/plans/{plan_id}": {
      "delete": {
        "description": "Désactive un plan d'abonnement.",
        "operationId": "disable-plan",
        "parameters": [
          {
            "$ref": "#/components/parameters/project-id-path-param"
          },
          {
            "$ref": "#/components/parameters/plan-id-path-param"
          }
        ],
        "responses": {
          "204": {
            "description": "No content."
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Désactiver un plan",
        "tags": [
          "plans"
        ],
        "x-admin": true,
        "x-server": true
      },
      "patch": {
        "description": "Active un plan d'abonnement.",
        "operationId": "enable-plan",
        "parameters": [
          {
            "$ref": "#/components/parameters/project-id-path-param"
          },
          {
            "$ref": "#/components/parameters/plan-id-path-param"
          }
        ],
        "responses": {
          "204": {
            "description": "No content."
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Activer un plan",
        "tags": [
          "plans"
        ],
        "x-admin": true,
        "x-server": true
      },
      "put": {
        "description": "Met à jour les paramètres d'un plan d'abonnement.",
        "operationId": "update-plan-parameters",
        "parameters": [
          {
            "$ref": "#/components/parameters/project-id-path-param"
          },
          {
            "$ref": "#/components/parameters/plan-id-path-param"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "billing_retry": {
                  "value": 1
                },
                "charge": {
                  "amount": 20,
                  "currency": "USD",
                  "period": {
                    "type": "month",
                    "value": 1
                  },
                  "prices": [
                    {
                      "amount": 17,
                      "currency": "EUR",
                      "setup_fee": 1.5
                    },
                    {
                      "amount": 2000,
                      "currency": "JPY",
                      "setup_fee": 2.5
                    }
                  ]
                },
                "description": {
                  "en": "3x more experience!"
                },
                "expiration": {
                  "type": "day",
                  "value": null
                },
                "external_id": "exp",
                "grace_period": {
                  "type": "day",
                  "value": 2
                },
                "name": {
                  "en": "Experience boost"
                },
                "refund_period": null,
                "tags": [],
                "trial": {
                  "type": "day",
                  "value": 7
                }
              },
              "schema": {
                "$ref": "#/components/schemas/SubscriptionsPlanRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "billing_retry": {
                    "value": 1
                  },
                  "charge": {
                    "amount": 20,
                    "currency": "USD",
                    "period": {
                      "type": "month",
                      "value": 1
                    },
                    "prices": [
                      {
                        "amount": 17,
                        "currency": "EUR",
                        "setup_fee": 1.5
                      },
                      {
                        "amount": 2000,
                        "currency": "JPY",
                        "setup_fee": 2.5
                      }
                    ]
                  },
                  "description": {
                    "en": "3x more experience!"
                  },
                  "expiration": {
                    "type": "day",
                    "value": 0
                  },
                  "external_id": "exp",
                  "grace_period": {
                    "type": "day",
                    "value": 2
                  },
                  "group_id": null,
                  "id": 241082,
                  "localized_name": "Experience boost",
                  "name": {
                    "en": "Experience boost"
                  },
                  "project_id": 40797,
                  "refund_period": null,
                  "status": {
                    "value": "active"
                  },
                  "tags": [],
                  "trial": {
                    "type": "day",
                    "value": 7
                  },
                  "type": "all"
                }
              }
            },
            "description": "OK."
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Mettre à jour un plan",
        "tags": [
          "plans"
        ],
        "x-admin": true,
        "x-server": true
      },
      "servers": [
        {
          "url": "https://api.xsolla.com/merchant/v2"
        }
      ]
    },
    "/projects/{project_id}/subscriptions/plans/{plan_id}/delete": {
      "delete": {
        "description": "Supprime un plan d'abonnement.",
        "operationId": "delete-plan",
        "parameters": [
          {
            "$ref": "#/components/parameters/project-id-path-param"
          },
          {
            "$ref": "#/components/parameters/plan-id-path-param"
          }
        ],
        "responses": {
          "204": {
            "description": "No content."
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Supprimer un plan",
        "tags": [
          "plans"
        ],
        "x-admin": true,
        "x-server": true
      },
      "servers": [
        {
          "url": "https://api.xsolla.com/merchant/v2"
        }
      ]
    },
    "/projects/{project_id}/subscriptions/products": {
      "get": {
        "description": "Récupère la liste de tous les produits par abonnement.",
        "operationId": "get-products",
        "parameters": [
          {
            "$ref": "#/components/parameters/project-id-path-param"
          },
          {
            "$ref": "#/components/parameters/offset-query-param"
          },
          {
            "$ref": "#/components/parameters/limit-query-param"
          },
          {
            "$ref": "#/components/parameters/group-id-query-param"
          },
          {
            "$ref": "#/components/parameters/product-id-query-param"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": [
                  {
                    "description": {
                      "en": "Description in English."
                    },
                    "group_id": "charge",
                    "id": 714,
                    "name": "Channel"
                  },
                  {
                    "description": {
                      "en": "Description in English."
                    },
                    "group_id": "notify",
                    "id": 715,
                    "name": "notify"
                  },
                  {
                    "description": {
                      "en": "Description in English."
                    },
                    "group_id": "charge",
                    "id": 716,
                    "name": "charge2"
                  },
                  {
                    "description": {
                      "en": "Description in English."
                    },
                    "group_id": "charge",
                    "id": 486,
                    "name": "Channel2"
                  }
                ],
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/SubscriptionsProductWithId"
                  },
                  "type": "array"
                }
              }
            },
            "description": "OK."
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Lire les produits",
        "tags": [
          "products"
        ],
        "x-admin": true,
        "x-server": true
      },
      "post": {
        "description": "Crée un produit par abonnement.",
        "operationId": "create-product",
        "parameters": [
          {
            "$ref": "#/components/parameters/project-id-path-param"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "description": {
                  "en": "Kids TV"
                },
                "group_id": "charge",
                "name": "Channel2"
              },
              "schema": {
                "allOf": [
                  {
                    "required": [
                      "name",
                      "group_id"
                    ]
                  },
                  {
                    "$ref": "#/components/schemas/SubscriptionsProduct"
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "example": {
                  "product_id": 172003
                },
                "schema": {
                  "properties": {
                    "product_id": {
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Created."
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Créer un produit",
        "tags": [
          "products"
        ],
        "x-admin": true,
        "x-server": true
      },
      "servers": [
        {
          "url": "https://api.xsolla.com/merchant/v2"
        }
      ]
    },
    "/projects/{project_id}/subscriptions/products/{product_id}": {
      "delete": {
        "description": "Supprime un produit par abonnement.",
        "operationId": "delete-product",
        "parameters": [
          {
            "$ref": "#/components/parameters/project-id-path-param"
          },
          {
            "$ref": "#/components/parameters/product-id-path-param"
          }
        ],
        "responses": {
          "204": {
            "description": "No content."
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Supprimer un produit",
        "tags": [
          "products"
        ],
        "x-admin": true,
        "x-server": true
      },
      "put": {
        "description": "Met à jour un produit par abonnement.",
        "operationId": "update-product",
        "parameters": [
          {
            "$ref": "#/components/parameters/project-id-path-param"
          },
          {
            "$ref": "#/components/parameters/product-id-path-param"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "description": {
                  "en": "Description in English."
                },
                "group_id": "charge13",
                "name": "Channel23"
              },
              "schema": {
                "allOf": [
                  {
                    "required": [
                      "name",
                      "group_id"
                    ]
                  },
                  {
                    "$ref": "#/components/schemas/SubscriptionsProduct"
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "description": {
                    "en": "Description in English."
                  },
                  "group_id": "charge13",
                  "id": 1713603,
                  "name": "Channel23"
                },
                "schema": {
                  "$ref": "#/components/schemas/SubscriptionsProductWithId"
                }
              }
            },
            "description": "OK."
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Mettre à jour un produit",
        "tags": [
          "products"
        ],
        "x-admin": true,
        "x-server": true
      },
      "servers": [
        {
          "url": "https://api.xsolla.com/merchant/v2"
        }
      ]
    },
    "/projects/{project_id}/subscriptions/{subscription_id}": {
      "get": {
        "description": "Récupère les informations d'un abonnement spécifique par son ID.",
        "operationId": "get-subscription",
        "parameters": [
          {
            "$ref": "#/components/parameters/project-id-path-param"
          },
          {
            "$ref": "#/components/parameters/subscription-id-path-param"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "charge_amount": 0.03,
                  "comment": "The subscription was not extended in due time",
                  "currency": "USD",
                  "date_create": "2018-09-21T16:54:59+03:00",
                  "date_end": "2019-02-06T12:43:04+03:00",
                  "date_last_charge": "2018-09-21T16:55:05+03:00",
                  "date_next_charge": "2018-09-21T16:55:05+03:00",
                  "id": 249579,
                  "plan": {
                    "external_id": "lowcost",
                    "id": 601
                  },
                  "product": {
                    "id": 123456
                  },
                  "status": "canceled",
                  "user": {
                    "id": "user1",
                    "name": "John Smith"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/SubscriptionResponse"
                }
              }
            },
            "description": "OK."
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Lire un abonnement",
        "tags": [
          "subscriptions"
        ],
        "x-admin": true,
        "x-server": true
      },
      "servers": [
        {
          "url": "https://api.xsolla.com/merchant/v2"
        }
      ]
    },
    "/projects/{project_id}/users/{user_id}/subscriptions/payments": {
      "get": {
        "description": "Récupère la liste de tous les paiements effectués par un utilisateur spécifique.",
        "operationId": "get-user-payments",
        "parameters": [
          {
            "$ref": "#/components/parameters/project-id-path-param"
          },
          {
            "$ref": "#/components/parameters/user-id-path-param"
          },
          {
            "$ref": "#/components/parameters/status-id-query-param"
          },
          {
            "$ref": "#/components/parameters/offset-query-param"
          },
          {
            "$ref": "#/components/parameters/limit-query-param"
          },
          {
            "$ref": "#/components/parameters/datetime-from-query-param"
          },
          {
            "$ref": "#/components/parameters/datetime-to-query-param"
          },
          {
            "$ref": "#/components/parameters/subscription-id-query-param"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": [
                  {
                    "date_payment": "2016-04-05T10:02:01+03:00",
                    "id": 6746083,
                    "id_payment": 202789960,
                    "status": "fail",
                    "subscription": {
                      "charge_amount": 200,
                      "comment": null,
                      "currency": "RUB",
                      "date_create": "2015-05-28T14:33:54+03:00",
                      "date_end": "2016-04-05T10:02:07+03:00",
                      "date_last_charge": "2015-06-03T16:07:29+03:00",
                      "date_next_charge": "2015-06-04T00:00:00+03:00",
                      "id": 36946,
                      "plan": {
                        "charge": {
                          "amount": 200,
                          "currency": "RUB",
                          "period": {
                            "type": "day",
                            "value": 1
                          }
                        },
                        "description": null,
                        "expiration": {
                          "type": "day",
                          "value": 0
                        },
                        "external_id": "E8n34J79",
                        "grace_period": {
                          "type": "day",
                          "value": 0
                        },
                        "group_id": "charge",
                        "id": 24,
                        "localized_name": null,
                        "name": null,
                        "project_id": 1234,
                        "refund_period": null,
                        "status": {
                          "value": "deleted"
                        },
                        "tags": null,
                        "trial": {
                          "type": "day",
                          "value": 0
                        },
                        "type": "charge"
                      },
                      "product": {
                        "description": null,
                        "group_id": "charge",
                        "id": 1,
                        "name": "charge"
                      },
                      "status": "freeze",
                      "user": {
                        "id": "12",
                        "name": "John"
                      }
                    }
                  }
                ]
              }
            },
            "description": "OK."
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Lire les paiements d'un utilisateur",
        "tags": [
          "payments"
        ],
        "x-admin": true,
        "x-server": true
      },
      "servers": [
        {
          "url": "https://api.xsolla.com/merchant/v2"
        }
      ]
    },
    "/projects/{project_id}/users/{user_id}/subscriptions/{subscription_id}": {
      "put": {
        "description": "Met à jour un abonnement en modifiant son statut (`active`, `canceled` ou `non_renewing`) ou en reportant la prochaine date de facturation.",
        "operationId": "update-subscription",
        "parameters": [
          {
            "$ref": "#/components/parameters/project-id-path-param"
          },
          {
            "$ref": "#/components/parameters/user-id-path-param"
          },
          {
            "$ref": "#/components/parameters/subscription-id-path-param"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "status": "active"
              },
              "schema": {
                "$ref": "#/components/schemas/Subscription"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "charge_amount": 0.03,
                  "currency": "USD",
                  "date_create": "2018-09-21T16:54:59+03:00",
                  "date_end": null,
                  "date_last_charge": "2018-09-21T16:55:05+03:00",
                  "date_next_charge": "2018-09-21T16:55:05+03:00",
                  "id": 24953579,
                  "plan": {
                    "billing_retry": {
                      "value": 1
                    },
                    "charge": {
                      "amount": 0.03,
                      "currency": "USD",
                      "period": {
                        "type": "day",
                        "value": 1
                      }
                    },
                    "description": null,
                    "expiration": {
                      "type": "day",
                      "value": 0
                    },
                    "external_id": "lowcost",
                    "grace_period": {
                      "type": "day",
                      "value": 2
                    },
                    "group_id": "newPlans",
                    "id": 66001,
                    "localized_name": null,
                    "name": null,
                    "project_id": 18404,
                    "refund_period": null,
                    "status": {
                      "value": "active"
                    },
                    "tags": null,
                    "trial": {
                      "type": "day",
                      "value": 0
                    },
                    "type": "all"
                  },
                  "product": null,
                  "status": "active",
                  "user": {
                    "id": "jb1",
                    "name": "J.Black"
                  }
                }
              }
            },
            "description": "OK."
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Mettre à jour un abonnement",
        "tags": [
          "subscriptions"
        ],
        "x-admin": true,
        "x-server": true
      },
      "servers": [
        {
          "url": "https://api.xsolla.com/merchant/v2"
        }
      ]
    }
  },
  "tags": [
    {
      "name": "token",
      "x-displayName": "Jeton"
    },
    {
      "name": "plans",
      "x-displayName": "Plans"
    },
    {
      "name": "products",
      "x-displayName": "Produits"
    },
    {
      "name": "subscriptions",
      "x-displayName": "Subscription management"
    },
    {
      "name": "payments",
      "x-displayName": "Paiements"
    },
    {
      "name": "promotions",
      "x-displayName": "Promotions"
    },
    {
      "name": "coupons",
      "x-displayName": "Coupons"
    },
    {
      "name": "subscription-management",
      "x-displayName": "Subscription management"
    }
  ],
  "x-tagGroups": [
    {
      "name": "Admin subscription management",
      "tags": [
        "token",
        "plans",
        "products",
        "subscriptions",
        "payments",
        "promotions",
        "coupons"
      ]
    },
    {
      "name": "User subscription management",
      "tags": [
        "subscription-management"
      ]
    }
  ]
}