components:
  parameters:
    array-group-id-query-param:
      description: Lista de ID de grupos a los que están vinculados los planes.
      in: query
      name: group_id[]
      schema:
        items:
          type: string
        type: array
    array-plan-id-query-param:
      description: Lista de ID de planes de suscripción.
      in: query
      name: plan_id[]
      schema:
        items:
          type: integer
        type: array
    array-product-id-query-param:
      description: Lista de ID de productos a los que están vinculados los planes.
      in: query
      name: product_id[]
      schema:
        items:
          type: integer
        type: array
    array-project-id-query-param:
      description: Lista de ID de proyectos.
      in: query
      name: project_id[]
      schema:
        items:
          type: integer
        type: array
    campaign-id-path-param:
      description: ID de campaña.
      in: path
      name: campaign_id
      required: true
      schema:
        type: integer
    code-path-param:
      description: Código de cupón.
      in: path
      name: code
      required: true
      schema:
        type: string
    datetime-from-query-param:
      description: >-
        Fecha de muestra. Úsela para buscar suscripciones creadas tras realizar
        la solicitud.
      in: query
      name: datetime_from
      schema:
        format: datetime
        type: string
    datetime-from-query-param2:
      description: Inicio del periodo.
      in: query
      name: datetime_from
      schema:
        format: datetime
        type: string
    datetime-to-query-param:
      description: >-
        Fecha de muestra. Úsela para buscar suscripciones creadas tras realizar
        la solicitud.
      in: query
      name: datetime_to
      schema:
        format: datetime
        type: string
    datetime-to-query-param2:
      description: Fin del periodo.
      in: query
      name: datetime_to
      schema:
        format: datetime
        type: string
    external-id-query-param:
      description: "ID externo del plan (32\_caracteres)."
      in: query
      name: external_id
      schema:
        type: string
    group-id-query-param:
      description: ID del grupo a los que están vinculados los planes.
      in: query
      name: group_id
      schema:
        type: string
    limit-query-param:
      description: Límite para el número de elementos presentes en la página.
      in: query
      name: limit
      required: true
      schema:
        type: integer
    merchant-id-path-param:
      description: ID de vendedor.
      in: path
      name: merchant_id
      required: true
      schema:
        type: integer
    offset-query-param:
      description: >-
        Número del elemento a partir del cual se genera la lista (el conteo
        empieza desde el 0).
      in: query
      name: offset
      schema:
        type: integer
    plan-id-path-param:
      description: ID del plan.
      in: path
      name: plan_id
      required: true
      schema:
        type: integer
    plan-id-query-param:
      description: ID del plan de suscripción.
      in: query
      name: plan_id
      schema:
        type: integer
    product-id-path-param:
      description: ID del producto al que está vinculado el plan.
      in: path
      name: product_id
      required: true
      schema:
        type: integer
    product-id-query-param:
      description: ID del producto al que está vinculado el plan.
      in: query
      name: product_id
      schema:
        type: integer
    project-id-path-param:
      description: ID de proyecto.
      in: path
      name: project_id
      required: true
      schema:
        type: integer
    promotion-id-path-param:
      description: ID de promoción.
      in: path
      name: promotion_id
      required: true
      schema:
        type: integer
    query-query-param:
      description: >-
        Consulta de búsqueda (busca name.en (configuración regional
        predeterminada)).
      in: query
      name: query
      schema:
        type: string
    status-id-query-param:
      description: Estado de la transacción.
      in: query
      name: status
      schema:
        enum:
          - done
          - fail
        type: string
        x-enumDescriptions:
          done: El pago se procesó correctamente.
          fail: El pago no se procesó correctamente, o se emitió un reembolso.
    status-query-param-array:
      description: Estado.
      in: query
      name: status[]
      schema:
        items:
          enum:
            - active
            - canceled
            - non_renewing
          type: string
        type: array
    subscription-id-path-param:
      description: ID de suscripción.
      in: path
      name: subscription_id
      required: true
      schema:
        type: integer
    subscription-id-query-param:
      description: ID de suscripción.
      in: query
      name: subscription_id
      schema:
        type: integer
    user-id-path-param:
      description: ID de usuario.
      in: path
      name: user_id
      required: true
      schema:
        type: string
    user-id-query-param:
      description: ID de usuario.
      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: Nombre de campaña.
          type: string
        campaign_names:
          allOf:
            - $ref: '#/components/schemas/LocalizedStringPairs'
            - description: Objeto que contiene los nombres de las campañas localizados.
        campaign_redeems_count_for_user:
          description: >-
            Número máximo de canjes de cupones por usuario en el marco de una
            campaña. Si se transmite `null`, el número de canjes es ilimitado.
          type: integer
        expiration_date:
          description: >-
            Fecha de finalización de la campaña en formato
            `YYYY-MM-DD’T’HH:MM:SS` de conformidad con la norma [ISO
            8601](https://en.wikipedia.org/wiki/ISO_8601).
          format: datetime
          type: string
        project_id:
          description: ID de proyecto.
          type: integer
        redeems_count:
          description: >-
            Número máximo de canjes de cupones. Si se transmite `null`, el
            número de canjes es ilimitado.
          type: integer
        redeems_count_for_user:
          description: >-
            Número máximo de canjes de cupones por usuario. Si se transmite
            `null`, el número de canjes es ilimitado.
          type: integer
        subscription_coupon:
          description: Objeto que contiene parámetros de suscripción en una recompensa.
          properties:
            plan_id:
              description: ID del plan de suscripción.
              type: integer
            product_id:
              description: ID del producto de suscripción.
              type: integer
            trial_period:
              description: Duración del periodo de prueba en días.
              type: integer
          required:
            - plan_id
            - product_id
            - trial_period
          type: object
        virtual_currency_amount:
          description: Importe en moneda virtual de una recompensa.
          format: float
          type: number
        virtual_items:
          description: Matriz de parámetros de artículos virtuales de una recompensa.
          properties:
            quantity:
              description: Cantidad de artículos virtuales.
              type: integer
            sku:
              description: Código de artículo (SKU) virtual.
              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: Clave del atributo de usuario.
          type: string
        list_of_values:
          description: Matriz de valores posibles para el tipo enum.
          items:
            type: object
          type: array
        name:
          allOf:
            - $ref: '#/components/schemas/LocalizedStringPairs'
            - description: Nombres de atributos localizados.
        skip_condition_on_nonexistent_key:
          description: Si se omite la condición si la clave no existe.
          type: boolean
        type:
          description: Tipo de clave.
          enum:
            - int
            - string
            - enum
            - date
          type: string
        visible:
          type: boolean
      type: object
    CreatePromotion:
      properties:
        description:
          allOf:
            - $ref: '#/components/schemas/LocalizedStringPairs'
            - description: Matriz de descripciones de promociones localizadas.
        label:
          allOf:
            - $ref: '#/components/schemas/LocalizedStringPairs'
            - description: >-
                Matriz de etiquetas localizadas que se mostrarán en la interfaz
                de pago.
        name:
          allOf:
            - $ref: '#/components/schemas/LocalizedStringPairs'
            - description: Matriz de nombres de promociones localizados.
        project_id:
          description: ID de proyecto.
          type: integer
        technical_name:
          description: Nombre técnico de la promoción.
          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: Árabe.
          type: string
        bg:
          description: Búlgaro.
          type: string
        cn:
          description: Chino (simplificado).
          type: string
        cs:
          description: Checo.
          type: string
        de:
          description: Alemán.
          type: string
        en:
          description: Inglés.
          type: string
        es:
          description: Español.
          type: string
        fr:
          description: Francés.
          type: string
        he:
          description: Hebreo.
          type: string
        it:
          description: Italiano.
          type: string
        ja:
          description: Japonés.
          type: string
        ko:
          description: Coreano.
          type: string
        pl:
          description: Polaco.
          type: string
        pt:
          description: Portugués.
          type: string
        ro:
          description: Rumano.
          type: string
        ru:
          description: Ruso.
          type: string
        th:
          description: Tailandés.
          type: string
        tr:
          description: Turco.
          type: string
        tw:
          description: Chino (tradicional).
          type: string
        vi:
          description: Vietnamita.
          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: Sistemas de pago.
          items:
            properties:
              id:
                description: ID del sistema de pago.
                type: integer
              name:
                description: Nombre del sistema de pago.
                type: string
            type: object
          type: array
      type: object
    PromotionPeriod:
      properties:
        periods:
          description: Intervalos de fecha/hora.
          items:
            properties:
              from:
                description: Inicio del periodo.
                format: datetime
                type: string
              offset:
                description: >-
                  Número del elemento a partir del cual se genera la lista (el
                  conteo empieza desde el 0).
                type: string
              to:
                description: Fin del periodo.
                format: datetime
                type: string
            type: object
          type: array
      type: object
    PromotionReward:
      properties:
        item:
          description: Establecer la recompensa por artículos virtuales específicos.
          properties:
            bonus:
              description: Artículos virtuales adicionales como bonificación.
              items:
                properties:
                  id:
                    type: integer
                  localized_name:
                    description: >-
                      Nombre del plan en el idioma por defecto (EN), replica el
                      valor de name.en.
                    type: string
                  quantity:
                    description: Número de artículos virtuales ofrecidos como bonificación.
                    type: integer
                  sku:
                    description: Código (SKU) del artículo.
                    type: string
                type: object
              type: array
            discount:
              description: Descuentos para artículos virtuales específicos.
              items:
                properties:
                  discount_percent:
                    description: Porcentaje de descuento.
                    format: float
                    type: number
                  localized_name:
                    description: >-
                      Nombre del plan en el idioma por defecto (EN), replica el
                      valor de name.en.
                    type: string
                  max_amount:
                    description: >-
                      Número máximo de artículos a los que se puede aplicar la
                      promoción.
                    format: integer
                    type: number
                  sku:
                    description: Código (SKU) del artículo.
                    type: string
                type: object
              type: array
          type: object
        package:
          description: Establecer la recompensa por un paquete de moneda virtual.
          properties:
            bonus_amount:
              description: Recompensa como una cantidad absoluta de moneda virtual.
              format: float
              type: number
            bonus_percent:
              description: Recompensa como un porcentaje del importe del paquete.
              format: float
              type: number
          type: object
        purchase:
          description: Establecer la recompensa por la totalidad de la compra.
          properties:
            discount_percent:
              description: Porcentaje de descuento.
              format: float
              type: number
          type: object
        subscription:
          description: Establece la recompensa por una suscripción.
          properties:
            trial_days:
              description: Periodo de prueba en días.
              type: integer
          type: object
      type: object
    PromotionSubject:
      properties:
        digital_contents:
          nullable: true
          type: object
        items:
          description: Conjunto de artículos virtuales a los que se aplica la promoción.
          items:
            properties:
              id:
                type: integer
              localized_name:
                description: >-
                  Nombre del plan en el idioma por defecto (EN), replica el
                  valor de name.en.
                type: string
              sku:
                description: Código (SKU) del artículo.
                type: string
            type: object
          type: array
        packages:
          description: >-
            Conjunto de paquetes de moneda virtual a los que se aplica la
            promoción.
          items:
            type: object
          nullable: true
          type: array
        purchase:
          description: Si la promoción se aplica o no a la totalidad de la compra.
          type: boolean
        subscriptions:
          description: Planes de suscripción o productos a los que se aplica la promoción.
          nullable: true
          properties:
            max_charges_count:
              description: Número máximo de facturas a las que se aplica la promoción.
              type: integer
            plans:
              items:
                description: >-
                  Conjunto de planes de suscripción a los que se aplica la
                  promoción.
                type: string
              type: array
            products:
              items:
                description: >-
                  Conjunto de productos basados en suscripción a los que se
                  aplica la promoción.
                type: string
              type: array
          type: object
      type: object
    Subscription:
      properties:
        cancel_subscription_payment:
          description: >-
            Al establecer `true` se reembolsará el último pago hecho para esta
            suscripción. **Solo funciona si se establece el estado como
            `canceled`**.
          type: boolean
        status:
          description: Estado.
          enum:
            - active
            - canceled
            - non_renewing
          type: string
        timeshift:
          description: Aplazamiento de la facturación.
          properties:
            type:
              description: Unidad de tiempo de facturación. Puede ser `day` o `month`.
              enum:
                - day
                - month
              type: string
            value:
              description: >-
                Número de unidades de tiempo en las que se puede aplazar la
                facturación. El valor depende del parámetro de tipo y puede ser:
                <br>- desde 1 hasta 366, si `type` es `day` <br>- desde 1 hasta
                12, si `type` es `month`
              type: string
          type: object
        xsolla_network:
          properties:
            collaborator_id:
              description: >-
                ID de colaborador: identificador de
                ['influencer'](https://developers.xsolla.com/es/doc/partner-network/#guides_network_glossary_influencer)
                o [red de
                afiliados](https://developers.xsolla.com/es/doc/partner-network/#guides_network_glossary_affiliate_network).
                Puedes encontrarlo en tu sección de **Cuenta del editor > Red de
                socios > Influencers**.
              type: string
          type: object
      type: object
    SubscriptionResponse:
      properties:
        charge_amount:
          description: Importe de facturación.
          format: float
          type: number
        comment:
          description: Motivo para cambiar el estado de la suscripción
          type: string
        currency:
          description: >-
            Moneda de la compra. Código de moneda de tres letras de conformidad
            con la norma ISO 4217.
          type: string
        date_create:
          description: >-
            Fecha de creación de la suscripción en formato
            "AAAA-MM-DD’T’HH:MM:SS" de conformidad con la norma [ISO
            8601](https://en.wikipedia.org/wiki/ISO_8601).
          format: datetime
          type: string
        date_end:
          description: >-
            Fecha de finalización de la suscripción en formato
            "AAAA-MM-DD’T’HH:MM:SS" de conformidad con la norma [ISO
            8601](https://en.wikipedia.org/wiki/ISO_8601).
          format: datetime
          type: string
        date_last_charge:
          description: >-
            Fecha del último cobro de la suscripción en formato
            "AAAA-MM-DD’T’HH:MM:SS" de conformidad con la norma [ISO
            8601](https://en.wikipedia.org/wiki/ISO_8601).
          format: datetime
          nullable: true
          type: string
        date_next_charge:
          description: >-
            Fecha del próximo cobro de la suscripción en formato
            "AAAA-MM-DD’T’HH:MM:SS" de conformidad con la norma [ISO
            8601](https://en.wikipedia.org/wiki/ISO_8601).
          format: datetime
          nullable: true
          type: string
        id:
          description: ID de suscripción
          type: integer
        plan:
          allOf:
            - $ref: '#/components/schemas/SubscriptionsPlan'
        product:
          allOf:
            - $ref: '#/components/schemas/SubscriptionsProductWithId'
        status:
          description: Estado
          enum:
            - new
            - active
            - canceled
            - non_renewing
            - freeze
          type: string
        user:
          allOf:
            - $ref: '#/components/schemas/User'
      type: object
    SubscriptionsPlan:
      properties:
        billing_retry:
          description: Detalles del reintento de facturación.
          properties:
            value:
              description: Número de reintentos de facturación.
              type: integer
          required:
            - value
          type: object
        charge:
          description: Datos de facturación.
          properties:
            amount:
              description: Importe de facturación.
              format: float
              type: number
            currency:
              description: >-
                Moneda de la compra. Código de moneda de tres letras de
                conformidad con la norma [ISO
                4217](https://en.wikipedia.org/wiki/ISO_4217).
              type: string
            period:
              description: Periodo de facturación.
              properties:
                type:
                  description: Unidades de tiempo. Puede ser `day`, `month` o `lifetime`.
                  enum:
                    - day
                    - month
                    - lifetime
                  type: string
                value:
                  description: >-
                    Número de unidades de tiempo. El valor depende del tipo de
                    parámetro y puede ser: <br>- desde 1 hasta 366, si `type` es
                    `day` <br>- desde 1 hasta 12, si `type` es `month`; <br> 0
                    si `type` es `lifetime`
                  type: integer
              required:
                - value
                - type
              type: object
            prices:
              description: Lista de precios en diferentes monedas.
              items:
                properties:
                  amount:
                    description: Importe de facturación.
                    format: float
                    type: number
                  currency:
                    description: >-
                      Moneda de la compra. Código de moneda de tres letras de
                      conformidad con la norma [ISO
                      4217](https://en.wikipedia.org/wiki/ISO_4217).
                    type: string
                  setup_fee:
                    description: >-
                      En la primera factura, se cobra una tarifa única de
                      configuración.
                    format: float
                    type: number
                required:
                  - amount
                  - currency
                type: object
              type: array
          required:
            - period
          type: object
        description:
          allOf:
            - $ref: '#/components/schemas/LocalizedStringPairs'
            - description: >-
                Descripción del plan. El valor se compone de pares de
                "localization":"plan description".
        expiration:
          description: Datos de finalización de la suscripción.
          properties:
            type:
              description: Unidad de tiempo. Puede ser `day` o `month`.
              enum:
                - day
                - month
              type: string
            value:
              description: Periodo de validez.
              nullable: true
              type: integer
          required:
            - value
            - type
          type: object
        external_id:
          description: "ID externo del plan (32\_caracteres)."
          type: string
        grace_period:
          description: Detalles del periodo de gracia.
          properties:
            type:
              description: Unidad de tiempo. Puede ser `day`.
              enum:
                - day
              type: string
            value:
              description: Número de unidades de tiempo.
              type: integer
          required:
            - value
            - type
          type: object
        group_id:
          description: ID del grupo al que está vinculado el plan.
          nullable: true
          type: string
        id:
          description: ID del plan de suscripción.
          type: integer
        name:
          allOf:
            - $ref: '#/components/schemas/LocalizedStringPairs'
            - description: >-
                Nombre del plan. El valor se compone de pares de
                "localization":"plan name".
        project_id:
          description: ID de proyecto.
          type: integer
        refund_period:
          description: >-
            Periodo de tiempo durante el cual el usuario puede reembolsar el
            pago de un plan de suscripción (en días).
          nullable: true
          type: integer
        status:
          properties:
            value:
              description: Estado del plan de suscripción.
              enum:
                - active
                - disabled
              type: string
          type: object
        tags:
          description: Etiquetas del plan.
          items:
            type: string
          type: array
        trial:
          description: Detalles del periodo de prueba.
          properties:
            type:
              description: Unidad de tiempo. Puede ser `day`.
              enum:
                - day
              type: string
            value:
              description: Número de unidades de tiempo.
              type: integer
          required:
            - value
            - type
          type: object
      type: object
    SubscriptionsPlanRequest:
      properties:
        billing_retry:
          description: Detalles del reintento de facturación.
          properties:
            value:
              description: Número de reintentos de facturación.
              type: integer
          required:
            - value
          type: object
        charge:
          description: Datos de facturación.
          properties:
            amount:
              description: Importe de facturación.
              format: float
              type: number
            currency:
              description: >-
                Moneda de la compra. Código de moneda de tres letras de
                conformidad con la norma [ISO
                4217](https://en.wikipedia.org/wiki/ISO_4217).
              type: string
            period:
              description: Periodo de facturación.
              properties:
                type:
                  description: Unidades de tiempo. Puede ser `day`, `month` o `lifetime`.
                  enum:
                    - day
                    - month
                    - lifetime
                  type: string
                value:
                  description: >-
                    Número de unidades de tiempo. El valor depende del tipo de
                    parámetro y puede ser: <br>- desde 1 hasta 366, si `type` es
                    `day` <br>- desde 1 hasta 12, si `type` es `month`; <br> 0
                    si `type` es `lifetime`
                  type: integer
              required:
                - value
                - type
              type: object
            prices:
              description: Lista de precios en diferentes monedas.
              items:
                properties:
                  amount:
                    description: Importe de facturación.
                    format: float
                    type: number
                  currency:
                    description: >-
                      Moneda de la compra. Código de moneda de tres letras de
                      conformidad con la norma [ISO
                      4217](https://en.wikipedia.org/wiki/ISO_4217).
                    type: string
                  setup_fee:
                    description: >-
                      En la primera factura, se cobra una tarifa única de
                      configuración.
                    format: float
                    type: number
                required:
                  - amount
                  - currency
                type: object
              type: array
          required:
            - period
          type: object
        description:
          allOf:
            - $ref: '#/components/schemas/LocalizedStringPairs'
            - description: >-
                Descripción del plan. El valor se compone de pares de
                "localization":"plan description".
        expiration:
          description: Datos de finalización de la suscripción.
          properties:
            type:
              description: Unidad de tiempo. Puede ser `day` o `month`.
              enum:
                - day
                - month
              type: string
            value:
              description: Periodo de validez.
              nullable: true
              type: integer
          required:
            - value
            - type
          type: object
        external_id:
          description: "ID externo del plan (32\_caracteres)."
          type: string
        grace_period:
          description: Detalles del periodo de gracia.
          properties:
            type:
              description: Unidad de tiempo. Puede ser `day`.
              enum:
                - day
              type: string
            value:
              description: Número de unidades de tiempo.
              type: integer
          required:
            - value
            - type
          type: object
        group_id:
          description: ID del grupo al que está vinculado el plan.
          type: string
        name:
          allOf:
            - $ref: '#/components/schemas/LocalizedStringPairs'
            - description: >-
                Nombre del plan. El valor se compone de pares de
                "localization":"plan name".
        refund_period:
          description: >-
            Periodo de tiempo durante el cual el usuario puede reembolsar el
            pago de un plan de suscripción (en días).
          nullable: true
          type: integer
        status:
          properties:
            value:
              description: Estado del plan de suscripción.
              enum:
                - active
                - disabled
              type: string
          type: object
        tags:
          description: Etiquetas del plan.
          items:
            type: string
          type: array
        trial:
          description: >-
            Detalles del periodo de prueba. Si no se transmite este parámetro,
            se emplean los valores por defecto (0 días).
          properties:
            type:
              description: Unidad de tiempo. Puede ser `day`.
              enum:
                - day
              type: string
            value:
              description: Número de unidades de tiempo.
              type: integer
          required:
            - value
            - type
          type: object
      type: object
    SubscriptionsProduct:
      nullable: true
      properties:
        description:
          allOf:
            - $ref: '#/components/schemas/LocalizedStringPairs'
            - description: Descripciones de artículos localizadas.
        group_id:
          description: ID del grupo al que está vinculado el producto.
          type: string
        name:
          description: Nombre del producto.
          type: string
      type: object
    SubscriptionsProductWithId:
      allOf:
        - properties:
            id:
              description: ID del producto al que está vinculado el plan.
              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 de usuario.
          type: string
        name:
          description: Nombre de usuario
          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: >-
            Puedes transmitir parámetros adicionales en el token en el objeto
            `custom_parameters` para configurar los filtros antifraude. Los
            parámetros recomendados aparecen en la lista desplegable. [Ver
            documentación de Pay
            Station](https://developers.xsolla.com/es/doc/pay-station/features/antifraud/).
          properties:
            active_date:
              description: >-
                Fecha de última visita conforme a la norma [ISO
                8601](https://en.wikipedia.org/wiki/ISO_8601).
              type: string
            additional_verification:
              description: Si el jugador usa o no procedimientos de verificación de cuenta.
              type: boolean
            character_customized:
              description: Si el jugador ha personalizado o no su personaje.
              type: boolean
            chat_activity:
              description: Si el jugador emplea o no la función de chat.
              type: boolean
            completed_tasks:
              description: Número de tareas/objetivos realizados/alcanzados.
              type: integer
            forum_activity:
              description: Si el jugador emplea o no la función del foro.
              type: boolean
            items_used:
              description: Si el jugador usa o no artículos comprados en el juego.
              type: boolean
            karma_points:
              description: Karma del jugador.
              type: integer
            last_change_password_date:
              description: >-
                Fecha del último cambio de contraseña conforme a la norma [ISO
                8601](https://en.wikipedia.org/wiki/ISO_8601).
              type: string
            non_premium_currency:
              description: Importe de la moneda no prémium.
              format: float
              type: integer
            notifications_enabled:
              description: Si el jugador habilitó o no las notificaciones.
              type: boolean
            profile_completed:
              description: Si el jugador añadió o no información adicional a su perfil.
              type: boolean
            profile_image_added:
              description: Si el jugador ha subido o no una imagen de perfil.
              type: boolean
            pvp_activity:
              description: Si el jugador participa o no en combates JvJ.
              type: boolean
            registration_date:
              description: >-
                Fecha de creación de la cuenta conforme a la norma [ISO
                8601](https://en.wikipedia.org/wiki/ISO_8601).
              type: string
            session_time:
              description: >-
                Duración media de sesión conforme a la norma [ISO
                8601](https://en.wikipedia.org/wiki/ISO_8601).
              type: string
            social_networks_added:
              description: Si el jugador ha conectado o no perfiles de redes sociales.
              type: boolean
            total_bans:
              description: Número de veces que el jugador fue expulsado del chat/foro.
              type: integer
            total_characters:
              description: Número de personajes dentro del juego.
              type: integer
            total_clans:
              description: Número de clanes a los que pertenece el jugador.
              type: integer
            total_friends:
              description: Número de amigas/os.
              type: integer
            total_game_events:
              description: >-
                Número de eventos internos del juego en los que participó el
                jugador.
              type: integer
            total_gifts:
              description: >-
                Número de regalos internos del juego que el jugador ha
                enviado/recibido.
              type: integer
            total_hours:
              description: Número total de horas dentro del juego.
              type: integer
            total_inventory_value:
              description: Valor total del inventario (moneda del juego).
              format: float
              type: integer
            total_sum:
              description: Importe total de los pagos.
              format: float
              type: integer
            tutorial_completed:
              description: Si el jugador ha finalizado o no el tutorial del juego.
              type: boolean
            unlocked_achievements:
              description: Número de logros desbloqueados.
              type: integer
            user_level:
              description: Nivel, reputación o rango del jugador.
              type: integer
            win_rate:
              description: Índice de victorias.
              type: integer
          type: object
        purchase:
          description: Objeto que contiene los detalles de la compra.
          properties:
            checkout:
              description: Objeto que contiene los detalles del pago.
              properties:
                amount:
                  description: Importe de la compra.
                  format: float
                  type: integer
                currency:
                  description: >-
                    Moneda de la compra. Código de moneda de tres letras de
                    conformidad con la norma [ISO
                    4217](https://en.wikipedia.org/wiki/ISO_4217).
                  type: string
              type: object
            subscription:
              description: Datos de la suscripción.
              properties:
                available_plans:
                  description: >-
                    Planes de suscripción que deben aparecer en la interfaz de
                    pago.
                  items:
                    type: string
                  type: array
                currency:
                  description: >-
                    Moneda del plan de suscripción que debe usarse en todos los
                    cálculos.
                  type: string
                gift:
                  description: Detalles de la suscripción regalada.
                  properties:
                    anonymous:
                      description: >-
                        Si se oculta o no el nombre de la persona que hace el
                        regalo. Si es `true`, el nombre del remitente se oculta
                        en la notificación por correo electrónico. Por defecto
                        es `false`.
                      type: boolean
                    email:
                      description: Correo electrónico del destinatario.
                      type: string
                    message:
                      description: Mensaje para el destinatario.
                      type: string
                    recipient:
                      description: ID del destinatario.
                      type: string
                    redirect_url:
                      description: >-
                        Introduzca aquí un enlace a una página con información
                        adicional sobre la suscripción regalada o a la página de
                        creación de la cuenta. El destinatario del regalo puede
                        acceder a esta página desde la notificación por correo
                        electrónico del regalo de suscripción.
                      type: string
                  required:
                    - recipient
                    - email
                  type: object
                operation:
                  description: >-
                    El tipo de operación aplicado al plan de suscripción del
                    usuario. Para cambiar el plan de suscripción, transmite el
                    valor `change_plan`. Debes especificar el ID del nuevo plan
                    en el parámetro `purchase.subscription.plan_id`.
                  type: string
                plan_id:
                  description: >-
                    ID externo del plan de suscripción. Puede encontrarse en la
                    sección **Suscripciones > Planes de suscripción** de la
                    Cuenta del editor.
                  type: string
                product_id:
                  description: ID del producto.
                  type: string
                trial_days:
                  description: Periodo de prueba en días.
                  type: integer
              type: object
          type: object
        settings:
          description: Ajustes del proyecto personalizados.
          properties:
            currency:
              description: >-
                Moneda preferida para la compra. Código de moneda de tres letras
                de conformidad con la norma [ISO
                4217](https://en.wikipedia.org/wiki/ISO_4217).
              type: string
            external_id:
              description: >-
                ID de la transacción dentro del juego. Debe ser único para cada
                pago del usuario.
              type: string
            language:
              description: >-
                Idioma de la interfaz. [Código de
                idioma](https://developers.xsolla.com/es/doc/pay-station/features/localization/)
                de dos letras minúsculas.
              type: string
            mode:
              description: >-
                Establécelo en `sandbox` para probar el proceso de pago. En este
                caso, usa *https://sandbox-secure.xsolla.com* para acceder a la
                interfaz de pago de prueba.
              type: string
            payment_method:
              description: ID del método de pago.
              type: integer
            payment_widget:
              description: >-
                Widget de pago. Puede ser `paybycash` o `giftcard`. Si se
                establece el parámetro, al usuario se le redirige al widget
                "Pagar en efectivo" o "Tarjetas regalo", respectivamente.
              enum:
                - paybycash
                - giftcard
              type: string
            project_id:
              description: ID en Xsolla del juego. Se puede encontrar en Cuenta del editor.
              type: integer
            redirect_policy:
              description: Ajustes de las directivas de redireccionamiento.
              properties:
                autoredirect_from_status_page:
                  description: Si redirige automáticamente o no desde la página de estado.
                  type: boolean
                delay:
                  description: >-
                    Retraso (en segundos) tras el cual a un usuario se le
                    redirige automáticamente a la URL de retorno.
                  type: integer
                manual_redirection_action:
                  description: >-
                    Comportamiento de Pay Station que se desencadena cuando el
                    usuario pulsa el botón cerrar o el botón **Volver al
                    juego**. Puede ser `redirect` (por defecto) y `postmessage`.
                    Si se establece como `redirect`, al usuario se le redirige a
                    la URL transmitida en el token o especificada en la Cuenta
                    del editor. Si se establece como `postmessage`, al usuario
                    no se le redirige a otras páginas. Al pulsar en el icono de
                    cerrar, se inicia el envío del evento `close`, y al pulsar
                    en el botón **Volver al juego**, se inicia el evento
                    `return`.
                  enum:
                    - redirect
                    - postmessage
                  type: string
                redirect_button_caption:
                  description: Texto del botón para el redireccionamiento manual.
                  type: string
                redirect_conditions:
                  description: >-
                    Estado del pago por el que se redirige a un usuario a la URL
                    de retorno. Puede ser `none`, `successful`,
                    "successful_or_canсeled" o `any`.
                  enum:
                    - none
                    - successful
                    - successful_or_canceled
                    - any
                  type: string
                status_for_manual_redirection:
                  description: >-
                    Se muestra el estado del pago por el que se redirige a un
                    usuario a la URL de retorno. Puede ser `none`, `successful`,
                    "successful_or_canсeled" o `any`.
                  enum:
                    - none
                    - successful
                    - successful_or_canceled
                    - any
                  type: string
              type: object
            return_url:
              description: >-
                Página a la que se redirige al usuario tras el pago. Los
                parámetros `user_id`, `foreigninvoice`, `invoice_id` y `status`
                se añadirán automáticamente al enlace.
              type: string
            ui:
              description: Ajustes de la interfaz.
              properties:
                components:
                  description: Ajustes del menú.
                  properties:
                    subscriptions:
                      description: Ajustes del submenú de planes de suscripción.
                      properties:
                        hidden:
                          description: Si se muestra o no el submenú.
                          type: boolean
                        order:
                          description: Posición del submenú en el menú.
                          type: integer
                      type: object
                    virtual_currency:
                      description: Ajustes del submenú de moneda virtual.
                      properties:
                        custom_amount:
                          description: >-
                            Si el usuario puede ingresar o no una cantidad
                            arbitraria de moneda virtual en la interfaz de pago.
                          type: boolean
                        hidden:
                          description: Si se muestra o no el submenú.
                          type: boolean
                        order:
                          description: Posición del submenú en el menú.
                          type: integer
                      type: object
                    virtual_items:
                      description: Ajustes del submenú de artículos virtuales.
                      properties:
                        hidden:
                          description: Si se muestra o no el submenú.
                          type: boolean
                        order:
                          description: Posición del submenú en el menú.
                          type: integer
                        selected_group:
                          description: >-
                            Grupo que se mostrará tras abrir la pestaña de
                            artículos virtuales.
                          type: string
                        selected_item:
                          description: >-
                            Artículo que se mostrará tras abrir la pestaña de
                            artículos virtuales (código de artículo —SKU—).
                          type: string
                      type: object
                  type: object
                desktop:
                  description: Ajustes de la interfaz para la versión de escritorio.
                  properties:
                    header:
                      description: Ajustes del encabezado.
                      properties:
                        close_button:
                          description: >-
                            Si se muestra o no un botón "Cerrar" en el
                            escritorio de Pay Station. El botón cierra Pay
                            Station y redirige al usuario a la URL definida en
                            el parámetro `settings.return_url`. Por defecto es
                            `false`.
                          type: boolean
                        is_visible:
                          description: >-
                            Si se muestra o no el encabezado en la interfaz de
                            pago.
                          type: boolean
                        type:
                          description: >-
                            Cómo mostrar el encabezado. Puede ser `compact`
                            (oculta el nombre del proyecto y el ID del usuario)
                            o `normal` (por defecto).
                          enum:
                            - compact
                            - normal
                          type: string
                        visible_logo:
                          description: >-
                            Si es `true`, el encabezado mostrará tu logotipo
                            (primero facilita la imagen a tu Gestor de éxito del
                            cliente).
                          type: boolean
                        visible_name:
                          description: >-
                            Si se muestra o no el nombre del proyecto en el
                            encabezado.
                          type: boolean
                        visible_purchase:
                          description: >-
                            Si se muestra o no la descripción de la compra
                            (`purchase.description.value`) en el encabezado. Por
                            defecto es `true`.
                          type: boolean
                      type: object
                    subscription_list:
                      description: Configuración de la lista de planes de suscripción.
                      properties:
                        description:
                          description: >-
                            Cualquier texto que se muestre encima de la lista de
                            planes de suscripción disponibles en la interfaz de
                            pago.
                          type: string
                        display_local_price:
                          description: >-
                            Si es `true`, y si la moneda local del usuario
                            difiere de la establecida para el plan de
                            suscripción, el usuario podrá ver ambos precios: uno
                            en la moneda local y otro en la moneda básica.
                          type: boolean
                        layout:
                          description: >-
                            Plantilla de lista. Puede ser `list` (por defecto) o
                            `grid`.
                          enum:
                            - list
                            - grid
                          type: string
                      type: object
                    virtual_currency_list:
                      description: Configuración de la lista de monedas virtuales.
                      properties:
                        button_with_price:
                          description: >-
                            Si es `true`, el precio aparecerá en el botón. Si es
                            `false`, el precio aparecerá a la izquierda del
                            botón. Por defecto es `false`.
                          type: boolean
                        description:
                          description: >-
                            Cualquier texto que se vaya a mostrar encima de la
                            lista de monedas virtuales.
                          type: string
                      type: object
                    virtual_item_list:
                      description: Configuración de la lista de artículos virtuales.
                      properties:
                        button_with_price:
                          description: >-
                            Si es `true`, el precio aparecerá en el botón. Si es
                            `false`, el precio aparecerá a la izquierda del
                            botón. Por defecto es `false`.
                          type: boolean
                        layout:
                          description: >-
                            Plantilla de lista. Puede ser `list` (por defecto) o
                            `grid`.
                          enum:
                            - list
                            - grid
                          type: string
                        view:
                          description: >-
                            Mostrar grupos de artículos virtuales como un menú
                            vertical/horizontal. Puede ser
                            `horizontal_navigation` o `vertical_navigation` (por
                            defecto).
                          enum:
                            - horizontal_navigation
                            - vertical_navigation
                          type: string
                      type: object
                  type: object
                header:
                  properties:
                    visible_virtual_currency_balance:
                      description: >-
                        Si este elemento puede ocultarse o no en la interfaz de
                        pago. `true` por defecto.
                      type: boolean
                  type: object
                is_prevent_external_link_open:
                  description: >-
                    Si se deshabilita o no el redireccionamiento de enlaces a un
                    recurso externo. `true` por defecto. Al pulsar en un enlace
                    externo, el evento `external-link-open` se envía mediante el
                    mecanismo `postMessage`. La dirección del enlace redirigido
                    se transmite en el parámetro `url`.
                  type: boolean
                license_url:
                  description: Enlace al EULA (contrato de licencia de usuario final).
                  type: string
                mobile:
                  properties:
                    footer:
                      properties:
                        is_visible:
                          description: >-
                            Si se oculta o no el pie de página en la versión
                            móvil de la interfaz de pago.
                          type: boolean
                      type: object
                    header:
                      properties:
                        close_button:
                          description: >-
                            Si se muestra o no un botón "Cerrar" en la versión
                            móvil de Pay Station. El botón cierra Pay Station y
                            redirige al usuario a la URL definida en el
                            parámetro `settings.return_url`. Por defecto es
                            `false`.
                          type: boolean
                      type: object
                    mode:
                      description: >-
                        Un usuario solamente puede pagar usando sus métodos de
                        pago guardados. Pueden ser `saved_accounts`.
                      enum:
                        - saved_accounts
                      type: string
                  type: object
                mode:
                  description: >-
                    Modo de interfaz en Pay Station. Solo puede ser
                    `user_account`. El encabezado sólo contiene el menú de
                    navegación de la cuenta, y el usuario no puede seleccionar
                    un producto ni hacer un pago. Este modo únicamente está
                    disponible en la versión de escritorio.
                  type: string
                size:
                  description: "Tamaño de la interfaz de pago. Puede ser:\n - [pequeño](https://livedemo.xsolla.com/developers/small/): el menor tamaño posible de la interfaz de pago. Utiliza este valor cuando el tamaño de la ventana esté muy limitado (dimensiones: 620\_x\_630)\n - [mediano](https://livedemo.xsolla.com/developers/medium/): tamaño recomendado. Utiliza este valor para mostrar la interfaz de pago en una caja de luz (dimensiones: 740\_x\_760)\n - [grande](https://livedemo.xsolla.com/developers/large/): el tamaño óptimo para mostrar la interfaz de pago en una nueva ventana o pestaña (dimensiones: 820\_x\_840)"
                  enum:
                    - small
                    - medium
                    - large
                  type: string
                theme:
                  description: >-
                    Tema de la interfaz de pago. Puede ser `default` o
                    `default_dark`.
                  enum:
                    - default
                    - default_dark
                  type: string
                user_account:
                  description: Datos de la cuenta del usuario.
                  properties:
                    history:
                      allOf:
                        - description: Submenú de **Historial** .
                        - properties:
                            enable:
                              description: Mostrar o no el submenú. `false` por defecto.
                              type: boolean
                            order:
                              description: Posición del submenú en el menú.
                              type: integer
                          type: object
                    info:
                      allOf:
                        - description: Página **Mi cuenta**.
                        - properties:
                            enable:
                              description: Mostrar o no el submenú. `false` por defecto.
                              type: boolean
                            order:
                              description: Posición del submenú en el menú.
                              type: integer
                          type: object
                    payment_accounts:
                      allOf:
                        - description: Submenú **Mis cuentas de pago**.
                        - properties:
                            enable:
                              description: Mostrar o no el submenú. `false` por defecto.
                              type: boolean
                            order:
                              description: Posición del submenú en el menú.
                              type: integer
                          type: object
                    subscriptions:
                      allOf:
                        - description: Submenú **Administrar suscripciones**.
                        - properties:
                            enable:
                              description: Mostrar o no el submenú. `false` por defecto.
                              type: boolean
                            order:
                              description: Posición del submenú en el menú.
                              type: integer
                          type: object
                  type: object
                version:
                  description: >-
                    Tipo de dispositivo. Puede ser `desktop` (por defecto) o
                    `mobile`.
                  enum:
                    - desktop
                    - mobile
                  type: string
              type: object
          required:
            - project_id
          type: object
        user:
          description: Datos del usuario.
          properties:
            age:
              description: Edad del usuario.
              type: integer
            attributes:
              description: >-
                Atributos de usuario para filtrar la lista de artículos,
                representados como un conjunto JSON válido de pares clave-valor.
              type: object
            country:
              properties:
                allow_modify:
                  description: >-
                    Si el usuario puede cambiar o no el país en la interfaz de
                    pago. Si se transmite `country.value` en el token, el valor
                    es `false` por defecto.
                  type: boolean
                value:
                  description: >-
                    Código de país de dos letras mayúsculas de conformidad con
                    la norma [ISO 3166-1
                    alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
                  type: string
              type: object
            email:
              description: >-
                El objeto `user.email` es un componente fundamental del
                desarrollo de los modelos antifraude y contribuye a aumentar los
                índices de aceptación. Es un requisito para Xsolla y para los
                sistemas de pago. Si no se transmite el parámetro, el campo
                obligatorio para introducir el correo electrónico aparece en la
                página de pago. Un usuario recibe un recibo de compra en su
                correo electrónico transmitido en el parámetro o insertado en la
                página de pago.
              properties:
                value:
                  description: >-
                    Correo electrónico del usuario. Debe ser válido conforme al
                    protocolo [RFC
                    822](https://www.w3.org/Protocols/rfc822/#z8).
                  type: string
              required:
                - value
              type: object
            id:
              properties:
                value:
                  description: ID de usuario.
                  type: string
              required:
                - value
              type: object
            is_legal:
              description: Si el usuario es una entidad jurídica.
              type: boolean
            legal:
              allOf:
                - description: >-
                    Objeto con datos de la entidad jurídica. El objeto y todos
                    sus parámetros son obligatorios si `user.is_legal` es
                    `true`.
                - description: Objeto con datos de la entidad jurídica.
                  properties:
                    address:
                      description: Dirección legal completa.
                      type: string
                    country:
                      description: >-
                        País de constitución. Código de país de dos letras
                        mayúsculas de conformidad con la norma [ISO 3166-1
                        alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
                      type: string
                    name:
                      description: Nombre legal completo.
                      type: string
                    vat_id:
                      description: Identificador del contribuyente individual.
                      type: string
                  type: object
            name:
              properties:
                value:
                  description: Nombre de pantalla del usuario.
                  type: string
              type: object
            phone:
              properties:
                value:
                  description: Número de teléfono del usuario.
                  type: string
              type: object
            public_id:
              properties:
                value:
                  description: "Parámetro que identifica de forma unívoca al usuario y que este conoce (correo electrónico, nombre de usuario, etc.). Permite al usuario hacer compras fuera de la tienda del juego (p.\_ej., a través de quioscos de efectivo)."
                  type: string
              type: object
            steam_id:
              properties:
                value:
                  description: ID de Steam.
                  type: string
              type: object
            tracking_id:
              properties:
                value:
                  description: ID único de seguimiento (empleado en campañas de marketing).
                  type: string
              type: object
            utm:
              description: Atributos de tráfico.
              properties:
                utm_campaign:
                  description: Título de la campaña, transliterado o traducido al inglés.
                  type: string
                utm_content:
                  description: Contenido de campaña.
                  type: string
                utm_medium:
                  description: >-
                    Canal de tráfico (anuncios contextuales, anuncios en medios
                    de comunicación, listas de correo electrónico, etc.).
                  type: string
                utm_source:
                  description: Fuente de tráfico.
                  type: string
                utm_term:
                  description: >-
                    Palabras clave de la campaña. Si están establecidas, las
                    estadísticas dependerán de las palabras clave utilizadas
                    para la segmentación de los anuncios, en vez de en consultas
                    de búsqueda específicas. En Google Analytics, el `utm_term`
                    especificado forma parte del informe de términos de búsqueda
                    general.
                  type: string
              type: object
          required:
            - id
          type: object
      type: object
  securitySchemes:
    basicAuth:
      description: >-
        La API de Xsolla emplea autenticación básica de acceso. Todas las
        solicitudes a la API deben contener el encabezado `Authorization: Basic
        <your_authorization_basic_key>`, en el cual
        `<your_authorization_basic_key>` es el par `merchant_id:api_key`
        codificado según el estándar Base64.

         Accede a [Cuenta del editor](https://publisher.xsolla.com/) para encontrar estos parámetros:<ul><li>`merchant_id` se muestra:<ul><li>En la sección <b>Configuración de la empresa > Empresa</b>.</li><li>En la URL de la barra de direcciones del navegador en cualquier página de la Cuenta del editor. La URL tiene el siguiente formato: `https://publisher.xsolla.com/<merchant_id>`.</li></ul></li><li>`api_key` se muestra en la Cuenta del editor solo una vez cuando se crea y debe almacenarse en su servidor. Puedes crear una nueva clave en la siguiente sección:<ul><li><b>Configuración de la empresa > Claves de API</b>.</li><li><b>Configuración del proyecto > Claves de API</b>.</li></ul></li></ul><br>
         Para obtener más información sobre cómo trabajar con claves de API, consulta la [Referencia de la API](https://developers.xsolla.com/es/api/getting-started/#api_keys_overview).
      scheme: basic
      type: http
    subscriptionsManagementJwtAuth:
      scheme: bearer
      type: http
info:
  description: >-
    # Información general


    * **Versión:** 2.0

    * **Servidores**:  `https://api.xsolla.com/merchant/v2/`


    Esta referencia de API describe los extremos para administrar suscripciones,
    cupones y promociones.

    Para obtener más información sobre las suscripciones, consulta la página
    [guía del producto](https://developers.xsolla.com/es/doc/subscriptions) y el
    [glosario](https://developers.xsolla.com/es/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: |-
        Crear una nueva campaña de cupones.
        <div class="notice">
          <p><strong>Aviso</strong></p><p>Esta llamada API no contiene el parámetro de ruta <code>project_id</code>, por lo que tiene que usar la clave de API que sea válida en todos los proyectos de la empresa para establecer la autorización.</p>
        </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: Crear campaña
      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: |-
        Agregue un código de cupón a una campaña de cupones.
        <div class="notice">
          <p><strong>Aviso</strong></p><p>Esta llamada API no contiene el parámetro de ruta <code>project_id</code>, por lo que tiene que usar la clave de API que sea válida en todos los proyectos de la empresa para establecer la autorización.</p>
        </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: Código de cupón.
                  example: 34bryrb3
                  type: string
              required:
                - coupon_code
              type: object
        required: true
      responses:
        '204':
          description: No content (Sin contenido).
      security:
        - basicAuth: []
      summary: Añadir cupón a la campaña
      tags:
        - coupons
      x-admin: true
      x-server: true
    servers:
      - url: https://api.xsolla.com/merchant/v2
  /merchants/{merchant_id}/promotions:
    get:
      description: |-
        Listado de todas las promociones.
        <div class="notice">
          <p><strong>Aviso</strong></p><p>Esta llamada API no contiene el parámetro de ruta <code>project_id</code>, por lo que tiene que usar la clave de API que sea válida en todos los proyectos de la empresa para establecer la autorización.</p>
        </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: ACEPTAR.
      security:
        - basicAuth: []
      summary: Obtener lista de promociones
      tags:
        - promotions
      x-admin: true
      x-server: true
    post:
      description: |-
        Crear una nueva campaña de cupones.
        <div class="notice">
          <p><strong>Aviso</strong></p><p>Esta llamada API no contiene el parámetro de ruta <code>project_id</code>, por lo que tiene que usar la clave de API que sea válida en todos los proyectos de la empresa para establecer la autorización.</p>
        </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 promoción.
                    type: integer
                type: object
          description: Created.
      security:
        - basicAuth: []
      summary: Crear promoción
      tags:
        - promotions
      x-admin: true
      x-server: true
    servers:
      - url: https://api.xsolla.com/merchant/v2
  /merchants/{merchant_id}/promotions/{promotion_id}:
    delete:
      description: >-
        Elimina una promoción. Solo puedes eliminar promociones con `enabled` =
        `false`. 

        <div class="notice">
          <p><strong>Aviso</strong></p><p>Esta llamada API no contiene el parámetro de ruta <code>project_id</code>, por lo que tiene que usar la clave de API que sea válida en todos los proyectos de la empresa para establecer la autorización.</p>
        </div>
      operationId: delete-promotion
      parameters:
        - $ref: '#/components/parameters/merchant-id-path-param'
        - $ref: '#/components/parameters/promotion-id-path-param'
      responses:
        '204':
          description: No content (Sin contenido).
      security:
        - basicAuth: []
      summary: Eliminar promoción
      tags:
        - promotions
      x-admin: true
      x-server: true
    get:
      description: |-
        Recupera una promoción. 
        <div class="notice">
          <p><strong>Aviso</strong></p><p>Esta llamada API no contiene el parámetro de ruta <code>project_id</code>, por lo que tiene que usar la clave de API que sea válida en todos los proyectos de la empresa para establecer la autorización.</p>
        </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: ACEPTAR.
      security:
        - basicAuth: []
      summary: Obtener promoción
      tags:
        - promotions
      x-admin: true
      x-server: true
    put:
      description: >-
        Actualiza una promoción. Si la promoción es de solo lectura (`read_only`
        = `true`), no se le permite cambiar el parámetro `project_id`.

        <div class="notice">
          <p><strong>Aviso</strong></p><p>Esta llamada API no contiene el parámetro de ruta <code>project_id</code>, por lo que tiene que usar la clave de API que sea válida en todos los proyectos de la empresa para establecer la autorización.</p>
        </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 (Sin contenido).
      security:
        - basicAuth: []
      summary: Actualizar promoción
      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: |-
        Adjunte una campaña de cupones a una promoción específica. 
        <div class="notice">
          <p><strong>Aviso</strong></p><p>Esta llamada API no contiene el parámetro de ruta <code>project_id</code>, por lo que tiene que usar la clave de API que sea válida en todos los proyectos de la empresa para establecer la autorización.</p>
        </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: Matriz de ID de campañas.
                  example:
                    - 9135
                  items:
                    type: integer
                  type: array
              required:
                - campaigns
              type: object
        required: true
      responses:
        '204':
          description: No content (Sin contenido).
      security:
        - basicAuth: []
      summary: Adjuntar campaña a la promoción
      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: >-
        Obtiene los sistemas de pago admitidos para una promoción. Si la lista
        está vacía, la promoción se aplicará a todos los sistemas de pago.  

        <div class="notice">
          <p><strong>Aviso</strong></p><p>Esta llamada API no contiene el parámetro de ruta <code>project_id</code>, por lo que tiene que usar la clave de API que sea válida en todos los proyectos de la empresa para establecer la autorización.</p>
        </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: ACEPTAR.
      security:
        - basicAuth: []
      summary: Obtener los sistemas de pago
      tags:
        - promotions
      x-admin: true
      x-server: true
    put:
      description: >-
        Establece los sistemas de pago admitidos para una promoción. Si la lista
        está vacía, la promoción se aplicará a todos los sistemas de pago. Si la
        promoción es de solo lectura (`read_only` = `true`), no puede llamar a
        este método. 

        <div class="notice">
          <p><strong>Aviso</strong></p><p> Esta llamada API no contiene el parámetro de ruta <code>project_id</code>, por lo que tiene que usar la clave de API que sea válida en todos los proyectos de la empresa para establecer la autorización.</p>
        </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 (Sin contenido).
      security:
        - basicAuth: []
      summary: Establecer sistemas de pago
      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: |-
        Obtiene rangos de fecha/hora cuando una promoción es válida.
        <div class="notice">
          <p><strong>Aviso</strong></p><p> Esta llamada API no contiene el parámetro de ruta<code>project_id</code>, por lo que tiene que usar la clave de API que sea válida en todos los proyectos de la empresa para establecer la autorización.</p>
        </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: ACEPTAR.
      security:
        - basicAuth: []
      summary: Obtener periodos de validez
      tags:
        - promotions
      x-admin: true
      x-server: true
    put:
      description: >-
        Establece los rangos de fecha y hora en los que una promoción es válida.
        Si la promoción es de solo lectura (`read_only` = `true`), no puede
        editar los períodos existentes, pero puede agregar otros nuevos.

        <div class="notice">
          <p><strong>Aviso</strong></p><p> Esta llamada API no contiene el parámetro de ruta<code>project_id</code>, por lo que tiene que usar la clave de API que sea válida en todos los proyectos de la empresa para establecer la autorización.</p>
        </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 (Sin contenido).
      security:
        - basicAuth: []
      summary: Establecer periodos de validez
      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: >-
        Debes revisar una promoción antes de activarla. Este método devuelve la
        lista de errores, si los hay.

        <div class="notice">
          <p><strong>Aviso</strong></p><p> Esta llamada API no contiene el parámetro de ruta <code>project_id</code>, por lo que tiene que usar la clave de API que sea válida en todos los proyectos de la empresa para establecer la autorización.</p>
        </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: ACEPTAR.
      security:
        - basicAuth: []
      summary: Revisar promoción
      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: |-
        Obtiene la lista de recompensas asociadas con una promoción. 
        <div class="notice">
          <p><strong>Aviso</strong></p><p> Esta llamada API no contiene el parámetro de ruta<code>project_id</code>, por lo que tiene que usar la clave de API que sea válida en todos los proyectos de la empresa para establecer la autorización.</p>
        </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: ACEPTAR.
      security:
        - basicAuth: []
      summary: Obtener recompensas
      tags:
        - promotions
      x-admin: true
      x-server: true
    put:
      description: >-
        Establece las recompensas de una promoción. Si la promoción es de solo
        lectura (`read_only` = `true`), no puedes actualizar las recompensas. 

        <div class="notice">
          <p><strong>Aviso</strong></p><p> Esta llamada API no contiene el parámetro de ruta <code>project_id</code>, por lo que tiene que usar la clave de API que sea válida en todos los proyectos de la empresa para establecer la autorización.</p>
        </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 (Sin contenido).
      security:
        - basicAuth: []
      summary: Establecer recompensas
      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: |-
        Obtiene información sobre el tema de una promoción. 
        <div class="notice">
          <p><strong>Aviso</strong></p><p> Esta llamada API no contiene el parámetro de ruta<code>project_id</code>, por lo que tiene que usar la clave de API que sea válida en todos los proyectos de la empresa para establecer la autorización.</p>
        </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: ACEPTAR.
      security:
        - basicAuth: []
      summary: Obtener asunto
      tags:
        - promotions
      x-admin: true
      x-server: true
    put:
      description: >-
        Establece el asunto de una promoción. Si la promoción es de solo lectura
        (`read_only` = `true`), no se puede actualizar el asunto. El asunto
        puede tomar los siguientes valores: `purchase`, o `items`, o
        `packages`. 

        <div class="notice">
          <p><strong>Aviso</strong></p><p> Esta llamada API no contiene el parámetro de ruta <code>project_id</code>, por lo que tiene que usar la clave de API que sea válida en todos los proyectos de la empresa para establecer la autorización.</p>
        </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 (Sin contenido).
      security:
        - basicAuth: []
      summary: Establecer asunto
      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: >-
        Alterna el estado de una promoción de `enabled` a `disabled` y
        viceversa. 

        <div class="notice">
          <p><strong>Aviso</strong></p><p> Esta llamada API no contiene el parámetro de ruta <code>project_id</code>, por lo que tiene que usar la clave de API que sea válida en todos los proyectos de la empresa para establecer la autorización.</p>
        </div>
      operationId: toggle-promotion
      parameters:
        - $ref: '#/components/parameters/merchant-id-path-param'
        - $ref: '#/components/parameters/promotion-id-path-param'
      responses:
        '204':
          description: No content (Sin contenido).
      security:
        - basicAuth: []
      summary: Cambiar promoción
      tags:
        - promotions
      x-admin: true
      x-server: true
    servers:
      - url: https://api.xsolla.com/merchant/v2
  /merchants/{merchant_id}/subscriptions:
    get:
      description: >-
        Enumera todas las suscripciones recurrentes.<div
        class="notice"><strong>Aviso</strong><br><br> Este método API no se
        puede utilizar con una carga elevada. La carga máxima es de 20
        solicitudes por minuto.</div> 

        <div class="notice">
          <p><strong>Aviso</strong></p><p> Esta llamada API no contiene el parámetro de ruta <code>project_id</code>, por lo que tiene que usar la clave de API que sea válida en todos los proyectos de la empresa para establecer la autorización.</p>
        </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: ACEPTAR.
      security:
        - basicAuth: []
      summary: Obtener suscripciones
      tags:
        - subscriptions
      x-admin: true
      x-server: true
    servers:
      - url: https://api.xsolla.com/merchant/v2
  /merchants/{merchant_id}/token:
    post:
      description: >-
        Puede crear un token con parámetros de usuario arbitrarios. Envíe estos
        parámetros al obtener el token y recíbalos después de un pago exitoso.
        Un token solo puede contener parámetros descritos en este documento o
        predefinidos por usted.


        Si algún parámetro se envía en el formato incorrecto o tiene el tipo
        incorrecto, no se emitirá ningún token. Recibirá un código HTTP 422 con
        la descripción del error en el cuerpo JSON. En `extended_message`
        recibirá información sobre qué parámetros exactos se enviaron
        incorrectamente. 

        <div class="notice">
          <p><strong>Aviso</strong></p><p> Esta llamada API no contiene el parámetro de ruta <code>project_id</code>, por lo que tiene que usar la clave de API que sea válida en todos los proyectos de la empresa para establecer la autorización.</p>
        </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/es/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: >-
                          El objeto contiene nombres de parámetros con
                          descripciones de errores.
                        type: object
                    type: object
                  http_status_code:
                    type: integer
                  message:
                    type: string
                  request_id:
                    type: string
                type: object
          description: Entidad no procesable.
      security:
        - basicAuth: []
      summary: Crear token
      tags:
        - token
      x-server: true
    servers:
      - url: https://api.xsolla.com/merchant/v2
  /projects/{project_id}/coupons/{code}/details:
    get:
      description: Obtén los detalles del cupón mediante su código.
      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: ACEPTAR.
      security:
        - basicAuth: []
      summary: Obtener cupón
      tags:
        - coupons
      x-admin: true
      x-server: true
    servers:
      - url: https://api.xsolla.com/merchant/v2
  /projects/{project_id}/coupons/{code}/redeem:
    post:
      description: Canjear un cupón mediante su código.
      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 de usuario.
                  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: ACEPTAR.
      security:
        - basicAuth: []
      summary: Canjear cupón
      tags:
        - coupons
      x-admin: true
      x-server: true
    servers:
      - url: https://api.xsolla.com/merchant/v2
  /projects/{project_id}/subscriptions/currencies:
    get:
      description: Muestra todas las monedas de suscripción admitidas.
      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: ACEPTAR.
      security:
        - basicAuth: []
      summary: Obtener monedas
      tags:
        - payments
      x-admin: true
      x-server: true
    servers:
      - url: https://api.xsolla.com/merchant/v2
  /projects/{project_id}/subscriptions/payments:
    get:
      description: Muestra todos los pagos de suscripción.
      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: ACEPTAR.
      security:
        - basicAuth: []
      summary: Obtener pagos
      tags:
        - payments
      x-admin: true
      x-server: true
    servers:
      - url: https://api.xsolla.com/merchant/v2
  /projects/{project_id}/subscriptions/plans:
    get:
      description: Muestra todos los planes de suscripción.
      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: >-
                            Nombre del plan en el idioma por defecto (EN),
                            replica el valor de name.en.
                          type: string
                      type: object
                type: array
          description: ACEPTAR.
      security:
        - basicAuth: []
      summary: Obtener planes
      tags:
        - plans
      x-admin: true
      x-server: true
    post:
      description: Crea un plan de suscripción.
      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: Creado.
      security:
        - basicAuth: []
      summary: Crear 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: Desactiva un plan de suscripción.
      operationId: disable-plan
      parameters:
        - $ref: '#/components/parameters/project-id-path-param'
        - $ref: '#/components/parameters/plan-id-path-param'
      responses:
        '204':
          description: No content (Sin contenido).
      security:
        - basicAuth: []
      summary: Desactivar plan
      tags:
        - plans
      x-admin: true
      x-server: true
    patch:
      description: Activa un plan de suscripción.
      operationId: enable-plan
      parameters:
        - $ref: '#/components/parameters/project-id-path-param'
        - $ref: '#/components/parameters/plan-id-path-param'
      responses:
        '204':
          description: No content (Sin contenido).
      security:
        - basicAuth: []
      summary: Activar plan
      tags:
        - plans
      x-admin: true
      x-server: true
    put:
      description: Actualiza los parámetros del plan de suscripción.
      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: ACEPTAR.
      security:
        - basicAuth: []
      summary: Actualizar 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: Elimina un plan de suscripción.
      operationId: delete-plan
      parameters:
        - $ref: '#/components/parameters/project-id-path-param'
        - $ref: '#/components/parameters/plan-id-path-param'
      responses:
        '204':
          description: No content (Sin contenido).
      security:
        - basicAuth: []
      summary: Eliminar plan
      tags:
        - plans
      x-admin: true
      x-server: true
    servers:
      - url: https://api.xsolla.com/merchant/v2
  /projects/{project_id}/subscriptions/products:
    get:
      description: Muestra todos los productos basados en suscripción.
      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: ACEPTAR.
      security:
        - basicAuth: []
      summary: Obtener productos
      tags:
        - products
      x-admin: true
      x-server: true
    post:
      description: Crea un producto basado en suscripción.
      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: Crear producto
      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: Elimina un producto basado en suscripción.
      operationId: delete-product
      parameters:
        - $ref: '#/components/parameters/project-id-path-param'
        - $ref: '#/components/parameters/product-id-path-param'
      responses:
        '204':
          description: No content (Sin contenido).
      security:
        - basicAuth: []
      summary: Eliminar producto
      tags:
        - products
      x-admin: true
      x-server: true
    put:
      description: Actualiza un producto basado en suscripción.
      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: ACEPTAR.
      security:
        - basicAuth: []
      summary: Actualizar producto
      tags:
        - products
      x-admin: true
      x-server: true
    servers:
      - url: https://api.xsolla.com/merchant/v2
  /projects/{project_id}/subscriptions/{subscription_id}:
    get:
      description: Obtiene detalles de una suscripción específica mediante un 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: ACEPTAR.
      security:
        - basicAuth: []
      summary: Obtener suscripción
      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: Muestra todos los pagos hechos por un usuario específico.
      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: ACEPTAR.
      security:
        - basicAuth: []
      summary: Obtener pagos del usuario
      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: >-
        Actualiza una suscripción al cambiar su estado (`active`, `canceled` o
        `non_renewing`) o al aplazar la próxima fecha de facturación.
      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: ACEPTAR.
      security:
        - basicAuth: []
      summary: Actualizar suscripción
      tags:
        - subscriptions
      x-admin: true
      x-server: true
    servers:
      - url: https://api.xsolla.com/merchant/v2
tags:
  - name: token
    x-displayName: Token
  - name: plans
    x-displayName: Planes
  - name: products
    x-displayName: Productos
  - name: subscriptions
    x-displayName: Subscription management
  - name: payments
    x-displayName: Pagos
  - name: promotions
    x-displayName: Promociones
  - name: coupons
    x-displayName: Cupones
  - 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
