components:
  parameters:
    array-group-id-query-param:
      description: 요금제가 연결된 그룹 ID 목록입니다.
      in: query
      name: group_id[]
      schema:
        items:
          type: string
        type: array
    array-plan-id-query-param:
      description: 정기 결제 요금제 ID 목록입니다.
      in: query
      name: plan_id[]
      schema:
        items:
          type: integer
        type: array
    array-product-id-query-param:
      description: 요금제가 연결된 제품 ID 목록입니다.
      in: query
      name: product_id[]
      schema:
        items:
          type: integer
        type: array
    array-project-id-query-param:
      description: 프로젝트 ID 목록입니다.
      in: query
      name: project_id[]
      schema:
        items:
          type: integer
        type: array
    campaign-id-path-param:
      description: Campaign ID.
      in: path
      name: campaign_id
      required: true
      schema:
        type: integer
    code-path-param:
      description: Coupon code.
      in: path
      name: code
      required: true
      schema:
        type: string
    datetime-from-query-param:
      description: >-
        Sample date. Use this to find subscriptions created later than the
        request.
      in: query
      name: datetime_from
      schema:
        format: datetime
        type: string
    datetime-from-query-param2:
      description: 날짜 범위의 시작입니다.
      in: query
      name: datetime_from
      schema:
        format: datetime
        type: string
    datetime-to-query-param:
      description: >-
        Sample date. Use this to find subscriptions created later than the
        request.
      in: query
      name: datetime_to
      schema:
        format: datetime
        type: string
    datetime-to-query-param2:
      description: 날짜 범위의 끝입니다.
      in: query
      name: datetime_to
      schema:
        format: datetime
        type: string
    external-id-query-param:
      description: Plan external ID (32 characters).
      in: query
      name: external_id
      schema:
        type: string
    group-id-query-param:
      description: 이러한 요금제가 연결된 그룹의 ID입니다.
      in: query
      name: group_id
      schema:
        type: string
    limit-query-param:
      description: Limit for the number of elements on the page.
      in: query
      name: limit
      required: true
      schema:
        type: integer
    merchant-id-path-param:
      description: 판매자 ID입니다.
      in: path
      name: merchant_id
      required: true
      schema:
        type: integer
    offset-query-param:
      description: >-
        Number of the element from which the list is generated (the count starts
        from 0).
      in: query
      name: offset
      schema:
        type: integer
    plan-id-path-param:
      description: 요금제 ID입니다.
      in: path
      name: plan_id
      required: true
      schema:
        type: integer
    plan-id-query-param:
      description: 정기 결제 요금제 ID입니다.
      in: query
      name: plan_id
      schema:
        type: integer
    product-id-path-param:
      description: Product ID the plans are linked to.
      in: path
      name: product_id
      required: true
      schema:
        type: integer
    product-id-query-param:
      description: Product ID the plans are linked to.
      in: query
      name: product_id
      schema:
        type: integer
    project-id-path-param:
      description: Project ID.
      in: path
      name: project_id
      required: true
      schema:
        type: integer
    promotion-id-path-param:
      description: 프로모션 ID입니다.
      in: path
      name: promotion_id
      required: true
      schema:
        type: integer
    query-query-param:
      description: 쿼리 검색(name.en(기본 로케일) 검색)입니다.
      in: query
      name: query
      schema:
        type: string
    status-id-query-param:
      description: 트랜잭션 상태입니다.
      in: query
      name: status
      schema:
        enum:
          - done
          - fail
        type: string
        x-enumDescriptions:
          done: 결제가 성공적으로 처리되었습니다.
          fail: 결제가 성공적으로 처리되지 않았거나 환불이 이루어지지 않았습니다.
    status-query-param-array:
      description: Status.
      in: query
      name: status[]
      schema:
        items:
          enum:
            - active
            - canceled
            - non_renewing
          type: string
        type: array
    subscription-id-path-param:
      description: Subscription ID.
      in: path
      name: subscription_id
      required: true
      schema:
        type: integer
    subscription-id-query-param:
      description: Subscription ID.
      in: query
      name: subscription_id
      schema:
        type: integer
    user-id-path-param:
      description: User ID.
      in: path
      name: user_id
      required: true
      schema:
        type: string
    user-id-query-param:
      description: User ID.
      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: Campaign name.
          type: string
        campaign_names:
          allOf:
            - $ref: '#/components/schemas/LocalizedStringPairs'
            - description: Object containing localized campaign names.
        campaign_redeems_count_for_user:
          description: 캠페인 내 사용자당 최대 쿠폰 사용 횟수입니다. `null`이 전달되면 사용 횟수가 무제한으로 설정됩니다.
          type: integer
        expiration_date:
          description: >-
            [ISO 8601 ](https://en.wikipedia.org/wiki/ISO_8601)에 따라
            `YYYY-MM-DD’T’HH:MM:SS` 형식으로 되어 있는 캠페인 만료일입니다.
          format: datetime
          type: string
        project_id:
          description: Project ID.
          type: integer
        redeems_count:
          description: 최대 쿠폰 사용 횟수입니다. `null`이 전달되면 사용 횟수가 무제한으로 설정됩니다.
          type: integer
        redeems_count_for_user:
          description: 사용자당 최대 쿠폰 사용 횟수입니다. `null`이 전달되면 사용 횟수가 무제한으로 설정됩니다.
          type: integer
        subscription_coupon:
          description: Object containing subscription parameters in a reward.
          properties:
            plan_id:
              description: 정기 결제 요금제 ID입니다.
              type: integer
            product_id:
              description: 정기 결제 제품 ID입니다.
              type: integer
            trial_period:
              description: 체험 기간의 날짜 수입니다.
              type: integer
          required:
            - plan_id
            - product_id
            - trial_period
          type: object
        virtual_currency_amount:
          description: Virtual currency amount in a reward.
          format: float
          type: number
        virtual_items:
          description: Array of virtual items parameters in a reward.
          properties:
            quantity:
              description: 가상 아이템 수량입니다.
              type: integer
            sku:
              description: 가상 아이템 SKU입니다.
              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: Key of the user attribute.
          type: string
        list_of_values:
          description: enum형 값의 배열입니다.
          items:
            type: object
          type: array
        name:
          allOf:
            - $ref: '#/components/schemas/LocalizedStringPairs'
            - description: Localized attribute names.
        skip_condition_on_nonexistent_key:
          description: 키가 존재하지 않는 경우 조건을 건너뛰어야 하는지 여부입니다.
          type: boolean
        type:
          description: 키 유형입니다.
          enum:
            - int
            - string
            - enum
            - date
          type: string
        visible:
          type: boolean
      type: object
    CreatePromotion:
      properties:
        description:
          allOf:
            - $ref: '#/components/schemas/LocalizedStringPairs'
            - description: Array of localized promotion descriptions.
        label:
          allOf:
            - $ref: '#/components/schemas/LocalizedStringPairs'
            - description: Array of localized labels to show in the payment UI.
        name:
          allOf:
            - $ref: '#/components/schemas/LocalizedStringPairs'
            - description: Array of localized promotion names.
        project_id:
          description: Project ID.
          type: integer
        technical_name:
          description: 프로모션의 기술명입니다.
          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: 아랍어.
          type: string
        bg:
          description: 불가리아어.
          type: string
        cn:
          description: 중국어(간체).
          type: string
        cs:
          description: 체코어.
          type: string
        de:
          description: 독일어.
          type: string
        en:
          description: 영어.
          type: string
        es:
          description: 스페인어.
          type: string
        fr:
          description: 프랑스어.
          type: string
        he:
          description: 히브리어.
          type: string
        it:
          description: 이탈리아어.
          type: string
        ja:
          description: 일본어.
          type: string
        ko:
          description: 한국어.
          type: string
        pl:
          description: 폴란드어.
          type: string
        pt:
          description: 포르투갈어.
          type: string
        ro:
          description: 루마니아어.
          type: string
        ru:
          description: 러시아어.
          type: string
        th:
          description: 태국어.
          type: string
        tr:
          description: 터키어.
          type: string
        tw:
          description: 중국어(번체).
          type: string
        vi:
          description: 베트남어.
          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: 결제 시스템.
          items:
            properties:
              id:
                description: Payment system ID.
                type: integer
              name:
                description: 결제 시스템 이름.
                type: string
            type: object
          type: array
      type: object
    PromotionPeriod:
      properties:
        periods:
          description: 날짜/시간 범위.
          items:
            properties:
              from:
                description: 날짜 범위의 시작입니다.
                format: datetime
                type: string
              offset:
                description: >-
                  Number of the element from which the list is generated (the
                  count starts from 0).
                type: string
              to:
                description: 날짜 범위의 끝입니다.
                format: datetime
                type: string
            type: object
          type: array
      type: object
    PromotionReward:
      properties:
        item:
          description: Set the reward for specific virtual items.
          properties:
            bonus:
              description: Extra virtual items given as a bonus.
              items:
                properties:
                  id:
                    type: integer
                  localized_name:
                    description: 기본 언어(영어)로 표기된 요금제 명칭, name.en 값을 복제합니다.
                    type: string
                  quantity:
                    description: Number of virtual items given as a bonus.
                    type: integer
                  sku:
                    description: Item SKU.
                    type: string
                type: object
              type: array
            discount:
              description: Discounts for specific virtual items.
              items:
                properties:
                  discount_percent:
                    description: 할인율 수치입니다.
                    format: float
                    type: number
                  localized_name:
                    description: 기본 언어(영어)로 표기된 요금제 명칭, name.en 값을 복제합니다.
                    type: string
                  max_amount:
                    description: Maximum number of items to apply the promotion to.
                    format: integer
                    type: number
                  sku:
                    description: Item SKU.
                    type: string
                type: object
              type: array
          type: object
        package:
          description: Set the reward for a virtual currency package.
          properties:
            bonus_amount:
              description: Reward as an absolute quantity of the virtual currency.
              format: float
              type: number
            bonus_percent:
              description: Reward as a percentage of the package amount.
              format: float
              type: number
          type: object
        purchase:
          description: 전체 구매에 대한 보상을 설정합니다.
          properties:
            discount_percent:
              description: 할인율 수치입니다.
              format: float
              type: number
          type: object
        subscription:
          description: Sets the reward for a subscription.
          properties:
            trial_days:
              description: 평가 기간(일)입니다.
              type: integer
          type: object
      type: object
    PromotionSubject:
      properties:
        digital_contents:
          nullable: true
          type: object
        items:
          description: Array of virtual items that the promotion applies to.
          items:
            properties:
              id:
                type: integer
              localized_name:
                description: 기본 언어(영어)로 표기된 요금제 명칭, name.en 값을 복제합니다.
                type: string
              sku:
                description: Item SKU.
                type: string
            type: object
          type: array
        packages:
          description: Array of virtual currency packages that the promotion applies to.
          items:
            type: object
          nullable: true
          type: array
        purchase:
          description: Whether the promotion applies to the whole purchase.
          type: boolean
        subscriptions:
          description: Subscription plans or products that the promotion applies to.
          nullable: true
          properties:
            max_charges_count:
              description: Maximum number of billings that the promotion applies to.
              type: integer
            plans:
              items:
                description: Array of subscription plans that the promotion applies to.
                type: string
              type: array
            products:
              items:
                description: >-
                  Array of subscription-based products that the promotion
                  applies to.
                type: string
              type: array
          type: object
      type: object
    Subscription:
      properties:
        cancel_subscription_payment:
          description: >-
            `true`로 설정하면 본 정기 결제 최종 결제 금액이 환불됩니다. **이 옵션은 상태가 `canceled`로 설정된
            경우에만 작동합니다**.
          type: boolean
        status:
          description: Status.
          enum:
            - active
            - canceled
            - non_renewing
          type: string
        timeshift:
          description: Billing postponement.
          properties:
            type:
              description: 청구 기간 단위입니다. `day` 또는 `month`일 수 있습니다.
              enum:
                - day
                - month
              type: string
            value:
              description: >-
                청구를 연기할 시간 단위 수입니다. 값은 유형 매개 변수에 따라 달라지며 다음이 될 수 있습니다: <br>-
                `type`이 `day`인 경우 1~366,<br>`type`이 `month`인 경우 1~12
              type: string
          type: object
        xsolla_network:
          properties:
            collaborator_id:
              description: >-
                협력자 ID -
                [인플루언서](https://developers.xsolla.com/ko/doc/partner-network/#guides_network_glossary_influencer)
                혹은 [제휴
                네트워크](https://developers.xsolla.com/ko/doc/partner-network/#guides_network_glossary_affiliate_network)
                식별자입니다. 이는 **관리자 페이지 > 파트너 네트워크 > 인플루언서** 섹션에서 찾을 수 있습니다.
              type: string
          type: object
      type: object
    SubscriptionResponse:
      properties:
        charge_amount:
          description: Billing amount.
          format: float
          type: number
        comment:
          description: 정기 결제 상태를 변경하는 이유
          type: string
        currency:
          description: 구매 통화입니다. ISO 4217에 따른 3자리 통화 코드입니다.
          type: string
        date_create:
          description: >-
            [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)에 따라
            `YYYY-MM-DD’T’HH:MM:SS` 형식으로 되어 있는 정기 결제 생성 날짜입니다.
          format: datetime
          type: string
        date_end:
          description: >-
            [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)에 따라
            `YYYY-MM-DD’T’HH:MM:SS` 형식으로 되어 있는 정기 결제 종료 날짜입니다.
          format: datetime
          type: string
        date_last_charge:
          description: >-
            [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)에 따라
            `YYYY-MM-DD’T’HH:MM:SS` 형식으로 되어 있는 마지막 정기 결제 요금 청구 날짜입니다.
          format: datetime
          nullable: true
          type: string
        date_next_charge:
          description: >-
            [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)에 따라
            `YYYY-MM-DD’T’HH:MM:SS` 형식으로 되어 있는 다음 정기 결제 요금 청구 날짜입니다.
          format: datetime
          nullable: true
          type: string
        id:
          description: 정기 결제 ID
          type: integer
        plan:
          allOf:
            - $ref: '#/components/schemas/SubscriptionsPlan'
        product:
          allOf:
            - $ref: '#/components/schemas/SubscriptionsProductWithId'
        status:
          description: 상태
          enum:
            - new
            - active
            - canceled
            - non_renewing
            - freeze
          type: string
        user:
          allOf:
            - $ref: '#/components/schemas/User'
      type: object
    SubscriptionsPlan:
      properties:
        billing_retry:
          description: 청구 재시도 세부 정보입니다.
          properties:
            value:
              description: 청구 재시도 횟수입니다.
              type: integer
          required:
            - value
          type: object
        charge:
          description: 청구 세부 정보입니다.
          properties:
            amount:
              description: Billing amount.
              format: float
              type: number
            currency:
              description: >-
                구매 통화입니다. [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217)에 따른
                3자릿수 통화 코드입니다.
              type: string
            period:
              description: 청구 기간입니다.
              properties:
                type:
                  description: 시간 단위입니다. `day`, `month` 혹은 `lifetime`일 수 있습니다.
                  enum:
                    - day
                    - month
                    - lifetime
                  type: string
                value:
                  description: >-
                    시간 단위 수입니다. 값은 유형 매개 변수에 따라 달라지며 다음이 될 수 있습니다:<br>`type`이
                    `day`인 경우 1~366, <br>`type`이 `month`인 경우 1~12, <br>`type`이
                    `lifetime`인 경우 0
                  type: integer
              required:
                - value
                - type
              type: object
            prices:
              description: 다양한 통화로 되어 있는 가격 목록입니다.
              items:
                properties:
                  amount:
                    description: Billing amount.
                    format: float
                    type: number
                  currency:
                    description: >-
                      구매 통화입니다. [ISO
                      4217](https://en.wikipedia.org/wiki/ISO_4217)에 따른 3자릿수 통화
                      코드입니다.
                    type: string
                  setup_fee:
                    description: 첫 청구서의 일부로 청구되는 일회성 설정 수수료입니다.
                    format: float
                    type: number
                required:
                  - amount
                  - currency
                type: object
              type: array
          required:
            - period
          type: object
        description:
          allOf:
            - $ref: '#/components/schemas/LocalizedStringPairs'
            - description: 요금제 설명입니다. "localization":"plan description" 쌍으로 구성된 값입니다.
        expiration:
          description: 정기 결제 만료 세부 정보입니다.
          properties:
            type:
              description: 시간 단위입니다. `day` 혹은 `month`일 수 있습니다.
              enum:
                - day
                - month
              type: string
            value:
              description: 만료 전 남은 기간입니다.
              nullable: true
              type: integer
          required:
            - value
            - type
          type: object
        external_id:
          description: Plan external ID (32 characters).
          type: string
        grace_period:
          description: Grace period details.
          properties:
            type:
              description: 시간 단위입니다. `day`일 수 있습니다.
              enum:
                - day
              type: string
            value:
              description: Number of time units.
              type: integer
          required:
            - value
            - type
          type: object
        group_id:
          description: 이러한 요금제가 연결된 그룹의 ID입니다.
          nullable: true
          type: string
        id:
          description: 정기 결제 요금제 ID입니다.
          type: integer
        name:
          allOf:
            - $ref: '#/components/schemas/LocalizedStringPairs'
            - description: 요금제 이름입니다. "localization":"plan name" 쌍으로 구성된 값입니다.
        project_id:
          description: Project ID.
          type: integer
        refund_period:
          description: 사용자가 정기 결제 요금제 지급금을 환불할 수 있는 기간(일 단위)입니다.
          nullable: true
          type: integer
        status:
          properties:
            value:
              description: 정기 결제 요금제 상태입니다.
              enum:
                - active
                - disabled
              type: string
          type: object
        tags:
          description: Plan tags.
          items:
            type: string
          type: array
        trial:
          description: 무료체험 기간 세부 정보입니다.
          properties:
            type:
              description: 시간 단위입니다. `day`일 수 있습니다.
              enum:
                - day
              type: string
            value:
              description: Number of time units.
              type: integer
          required:
            - value
            - type
          type: object
      type: object
    SubscriptionsPlanRequest:
      properties:
        billing_retry:
          description: 청구 재시도 세부 정보입니다.
          properties:
            value:
              description: 청구 재시도 횟수입니다.
              type: integer
          required:
            - value
          type: object
        charge:
          description: 청구 세부 정보입니다.
          properties:
            amount:
              description: Billing amount.
              format: float
              type: number
            currency:
              description: >-
                구매 통화입니다. [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217)에 따른
                3자릿수 통화 코드입니다.
              type: string
            period:
              description: 청구 기간입니다.
              properties:
                type:
                  description: 시간 단위입니다. `day`, `month` 혹은 `lifetime`일 수 있습니다.
                  enum:
                    - day
                    - month
                    - lifetime
                  type: string
                value:
                  description: >-
                    시간 단위 수입니다. 값은 유형 매개 변수에 따라 달라지며 다음이 될 수 있습니다:<br>`type`이
                    `day`인 경우 1~366, <br>`type`이 `month`인 경우 1~12, <br>`type`이
                    `lifetime`인 경우 0
                  type: integer
              required:
                - value
                - type
              type: object
            prices:
              description: 다양한 통화로 되어 있는 가격 목록입니다.
              items:
                properties:
                  amount:
                    description: Billing amount.
                    format: float
                    type: number
                  currency:
                    description: >-
                      구매 통화입니다. [ISO
                      4217](https://en.wikipedia.org/wiki/ISO_4217)에 따른 3자릿수 통화
                      코드입니다.
                    type: string
                  setup_fee:
                    description: 첫 청구서의 일부로 청구되는 일회성 설정 수수료입니다.
                    format: float
                    type: number
                required:
                  - amount
                  - currency
                type: object
              type: array
          required:
            - period
          type: object
        description:
          allOf:
            - $ref: '#/components/schemas/LocalizedStringPairs'
            - description: 요금제 설명입니다. "localization":"plan description" 쌍으로 구성된 값입니다.
        expiration:
          description: 정기 결제 만료 세부 정보입니다.
          properties:
            type:
              description: 시간 단위입니다. `day` 혹은 `month`일 수 있습니다.
              enum:
                - day
                - month
              type: string
            value:
              description: 만료 전 남은 기간입니다.
              nullable: true
              type: integer
          required:
            - value
            - type
          type: object
        external_id:
          description: Plan external ID (32 characters).
          type: string
        grace_period:
          description: Grace period details.
          properties:
            type:
              description: 시간 단위입니다. `day`일 수 있습니다.
              enum:
                - day
              type: string
            value:
              description: Number of time units.
              type: integer
          required:
            - value
            - type
          type: object
        group_id:
          description: 이러한 요금제가 연결된 그룹의 ID입니다.
          type: string
        name:
          allOf:
            - $ref: '#/components/schemas/LocalizedStringPairs'
            - description: 요금제 이름입니다. "localization":"plan name" 쌍으로 구성된 값입니다.
        refund_period:
          description: 사용자가 정기 결제 요금제 지급금을 환불할 수 있는 기간(일 단위)입니다.
          nullable: true
          type: integer
        status:
          properties:
            value:
              description: 정기 결제 요금제 상태입니다.
              enum:
                - active
                - disabled
              type: string
          type: object
        tags:
          description: Plan tags.
          items:
            type: string
          type: array
        trial:
          description: 무료 체험 세부 정보입니다. 이 매개 변수가 전달되지 않으면 기본값 (0일)을 사용합니다.
          properties:
            type:
              description: 시간 단위입니다. `day`일 수 있습니다.
              enum:
                - day
              type: string
            value:
              description: Number of time units.
              type: integer
          required:
            - value
            - type
          type: object
      type: object
    SubscriptionsProduct:
      nullable: true
      properties:
        description:
          allOf:
            - $ref: '#/components/schemas/LocalizedStringPairs'
            - description: 현지화된 아이템 설명입니다.
        group_id:
          description: 제품이 연결된 그룹의 ID입니다.
          type: string
        name:
          description: 제품 이름입니다.
          type: string
      type: object
    SubscriptionsProductWithId:
      allOf:
        - properties:
            id:
              description: Product ID the plans are linked to.
              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
          type: string
        name:
          description: 사용자 이름
          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: >-
            `custom_parameters` 개체의 토큰에서 추가 매개 변수를 전달하여 부정 결제 방지 필터를 구성하세요. 권장
            매개 변수는 드롭다운 목록에 표시됩니다. [페이 스테이션 설명서
            ](https://developers.xsolla.com/ko/doc/pay-station/features/antifraud/)를
            참조하십시오.
          properties:
            active_date:
              description: >-
                [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)에 따른 마지막 확인
                날짜입니다.
              type: string
            additional_verification:
              description: Whether the player uses account verification procedures.
              type: boolean
            character_customized:
              description: Whether the player has customized their character.
              type: boolean
            chat_activity:
              description: Whether the player uses the chat function.
              type: boolean
            completed_tasks:
              description: Number of tasks/objectives completed.
              type: integer
            forum_activity:
              description: Whether the player uses the forum function.
              type: boolean
            items_used:
              description: Whether the player uses purchased in-game items.
              type: boolean
            karma_points:
              description: Player’s karma.
              type: integer
            last_change_password_date:
              description: >-
                [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)에 따른 마지막 암호 변경
                날짜입니다.
              type: string
            non_premium_currency:
              description: Amount of non-premium currency.
              format: float
              type: integer
            notifications_enabled:
              description: Whether the player enabled notifications.
              type: boolean
            profile_completed:
              description: >-
                Whether the player added additional information to their
                profile.
              type: boolean
            profile_image_added:
              description: Whether the player has uploaded a profile image.
              type: boolean
            pvp_activity:
              description: Whether the player takes part in PvP battles.
              type: boolean
            registration_date:
              description: >-
                [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)에 따른 계정
                생성일입니다.
              type: string
            session_time:
              description: >-
                [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)에 따른 평균 세션
                시간입니다.
              type: string
            social_networks_added:
              description: Whether the player has connected social media profiles.
              type: boolean
            total_bans:
              description: Number of times the player was banned in the chat/forum.
              type: integer
            total_characters:
              description: Number of in-game characters.
              type: integer
            total_clans:
              description: Number of clans the player is a member of.
              type: integer
            total_friends:
              description: Number of friends.
              type: integer
            total_game_events:
              description: Number of in-game events the player took part in.
              type: integer
            total_gifts:
              description: Number of in-game gifts the player has sent/received.
              type: integer
            total_hours:
              description: Total number of in-game hours.
              type: integer
            total_inventory_value:
              description: Total inventory value (in-game currency).
              format: float
              type: integer
            total_sum:
              description: Total amount of payments.
              format: float
              type: integer
            tutorial_completed:
              description: Whether the player has completed the game’s tutorial.
              type: boolean
            unlocked_achievements:
              description: Number of achievements unlocked.
              type: integer
            user_level:
              description: Player’s level, reputation, or rank.
              type: integer
            win_rate:
              description: Win rate.
              type: integer
          type: object
        purchase:
          description: 구매 데이터 관련 값입니다.
          properties:
            checkout:
              description: Object containing checkout details.
              properties:
                amount:
                  description: 구매 금액입니다.
                  format: float
                  type: integer
                currency:
                  description: >-
                    구매 통화입니다. [ISO
                    4217](https://en.wikipedia.org/wiki/ISO_4217)에 따른 3자릿수 통화
                    코드입니다.
                  type: string
              type: object
            subscription:
              description: 정기 결제 데이터 관련 값입니다.
              properties:
                available_plans:
                  description: 결제 UI에 표시되는 정기 결제 요금제입니다.
                  items:
                    type: string
                  type: array
                currency:
                  description: >-
                    Currency of the subscription plan to use in all
                    calculations.
                  type: string
                gift:
                  description: 정기 결제 선물 세부 정보입니다.
                  properties:
                    anonymous:
                      description: >-
                        선물한 사람의 이름을 숨길지 여부입니다. `true`인 경우 이메일 알림에서 발신자 이름이
                        숨겨집니다. 기본값은 `false`입니다.
                      type: boolean
                    email:
                      description: 수신자 이메일입니다.
                      type: string
                    message:
                      description: 수신자에게 표시되는 메시지입니다.
                      type: string
                    recipient:
                      description: 수신자의 ID입니다.
                      type: string
                    redirect_url:
                      description: >-
                        정기 결제 선물에 대한 추가 정보가 있는 페이지 또는 계정 생성 페이지로 연결되는 링크를 여기에
                        입력합니다. 선물 받는 사람은 정기 결제 선물 이메일 알림에서 이 페이지로 이동할 수 있습니다.
                      type: string
                  required:
                    - recipient
                    - email
                  type: object
                operation:
                  description: >-
                    사용자의 정기 결제 요금제에 적용되는 작업 유형입니다. 정기 결제 요금제을 변경하려면
                    `change_plan` 값을 전달합니다. `purchase.subscription.plan_id` 매개
                    변수에서 새 요금제 ID를 지정해야 합니다.
                  type: string
                plan_id:
                  description: >-
                    정기 결제 요금제 외부 ID입니다. 관리자 페이지의 **정기 결제 > 정기 결제 요금제** 섹션에서 확인할
                    수 있습니다.
                  type: string
                product_id:
                  description: Product ID.
                  type: string
                trial_days:
                  description: 평가 기간(일)입니다.
                  type: integer
              type: object
          type: object
        settings:
          description: 사용자 지정 프로젝트 설정과 관련된 값입니다.
          properties:
            currency:
              description: >-
                선호하는 결제 통화입니다. [ISO
                4217](https://en.wikipedia.org/wiki/ISO_4217)에 따른 3자릿수 통화 코드입니다.
              type: string
            external_id:
              description: 게임의 트랜잭션 ID입니다. 각 사용자 결제마다 고유해야 합니다.
              type: string
            language:
              description: >-
                인터페이스 언어입니다. 두 자릿수 소문자 [언어
                코드](https://developers.xsolla.com/ko/doc/pay-station/features/localization/)입니다.
              type: string
            mode:
              description: >-
                결제 프로세스를 테스트하기 위한 `sandbox` 값을 설정합니다. 이 경우
                *https://sandbox-secure.xsolla.com*을 사용하여 테스트 결제 UI에 액세스합니다.
              type: string
            payment_method:
              description: 결제 수단의 ID입니다.
              type: integer
            payment_widget:
              description: >-
                결제 위젯입니다. '`paybycash`' 혹은 '`giftcard`'일 수 있습니다. 매개 변수가 설정되면,
                사용자는 각각 페이바이캐쉬(Pay by Cash) 혹은 기프트 카드(Gift Cards) 위젯으로 리디렉션됩니다.
              enum:
                - paybycash
                - giftcard
              type: string
            project_id:
              description: Game’s Xsolla ID. Can be found in Publisher Account.
              type: integer
            redirect_policy:
              description: 정책 설정을 리디렉션합니다.
              properties:
                autoredirect_from_status_page:
                  description: 상태 페이지에서 자동 리디렉션 여부입니다.
                  type: boolean
                delay:
                  description: 사용자가 자동으로 복귀 URL로 리디렉션된 이후 지연 시간(초)입니다.
                  type: integer
                manual_redirection_action:
                  description: >-
                    페이 스테이션 동작은 닫기 버튼 또는 **게임으로 돌아가기** 버튼을 사용자가 클릭하면 트리거됩니다.
                    `redirect`(기본값) 및 `postmessage`일 수 있습니다. `redirect`로 설정된 경우
                    사용자는 토큰에서 전달되었거나 관리자 페이지에서 지정된 URL로 리디렉션됩니다. `postmessage`로
                    설정된 경우 사용자는 다른 페이지로 리디렉션되지 않습니다. 닫기 아이콘을 클릭하면 `close` 이벤트
                    전송이 시작되고 **게임으로 돌아가기** 버튼을 클릭하면 `return` 이벤트 전송이 시작됩니다.
                  enum:
                    - redirect
                    - postmessage
                  type: string
                redirect_button_caption:
                  description: 수동 리디렉션을 위한 버튼 텍스트입니다.
                  type: string
                redirect_conditions:
                  description: >-
                    사용자가 복귀 URL로 리디렉션되는 결제 상태입니다. 이는 `none`, `successful`,
                    `successful_or_canсeled`, 혹은 `any`일 수 있습니다.
                  enum:
                    - none
                    - successful
                    - successful_or_canceled
                    - any
                  type: string
                status_for_manual_redirection:
                  description: >-
                    사용자를 복귀 URL로 리디렉션하는 버튼이 표시되는 결제 상태입니다. 이는 `none`,
                    `successful`, `successful_or_canсeled`, 혹은 `any`일 수 있습니다.
                  enum:
                    - none
                    - successful
                    - successful_or_canceled
                    - any
                  type: string
              type: object
            return_url:
              description: >-
                사용자를 결제 이후로 리디렉션하는 페이지입니다. 매개 변수 `user_id`, `foreigninvoice`,
                `invoice_id`및 `status`는 자동으로 링크에 추가됩니다.
              type: string
            ui:
              description: 인터페이스 설정과 관련된 값입니다.
              properties:
                components:
                  description: 메뉴 설정과 관련된 값입니다.
                  properties:
                    subscriptions:
                      description: 정기 결제 요금제 하위 메뉴 설정과 관련된 값입니다.
                      properties:
                        hidden:
                          description: Whether to show the submenu.
                          type: boolean
                        order:
                          description: Position of the submenu in the menu.
                          type: integer
                      type: object
                    virtual_currency:
                      description: 인게임 재화 하위 메뉴 설정과 관련된 값입니다.
                      properties:
                        custom_amount:
                          description: >-
                            Whether the user can enter an arbitrary quantity of
                            the virtual currency in the payment UI.
                          type: boolean
                        hidden:
                          description: Whether to show the submenu.
                          type: boolean
                        order:
                          description: Position of the submenu in the menu.
                          type: integer
                      type: object
                    virtual_items:
                      description: 가상 아이템 하위 메뉴 설정과 관련된 값입니다.
                      properties:
                        hidden:
                          description: Whether to show the submenu.
                          type: boolean
                        order:
                          description: Position of the submenu in the menu.
                          type: integer
                        selected_group:
                          description: Group to show after opening the virtual items tab.
                          type: string
                        selected_item:
                          description: >-
                            Item to show after opening the virtual items tab
                            (item SKU).
                          type: string
                      type: object
                  type: object
                desktop:
                  description: PC 버전의 인터페이스 설정과 관련된 값입니다.
                  properties:
                    header:
                      description: 헤더 설정과 관련된 값입니다.
                      properties:
                        close_button:
                          description: >-
                            페이 스테이션 데스크탑에서 닫기 버튼을 표시할지 여부입니다. 이 버튼을 누르면 페이 스테이션이
                            종료되고`settings.return_url` 매개 변수에 지정된 URL로 사용자를
                            리디렉션합니다(기본값: `false`).
                          type: boolean
                        is_visible:
                          description: Whether to show the header in the payment UI.
                          type: boolean
                        type:
                          description: >-
                            헤더를 표시하는 설정 방식입니다. `compact`(프로젝트 이름 및 사용자 ID 표시 안
                            함) 또는 `normal`(기본값)을 설정할 수 있습니다.
                          enum:
                            - compact
                            - normal
                          type: string
                        visible_logo:
                          description: >-
                            `true`인 경우, 로고가 헤더에 표시됩니다(먼저 고객 성공 관리자에게 이미지를
                            제공하세요).
                          type: boolean
                        visible_name:
                          description: Whether to show the project name in the header.
                          type: boolean
                        visible_purchase:
                          description: >-
                            구매 설명(`purchase.description.value`)이 헤더에 표시되는지
                            여부입니다. 기본값은 `true`입니다.
                          type: boolean
                      type: object
                    subscription_list:
                      description: 정기 결제 요금제 목록 설정과 관련된 값입니다.
                      properties:
                        description:
                          description: >-
                            Any text to show above the list of available
                            subscription plans in the payment UI.
                          type: string
                        display_local_price:
                          description: >-
                            `true`인 경우 및 사용자의 현지 통화가 정기 결제 요금제의 통화와 다른 경우, 사용자는
                            현지 통화의 가격 및 기본 통화의 가격 등 두 가지 가격을 볼 수 있습니다.
                          type: boolean
                        layout:
                          description: 정기 결제 목록 패턴입니다. `list`(기본값) 또는 `grid`일 수 있습니다.
                          enum:
                            - list
                            - grid
                          type: string
                      type: object
                    virtual_currency_list:
                      description: 인게임 재화 목록 설정과 관련된 값입니다.
                      properties:
                        button_with_price:
                          description: >-
                            `true`인 경우, 가격이 버튼에 표시됩니다. `false`인 경우, 가격이 버튼 왼쪽에
                            표시됩니다. 기본값은 `false`입니다.
                          type: boolean
                        description:
                          description: >-
                            Any text to show above the list of virtual
                            currencies.
                          type: string
                      type: object
                    virtual_item_list:
                      description: 가상 아이템 목록 설정과 관련된 값입니다.
                      properties:
                        button_with_price:
                          description: >-
                            `true`인 경우, 가격이 버튼에 표시됩니다. `false`인 경우, 가격이 버튼 왼쪽에
                            표시됩니다. 기본값은 `false`입니다.
                          type: boolean
                        layout:
                          description: 정기 결제 목록 패턴입니다. `list`(기본값) 또는 `grid`일 수 있습니다.
                          enum:
                            - list
                            - grid
                          type: string
                        view:
                          description: >-
                            가상 아이템 그룹을 세로/가로 보기 메뉴로 표시합니다.
                            `horizontal_navigation` 또는
                            `vertical_navigation`(기본값)일 수 있습니다.
                          enum:
                            - horizontal_navigation
                            - vertical_navigation
                          type: string
                      type: object
                  type: object
                header:
                  properties:
                    visible_virtual_currency_balance:
                      description: 결제 UI에서 이 요소를 숨길 수 있는지 여부입니다. 기본값은 `true`입니다.
                      type: boolean
                  type: object
                is_prevent_external_link_open:
                  description: >-
                    외부 리소스에 대한 리디렉션 링크가 비활성화되었는지 여부입니다. `true`가 기본값입니다. 외부 링크를
                    클릭하면`external-link-open`이벤트가 `postMessage` 메커니즘을 통해 전송됩니다.
                    리디렉션 링크용 주소는`url` 매개 변수에서 전달됩니다.
                  type: boolean
                license_url:
                  description: EULA의 링크입니다.
                  type: string
                mobile:
                  properties:
                    footer:
                      properties:
                        is_visible:
                          description: 모바일 버전의 결제 UI에서 바닥글을 표시하거나 숨길지 여부입니다.
                          type: boolean
                      type: object
                    header:
                      properties:
                        close_button:
                          description: >-
                            페이 스테이션 모바일에서 닫기 버튼을 표시할지 여부입니다. 이 버튼을 누르면 페이 스테이션이
                            종료되고 `settings.return_url` 매개 변수에 지정된 URL로 사용자를
                            리디렉션합니다(기본값: `false`).
                          type: boolean
                      type: object
                    mode:
                      description: >-
                        사용자는 저장된 결제 방식을 통해서만 결제를 할 수 있습니다. `saved_accounts`일 수
                        있습니다.
                      enum:
                        - saved_accounts
                      type: string
                  type: object
                mode:
                  description: >-
                    페이 스테이션의 인터페이스 모드입니다. `user_account`만 가능합니다. 헤더는 계정 탐색 메뉴만
                    포함하고 사용자는 제품을 선택하거나 결제를 진행할 수 없습니다. 이 모드는 데스크탑에서만 사용할 수
                    있습니다.
                  type: string
                size:
                  description: |-
                    결제 UI의 크기입니다. 이 매개 변수는 결제 UI의 필요한 크기에 따라 값이 다음과 같을 수 있습니다.
                      - [small](https://livedemo.xsolla.com/developers/small/): 결제 UI의 가능한 최소 크기입니다. 창 크기가 엄격히 제한되는 경우 이 값을 사용합니다. (크기: 620 x 630)
                      - [medium](https://livedemo.xsolla.com/developers/medium/): 결제 UI의 권장 크기입니다. 이 값을 사용하여 라이트박스에 결제 UI를 표시합니다. (크기: 740 x 760)
                      - [large](https://livedemo.xsolla.com/developers/large/): 새 창 또는 탭에 결제 UI 표시를 위한 최적의 크기입니다. (크기: 820 x 840)
                  enum:
                    - small
                    - medium
                    - large
                  type: string
                theme:
                  description: 결제 UI의 모양 테마입니다. `default`(기본값) 또는 `default_dark`일 수 있습니다.
                  enum:
                    - default
                    - default_dark
                  type: string
                user_account:
                  description: 사용자 계정 세부 정보입니다.
                  properties:
                    history:
                      allOf:
                        - description: '**기록** 하위 메뉴입니다.'
                        - properties:
                            enable:
                              description: 하위 메뉴를 표시할지 여부입니다. 기본값은 `false`입니다.
                              type: boolean
                            order:
                              description: Position of the submenu in the menu.
                              type: integer
                          type: object
                    info:
                      allOf:
                        - description: '**내 계정** 페이지입니다.'
                        - properties:
                            enable:
                              description: 하위 메뉴를 표시할지 여부입니다. 기본값은 `false`입니다.
                              type: boolean
                            order:
                              description: Position of the submenu in the menu.
                              type: integer
                          type: object
                    payment_accounts:
                      allOf:
                        - description: '**내 결제 계정** 하위 메뉴입니다.'
                        - properties:
                            enable:
                              description: 하위 메뉴를 표시할지 여부입니다. 기본값은 `false`입니다.
                              type: boolean
                            order:
                              description: Position of the submenu in the menu.
                              type: integer
                          type: object
                    subscriptions:
                      allOf:
                        - description: '**정기 결제 관리** 하위 메뉴입니다.'
                        - properties:
                            enable:
                              description: 하위 메뉴를 표시할지 여부입니다. 기본값은 `false`입니다.
                              type: boolean
                            order:
                              description: Position of the submenu in the menu.
                              type: integer
                          type: object
                  type: object
                version:
                  description: 장치 유형입니다. `desktop`(기본값) 또는 `mobile`일 수 있습니다.
                  enum:
                    - desktop
                    - mobile
                  type: string
              type: object
          required:
            - project_id
          type: object
        user:
          description: 사용자의 세부 정보입니다.
          properties:
            age:
              description: 사용자 나이입니다.
              type: integer
            attributes:
              description: >-
                User attributes for filtering the item list, represented as a
                valid JSON set of key-value pairs.
              type: object
            country:
              properties:
                allow_modify:
                  description: >-
                    결제 UI에서 사용자의 국가 변경 가능 여부입니다. `country.value`가 토큰에서 전달되면 기본값은
                    `false`입니다.
                  type: boolean
                value:
                  description: >-
                    [ISO 3166-1 alpha-2
                    standard](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)에
                    따른 두 자릿수 국가 코드입니다.
                  type: string
              type: object
            email:
              description: >-
                `user.email` 개체는 부정 결제 방지 모델 만들기의 정수 부분이며 수락률을 높여줍니다. 해당 개체는
                엑솔라와 결제 시스템 양쪽 모두의 요구 사항입니다. 매개 변수가 전달되지 않으면 이메일 입력용 필수 필드가 결제
                페이지에 나타납니다. 사용자는 매개 변수에서 전달되었거나 결제 페이지에 입력된 이메일로 구매 영수증을 받습니다.
              properties:
                value:
                  description: >-
                    사용자 이메일입니다. [RFC
                    822](https://www.w3.org/Protocols/rfc822/#z8) 프로토콜에 따라 유효해야
                    합니다.
                  type: string
              required:
                - value
              type: object
            id:
              properties:
                value:
                  description: User ID.
                  type: string
              required:
                - value
              type: object
            is_legal:
              description: Whether the user is a legal entity.
              type: boolean
            legal:
              allOf:
                - description: >-
                    법인 세부 정보가 있는 개체입니다. `user.is_legal`가 `true`인 경우 개체와 이에 해당하는
                    모든 매개 변수는 필수입니다.
                - description: 법인 세부 정보가 있는 개체입니다.
                  properties:
                    address:
                      description: Full legal address.
                      type: string
                    country:
                      description: >-
                        기업이 속한 국가입니다. [ISO 3166-1
                        alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)에
                        따른 두 자릿수 대문자 국가 코드입니다.
                      type: string
                    name:
                      description: Full legal name.
                      type: string
                    vat_id:
                      description: Individual taxpayer identifier.
                      type: string
                  type: object
            name:
              properties:
                value:
                  description: User screen name.
                  type: string
              type: object
            phone:
              properties:
                value:
                  description: User phone number.
                  type: string
              type: object
            public_id:
              properties:
                value:
                  description: >-
                    Parameter that uniquely identifies the user and is known to
                    the user (email, screen name, etc). Allows the user to make
                    purchases outside the game store (e.g., via cash kiosks).
                  type: string
              type: object
            steam_id:
              properties:
                value:
                  description: Steam ID입니다.
                  type: string
              type: object
            tracking_id:
              properties:
                value:
                  description: 고유한 추적 ID(마케팅 캠페인에 사용됨)입니다.
                  type: string
              type: object
            utm:
              description: 트래픽 특성입니다.
              properties:
                utm_campaign:
                  description: Campaign title, transliterated or translated to English.
                  type: string
                utm_content:
                  description: Campaign content.
                  type: string
                utm_medium:
                  description: >-
                    Traffic channel (contextual ads, media ads, email lists,
                    etc.).
                  type: string
                utm_source:
                  description: Traffic source.
                  type: string
                utm_term:
                  description: >-
                    캠페인 키워드입니다. 설정된 경우 특정 검색 질의보다 타켓 광고에 사용하는 키워드 데이터에 기반하여 통계가
                    만들어집니다. Google Analytics에서는 지정된 `utm_term`이 일반 검색 용어 보고서의
                    일부입니다.
                  type: string
              type: object
          required:
            - id
          type: object
      type: object
  securitySchemes:
    basicAuth:
      description: >-
        엑솔라 API는 기본 액세스 인증을 사용합니다. API에 대한 모든 요청은 `Authorization: Basic
        <your_authorization_basic_key>` 헤더를 포함해야 합니다. 여기에서
        `<your_authorization_basic_key>`는 Base64 표준에 따라 인코딩된
        `merchant_id:api_key` 쌍입니다.

         [관리자 페이지](https://publisher.xsolla.com/)로 이동하여 다음 매개 변수를 찾으세요.<ul><li>`merchant_id`가 표시됩니다.<ul><li><b>회사 설정 > 회사</b> 섹션에 있습니다.</li><li>관리자 페이지의 브라우저 주소 표시줄에 있는 URL에 있습니다. URL 형식은 `https://publisher.xsolla.com/<merchant_id>`입니다.</li></ul></li><li>`api_key`는 생성 시 관리자 페이지에 한 번만 표시되며 사용자 측에 저장해야 합니다. 다음 섹션에서 새 키를 만들 수 있습니다.<ul><li><b>회사 설정 > API 키</b>.</li><li><b>프로젝트 설정 > API 키</b>.</li></ul></li></ul><br>
         API 키 작업에 대한 자세한 내용은 [API 참조](https://developers.xsolla.com/ko/api/getting-started/#api_keys_overview)를 확인하세요. 
      scheme: basic
      type: http
    subscriptionsManagementJwtAuth:
      scheme: bearer
      type: http
info:
  description: >-
    # 개요


    * **버전:** 2.0

    * **서버**: `https://api.xsolla.com/merchant/v2/`


    본 API 참조는 정기 결제, 쿠폰 및 프로모션 관리 엔드포인트에 관하여 기술하고 있습니다. 

    정기 결제에 대한 더 자세한 내용은 [제품
    가이드](https://developers.xsolla.com/ko/doc/subscriptions) 및
    [용어집](https://developers.xsolla.com/ko/doc/subscriptions/integration-guide/get-started/#general_glossary)을
    참조하십시오.
  title: 정기 결제 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: |-
        새로운 쿠폰 캠페인을 생성합니다.
        <div class="notice">
          <p><strong>주의</strong></p><p>이 API 호출에는 <code>project_id</code> 경로 매개 변수가 포함되어 있지 않으므로 회사의 모든 프로젝트에서 유효한 API 키를 사용하여 인증을 설정해야 합니다.</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: 생성됨.
      security:
        - basicAuth: []
      summary: 캠페인 생성
      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: |-
        쿠폰 캠페인에 쿠폰 코드를 추가합니다.
        <div class="notice">
          <p><strong>주의</strong></p><p>이 API 호출에는 <code>project_id</code> 경로 매개 변수가 포함되어 있지 않으므로 회사의 모든 프로젝트에서 유효한 API 키를 사용하여 인증을 설정해야 합니다.</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: Coupon code.
                  example: 34bryrb3
                  type: string
              required:
                - coupon_code
              type: object
        required: true
      responses:
        '204':
          description: 콘텐츠가 없습니다.
      security:
        - basicAuth: []
      summary: 캠페인에 쿠폰 추가
      tags:
        - coupons
      x-admin: true
      x-server: true
    servers:
      - url: https://api.xsolla.com/merchant/v2
  /merchants/{merchant_id}/promotions:
    get:
      description: |-
        모든 프로모션 목록입니다.
        <div class="notice">
          <p><strong>주의</strong></p><p>이 API 호출에는 <code>project_id</code> 경로 매개 변수가 포함되어 있지 않으므로 회사의 모든 프로젝트에서 유효한 API 키를 사용하여 인증을 설정해야 합니다.</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: OK(확인).
      security:
        - basicAuth: []
      summary: 프로모션 목록 가져오기
      tags:
        - promotions
      x-admin: true
      x-server: true
    post:
      description: |-
        새로운 프로모션을 생성합니다.
        <div class="notice">
          <p><strong>주의</strong></p><p>이 API 호출에는 <code>project_id</code> 경로 매개 변수가 포함되어 있지 않으므로 회사의 모든 프로젝트에서 유효한 API 키를 사용하여 인증을 설정해야 합니다.</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입니다.
                    type: integer
                type: object
          description: 생성됨.
      security:
        - basicAuth: []
      summary: Create Promotion
      tags:
        - promotions
      x-admin: true
      x-server: true
    servers:
      - url: https://api.xsolla.com/merchant/v2
  /merchants/{merchant_id}/promotions/{promotion_id}:
    delete:
      description: |-
        프로모션을 삭제합니다. `enabled` = `false`인 프로모션만 삭제할 수 있습니다. 
        <div class="notice">
          <p><strong>주의</strong></p><p>이 API 호출에는 <code>project_id</code> 경로 매개 변수가 포함되어 있지 않으므로 회사의 모든 프로젝트에서 유효한 API 키를 사용하여 인증을 설정해야 합니다.</p>
        </div>
      operationId: delete-promotion
      parameters:
        - $ref: '#/components/parameters/merchant-id-path-param'
        - $ref: '#/components/parameters/promotion-id-path-param'
      responses:
        '204':
          description: 콘텐츠가 없습니다.
      security:
        - basicAuth: []
      summary: 프로모션 삭제
      tags:
        - promotions
      x-admin: true
      x-server: true
    get:
      description: |-
        프로모션을 검색합니다. 
        <div class="notice">
          <p><strong>주의</strong></p><p>이 API 호출에는 <code>project_id</code> 경로 매개 변수가 포함되어 있지 않으므로 회사의 모든 프로젝트에서 유효한 API 키를 사용하여 인증을 설정해야 합니다.</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: OK(확인).
      security:
        - basicAuth: []
      summary: 프로모션 대상 가져오기
      tags:
        - promotions
      x-admin: true
      x-server: true
    put:
      description: >-
        프로모션을 업데이트합니다. 프로모션이 읽기 전용(`read_only` = `true`)인 경우 `project_id` 매개 변수를
        변경할 수 없습니다. 

        <div class="notice">
          <p><strong>주의</strong></p><p>이 API 호출에는 <code>project_id</code> 경로 매개 변수가 포함되어 있지 않으므로 회사의 모든 프로젝트에서 유효한 API 키를 사용하여 인증을 설정해야 합니다.</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: 콘텐츠가 없습니다.
      security:
        - basicAuth: []
      summary: 프로모션 업데이트
      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: |-
        특정 프로모션에 쿠폰 캠페인을 첨부합니다. 
        <div class="notice">
          <p><strong>주의</strong></p><p>이 API 호출에는 <code>project_id</code> 경로 매개 변수가 포함되어 있지 않으므로 회사의 모든 프로젝트에서 유효한 API 키를 사용하여 인증을 설정해야 합니다.</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: 캠페인 ID 배열입니다.
                  example:
                    - 9135
                  items:
                    type: integer
                  type: array
              required:
                - campaigns
              type: object
        required: true
      responses:
        '204':
          description: 콘텐츠가 없습니다.
      security:
        - basicAuth: []
      summary: 프로모션에 캠페인 연결
      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: |-
        프로모션에 지원되는 결제 시스템을 가져옵니다. 목록이 비어 있으면 프로모션이 모든 결제 시스템에 적용됩니다. 
        <div class="notice">
          <p><strong>주의</strong></p><p>이 API 호출에는 <code>project_id</code> 경로 매개 변수가 포함되어 있지 않으므로 회사의 모든 프로젝트에서 유효한 API 키를 사용하여 인증을 설정해야 합니다.</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: OK(확인).
      security:
        - basicAuth: []
      summary: Get Payment Systems
      tags:
        - promotions
      x-admin: true
      x-server: true
    put:
      description: >-
        프로모션에 지원되는 결제 시스템을 설정합니다. 목록이 비어 있으면 프로모션이 모든 결제 시스템에 적용됩니다. 프로모션이 읽기
        전용(`read_only` = `true`)인 경우 이 메서드를 호출할 수 없습니다. 

        <div class="notice">
          <p><strong>주의</strong></p><p>이 API 호출에는 <code>project_id</code> 경로 매개 변수가 포함되어 있지 않으므로 회사의 모든 프로젝트에서 유효한 API 키를 사용하여 인증을 설정해야 합니다.</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: 콘텐츠가 없습니다.
      security:
        - basicAuth: []
      summary: Set Payment Systems
      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: |-
        프로모션이 유효한 날짜/시간 범위를 가져옵니다.
        <div class="notice">
          <p><strong>주의</strong></p><p>이 API 호출에는 <code>project_id</code> 경로 매개 변수가 포함되어 있지 않으므로 회사의 모든 프로젝트에서 유효한 API 키를 사용하여 인증을 설정해야 합니다.</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: OK(확인).
      security:
        - basicAuth: []
      summary: Get Validity Periods
      tags:
        - promotions
      x-admin: true
      x-server: true
    put:
      description: >-
        프로모션이 유효한 날짜/시간 범위를 설정합니다. 프로모션이 읽기 전용(`read_only` = `true`)인 경우 기존 기간을
        편집할 수 없지만 새 기간을 추가할 수는 있습니다.

        <div class="notice">
          <p><strong>주의</strong></p><p>이 API 호출에는 <code>project_id</code> 경로 매개 변수가 포함되어 있지 않으므로 회사의 모든 프로젝트에서 유효한 API 키를 사용하여 인증을 설정해야 합니다.</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: 콘텐츠가 없습니다.
      security:
        - basicAuth: []
      summary: Set Validity Periods
      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: |-
        프로모션을 활성화하기 전에 검토해야 합니다. 이 메소드는 오류 목록을 반환합니다(있는 경우).
        <div class="notice">
          <p><strong>주의</strong></p><p>이 API 호출에는 <code>project_id</code> 경로 매개 변수가 포함되어 있지 않으므로 회사의 모든 프로젝트에서 유효한 API 키를 사용하여 인증을 설정해야 합니다.</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: OK(확인).
      security:
        - basicAuth: []
      summary: 프로모션 검토
      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: |-
        프로모션과 관련된 보상 목록을 가져옵니다.
        <div class="notice">
          <p><strong>주의</strong></p><p>이 API 호출에는 <code>project_id</code> 경로 매개 변수가 포함되어 있지 않으므로 회사의 모든 프로젝트에서 유효한 API 키를 사용하여 인증을 설정해야 합니다.</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: OK(확인).
      security:
        - basicAuth: []
      summary: 보상 가져오기
      tags:
        - promotions
      x-admin: true
      x-server: true
    put:
      description: >-
        프로모션에 대한 보상을 설정합니다. 프로모션이 읽기 전용(`read_only` = `true`)인 경우 보상을 업데이트할 수
        없습니다. 

        <div class="notice">
          <p><strong>주의</strong></p><p>이 API 호출에는 <code>project_id</code> 경로 매개 변수가 포함되어 있지 않으므로 회사의 모든 프로젝트에서 유효한 API 키를 사용하여 인증을 설정해야 합니다.</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: 콘텐츠가 없습니다.
      security:
        - basicAuth: []
      summary: 보상 설정
      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: |-
        프로모션 대상에 대한 정보를 얻습니다.
        <div class="notice">
          <p><strong>주의</strong></p><p>이 API 호출에는 <code>project_id</code> 경로 매개 변수가 포함되어 있지 않으므로 회사의 모든 프로젝트에서 유효한 API 키를 사용하여 인증을 설정해야 합니다.</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: OK(확인).
      security:
        - basicAuth: []
      summary: 프로모션 대상 가져오기
      tags:
        - promotions
      x-admin: true
      x-server: true
    put:
      description: >-
        프로모션의 대상을 설정합니다. 프로모션이 읽기 전용(`read_only` = `true`)인 경우 프로모션 대상을 업데이트할 수
        없습니다. 프로모션 대상은 다음 값을 가질 수 있습니다: `purchase`, `items`, 또는 `packages`.

        <div class="notice">
          <p><strong>주의</strong></p><p>이 API 호출에는 <code>project_id</code> 경로 매개 변수가 포함되어 있지 않으므로 회사의 모든 프로젝트에서 유효한 API 키를 사용하여 인증을 설정해야 합니다.</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: 콘텐츠가 없습니다.
      security:
        - basicAuth: []
      summary: 프로모션 대상 설정
      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: |-
        프로모션 상태를 `enabled`에서 `disabled`로 전환하고, 그 반대로도 전환합니다.
        <div class="notice">
          <p><strong>주의</strong></p><p>이 API 호출에는 <code>project_id</code> 경로 매개 변수가 포함되어 있지 않으므로 회사의 모든 프로젝트에서 유효한 API 키를 사용하여 인증을 설정해야 합니다.</p>
        </div>
      operationId: toggle-promotion
      parameters:
        - $ref: '#/components/parameters/merchant-id-path-param'
        - $ref: '#/components/parameters/promotion-id-path-param'
      responses:
        '204':
          description: 콘텐츠가 없습니다.
      security:
        - basicAuth: []
      summary: 프로모션 설정/해제
      tags:
        - promotions
      x-admin: true
      x-server: true
    servers:
      - url: https://api.xsolla.com/merchant/v2
  /merchants/{merchant_id}/subscriptions:
    get:
      description: >-
        모든 반복 정기 결제를 나열합니다.<div class="notice"><strong>주의</strong><br><br>이 API
        메소드는 높은 부하에서는 사용할 수 없습니다. 최대 부하는 분당 20개의 요청입니다.</div>

        <div class="notice">
          <p><strong>주의</strong></p><p>이 API 호출에는 <code>project_id</code> 경로 매개 변수가 포함되어 있지 않으므로 회사의 모든 프로젝트에서 유효한 API 키를 사용하여 인증을 설정해야 합니다.</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: OK(확인).
      security:
        - basicAuth: []
      summary: Get Subscriptions
      tags:
        - subscriptions
      x-admin: true
      x-server: true
    servers:
      - url: https://api.xsolla.com/merchant/v2
  /merchants/{merchant_id}/token:
    post:
      description: >-
        임의의 사용자 매개 변수로 토큰을 생성할 수 있습니다. 토큰을 받을 때 이러한 매개 변수를 보내고 성공적인 결제 후에 다시
        받습니다. 토큰은 이 문서에 설명되어 있거나 사용자가 미리 정의한 매개 변수만 포함할 수 있습니다.


        매개 변수가 잘못된 형식으로 전송되거나 잘못된 유형인 경우 토큰이 발급되지 않습니다. JSON 본문에 오류 설명이 포함된 422
        HTTP 코드를 받게 됩니다. `extended_message`에서 정확히 어떤 매개 변수가 잘못 전송되었는지에 대한 정보를 받게
        됩니다.

        <div class="notice">
          <p><strong>주의</strong></p><p>이 API 호출에는 <code>project_id</code> 경로 매개 변수가 포함되어 있지 않으므로 회사의 모든 프로젝트에서 유효한 API 키를 사용하여 인증을 설정해야 합니다.</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: 생성됨.
        '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/ko/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: 개체는 오류 설명과 함께 매개 변수 이름을 포함합니다.
                        type: object
                    type: object
                  http_status_code:
                    type: integer
                  message:
                    type: string
                  request_id:
                    type: string
                type: object
          description: 처리할 수 없는 엔터티입니다.
      security:
        - basicAuth: []
      summary: 토큰 생성
      tags:
        - token
      x-server: true
    servers:
      - url: https://api.xsolla.com/merchant/v2
  /projects/{project_id}/coupons/{code}/details:
    get:
      description: Get coupon details by its code.
      operationId: get-coupon
      parameters:
        - $ref: '#/components/parameters/project-id-path-param'
        - $ref: '#/components/parameters/code-path-param'
      responses:
        '200':
          content:
            application/json:
              example:
                key: '12'
                list_of_values: []
                name:
                  en: Level
                  ru: Уровень
                skip_condition_on_nonexistent_key: true
                type: int
                visible: false
              schema:
                $ref: '#/components/schemas/CouponAttribute'
          description: OK(확인).
      security:
        - basicAuth: []
      summary: 쿠폰 가져오기
      tags:
        - coupons
      x-admin: true
      x-server: true
    servers:
      - url: https://api.xsolla.com/merchant/v2
  /projects/{project_id}/coupons/{code}/redeem:
    post:
      description: 쿠폰 코드로 쿠폰을 사용합니다.
      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: User ID.
                  example: '1234'
                  type: string
              required:
                - user_id
              type: object
        required: true
      responses:
        '200':
          content:
            application/json:
              example:
                campaign_code: new_campaign
                coupon_code: ddgf5bn4
                coupon_id: 89613996
                expiration_date: '2019-12-31T00:00:00+00:00'
                is_active: true
                project_id: 12345
                redeems_count_for_user: 10
                redeems_count_remain: 20
                subscription_coupon: null
                virtual_currency_amount: 200
                virtual_items: []
              schema:
                $ref: '#/components/schemas/Coupon'
          description: OK(확인).
      security:
        - basicAuth: []
      summary: 쿠폰 사용
      tags:
        - coupons
      x-admin: true
      x-server: true
    servers:
      - url: https://api.xsolla.com/merchant/v2
  /projects/{project_id}/subscriptions/currencies:
    get:
      description: Lists all supported subscription currencies.
      operationId: get-currencies
      parameters:
        - $ref: '#/components/parameters/project-id-path-param'
      responses:
        '200':
          content:
            application/json:
              example:
                - AED
                - ALL
                - AMD
                - ARS
                - AUD
                - AZN
                - BAM
                - BBD
                - BGN
                - BHD
                - BND
                - BRL
                - BYN
                - BZD
                - CAD
                - CHF
                - CLP
                - CNY
                - COP
                - CRC
                - CZK
                - DKK
                - DZD
                - EGP
                - EUR
                - GBP
                - GEL
                - GHS
                - GIP
                - GTQ
                - HKD
                - HRK
                - HUF
                - IDR
                - ILS
                - INR
                - IQD
                - IRR
                - ISK
                - JMD
                - JOD
                - JPY
                - KES
                - KGS
                - KRW
                - KWD
                - KZT
                - LAK
                - LBP
                - LKR
                - MAD
                - MDL
                - MKD
                - MMK
                - MNT
                - MUR
                - MXN
                - MYR
                - NGN
                - NIO
                - NOK
                - NPR
                - NZD
                - OMR
                - PAB
                - PEN
                - PHP
                - PKR
                - PLN
                - PYG
                - QAR
                - RON
                - RSD
                - RUB
                - SAR
                - SEK
                - SGD
                - SVC
                - THB
                - TND
                - TRY
                - TWD
                - UAH
                - USD
                - UYU
                - UZS
                - VEF
                - VND
                - XOF
                - YER
                - ZAR
          description: OK(확인).
      security:
        - basicAuth: []
      summary: Get Currencies
      tags:
        - payments
      x-admin: true
      x-server: true
    servers:
      - url: https://api.xsolla.com/merchant/v2
  /projects/{project_id}/subscriptions/payments:
    get:
      description: Lists all subscription payments.
      operationId: get-payments
      parameters:
        - $ref: '#/components/parameters/project-id-path-param'
        - $ref: '#/components/parameters/offset-query-param'
        - $ref: '#/components/parameters/limit-query-param'
        - $ref: '#/components/parameters/user-id-query-param'
        - $ref: '#/components/parameters/status-id-query-param'
        - $ref: '#/components/parameters/datetime-from-query-param2'
        - $ref: '#/components/parameters/datetime-to-query-param2'
        - $ref: '#/components/parameters/subscription-id-query-param'
      responses:
        '200':
          content:
            application/json:
              example:
                - date_payment: '2016-04-05T10:02:01+03:00'
                  id: 67683
                  id_payment: 203960
                  status: fail
                  subscription:
                    charge_amount: 1
                    comment: null
                    currency: RUB
                    date_create: '2015-05-28T14:33:54+03:00'
                    date_end: '2016-04-05T10:02:07+03:00'
                    date_last_charge: '2015-06-03T16:07:29+03:00'
                    date_next_charge: '2015-06-04T00:00:00+03:00'
                    id: 3646
                    plan:
                      billing_retry:
                        value: 1
                      charge:
                        amount: 1
                        currency: RUB
                        period:
                          type: day
                          value: 1
                      description: null
                      expiration:
                        type: day
                        value: 0
                      external_id: E8nJ79
                      grace_period:
                        type: day
                        value: 0
                      group_id: charge
                      id: 24
                      localized_name: null
                      name: null
                      project_id: 12345
                      refund_period: null
                      status:
                        value: deleted
                      tags: null
                      trial:
                        type: day
                        value: 0
                      type: charge
                    product:
                      description: null
                      group_id: charge
                      id: 1
                      name: charge
                    status: freeze
                    user:
                      id: '10'
                      name: user2
                - date_payment: '2015-09-21T17:06:47+03:00'
                  id: 1531
                  id_payment: 168866
                  status: done
                  subscription:
                    charge_amount: 1
                    comment: "  \r\n"
                    currency: RUB
                    date_create: '2015-09-21T17:06:47+03:00'
                    date_end: null
                    date_last_charge: '2015-09-21T18:10:09+03:00'
                    date_next_charge: '2015-09-22T18:10:09+03:00'
                    id: 2004846
                    plan:
                      billing_retry:
                        value: 1
                      charge:
                        amount: 1
                        currency: RUB
                        period:
                          type: day
                          value: 1
                      description: null
                      expiration:
                        type: day
                        value: 0
                      external_id: E8nX9
                      grace_period:
                        type: day
                        value: 0
                      group_id: charge
                      id: 200
                      localized_name: null
                      name: null
                      project_id: 70
                      refund_period: null
                      status:
                        value: deleted
                      tags: null
                      trial:
                        type: day
                        value: 0
                      type: charge
                    product: null
                    status: new
                    user:
                      id: '12'
                      name: user1
          description: OK(확인).
      security:
        - basicAuth: []
      summary: Get Payments
      tags:
        - payments
      x-admin: true
      x-server: true
    servers:
      - url: https://api.xsolla.com/merchant/v2
  /projects/{project_id}/subscriptions/plans:
    get:
      description: Lists all subscription plans.
      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: 기본 언어(영어)로 표기된 요금제 명칭, name.en 값을 복제합니다.
                          type: string
                      type: object
                type: array
          description: OK(확인).
      security:
        - basicAuth: []
      summary: Get Plans
      tags:
        - plans
      x-admin: true
      x-server: true
    post:
      description: Creates a subscription plan.
      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: 생성됨.
      security:
        - basicAuth: []
      summary: 요금제 생성
      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: Disables a subscription plan.
      operationId: disable-plan
      parameters:
        - $ref: '#/components/parameters/project-id-path-param'
        - $ref: '#/components/parameters/plan-id-path-param'
      responses:
        '204':
          description: 콘텐츠가 없습니다.
      security:
        - basicAuth: []
      summary: 요금제 비활성화
      tags:
        - plans
      x-admin: true
      x-server: true
    patch:
      description: Enables a subscription plan.
      operationId: enable-plan
      parameters:
        - $ref: '#/components/parameters/project-id-path-param'
        - $ref: '#/components/parameters/plan-id-path-param'
      responses:
        '204':
          description: 콘텐츠가 없습니다.
      security:
        - basicAuth: []
      summary: 요금제 활성화
      tags:
        - plans
      x-admin: true
      x-server: true
    put:
      description: Updates subscription plan parameters.
      operationId: update-plan-parameters
      parameters:
        - $ref: '#/components/parameters/project-id-path-param'
        - $ref: '#/components/parameters/plan-id-path-param'
      requestBody:
        content:
          application/json:
            example:
              billing_retry:
                value: 1
              charge:
                amount: 20
                currency: USD
                period:
                  type: month
                  value: 1
                prices:
                  - amount: 17
                    currency: EUR
                    setup_fee: 1.5
                  - amount: 2000
                    currency: JPY
                    setup_fee: 2.5
              description:
                en: 3x more experience!
              expiration:
                type: day
                value: null
              external_id: exp
              grace_period:
                type: day
                value: 2
              name:
                en: Experience boost
              refund_period: null
              tags: []
              trial:
                type: day
                value: 7
            schema:
              $ref: '#/components/schemas/SubscriptionsPlanRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              example:
                billing_retry:
                  value: 1
                charge:
                  amount: 20
                  currency: USD
                  period:
                    type: month
                    value: 1
                  prices:
                    - amount: 17
                      currency: EUR
                      setup_fee: 1.5
                    - amount: 2000
                      currency: JPY
                      setup_fee: 2.5
                description:
                  en: 3x more experience!
                expiration:
                  type: day
                  value: 0
                external_id: exp
                grace_period:
                  type: day
                  value: 2
                group_id: null
                id: 241082
                localized_name: Experience boost
                name:
                  en: Experience boost
                project_id: 40797
                refund_period: null
                status:
                  value: active
                tags: []
                trial:
                  type: day
                  value: 7
                type: all
          description: OK(확인).
      security:
        - basicAuth: []
      summary: 요금제 업데이트
      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: Deletes a subscription plan.
      operationId: delete-plan
      parameters:
        - $ref: '#/components/parameters/project-id-path-param'
        - $ref: '#/components/parameters/plan-id-path-param'
      responses:
        '204':
          description: 콘텐츠가 없습니다.
      security:
        - basicAuth: []
      summary: 요금제 삭제
      tags:
        - plans
      x-admin: true
      x-server: true
    servers:
      - url: https://api.xsolla.com/merchant/v2
  /projects/{project_id}/subscriptions/products:
    get:
      description: Lists all subscription-based products.
      operationId: get-products
      parameters:
        - $ref: '#/components/parameters/project-id-path-param'
        - $ref: '#/components/parameters/offset-query-param'
        - $ref: '#/components/parameters/limit-query-param'
        - $ref: '#/components/parameters/group-id-query-param'
        - $ref: '#/components/parameters/product-id-query-param'
      responses:
        '200':
          content:
            application/json:
              example:
                - description:
                    en: Description in English.
                  group_id: charge
                  id: 714
                  name: Channel
                - description:
                    en: Description in English.
                  group_id: notify
                  id: 715
                  name: notify
                - description:
                    en: Description in English.
                  group_id: charge
                  id: 716
                  name: charge2
                - description:
                    en: Description in English.
                  group_id: charge
                  id: 486
                  name: Channel2
              schema:
                items:
                  $ref: '#/components/schemas/SubscriptionsProductWithId'
                type: array
          description: OK(확인).
      security:
        - basicAuth: []
      summary: 제품 가져오기
      tags:
        - products
      x-admin: true
      x-server: true
    post:
      description: Creates a subscription-based product.
      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: 생성됨.
      security:
        - basicAuth: []
      summary: Create Product
      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: Deletes a subscription-based product.
      operationId: delete-product
      parameters:
        - $ref: '#/components/parameters/project-id-path-param'
        - $ref: '#/components/parameters/product-id-path-param'
      responses:
        '204':
          description: 콘텐츠가 없습니다.
      security:
        - basicAuth: []
      summary: Delete Product
      tags:
        - products
      x-admin: true
      x-server: true
    put:
      description: Updates a subscription-based product.
      operationId: update-product
      parameters:
        - $ref: '#/components/parameters/project-id-path-param'
        - $ref: '#/components/parameters/product-id-path-param'
      requestBody:
        content:
          application/json:
            example:
              description:
                en: Description in English.
              group_id: charge13
              name: Channel23
            schema:
              allOf:
                - required:
                    - name
                    - group_id
                - $ref: '#/components/schemas/SubscriptionsProduct'
        required: true
      responses:
        '200':
          content:
            application/json:
              example:
                description:
                  en: Description in English.
                group_id: charge13
                id: 1713603
                name: Channel23
              schema:
                $ref: '#/components/schemas/SubscriptionsProductWithId'
          description: OK(확인).
      security:
        - basicAuth: []
      summary: Update Product
      tags:
        - products
      x-admin: true
      x-server: true
    servers:
      - url: https://api.xsolla.com/merchant/v2
  /projects/{project_id}/subscriptions/{subscription_id}:
    get:
      description: Gets a specific subscription details by ID.
      operationId: get-subscription
      parameters:
        - $ref: '#/components/parameters/project-id-path-param'
        - $ref: '#/components/parameters/subscription-id-path-param'
      responses:
        '200':
          content:
            application/json:
              example:
                charge_amount: 0.03
                comment: The subscription was not extended in due time
                currency: USD
                date_create: '2018-09-21T16:54:59+03:00'
                date_end: '2019-02-06T12:43:04+03:00'
                date_last_charge: '2018-09-21T16:55:05+03:00'
                date_next_charge: '2018-09-21T16:55:05+03:00'
                id: 249579
                plan:
                  external_id: lowcost
                  id: 601
                product:
                  id: 123456
                status: canceled
                user:
                  id: user1
                  name: John Smith
              schema:
                $ref: '#/components/schemas/SubscriptionResponse'
          description: OK(확인).
      security:
        - basicAuth: []
      summary: Get Subscription
      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: Lists all payments made by a specific user.
      operationId: get-user-payments
      parameters:
        - $ref: '#/components/parameters/project-id-path-param'
        - $ref: '#/components/parameters/user-id-path-param'
        - $ref: '#/components/parameters/status-id-query-param'
        - $ref: '#/components/parameters/offset-query-param'
        - $ref: '#/components/parameters/limit-query-param'
        - $ref: '#/components/parameters/datetime-from-query-param'
        - $ref: '#/components/parameters/datetime-to-query-param'
        - $ref: '#/components/parameters/subscription-id-query-param'
      responses:
        '200':
          content:
            application/json:
              example:
                - date_payment: '2016-04-05T10:02:01+03:00'
                  id: 6746083
                  id_payment: 202789960
                  status: fail
                  subscription:
                    charge_amount: 200
                    comment: null
                    currency: RUB
                    date_create: '2015-05-28T14:33:54+03:00'
                    date_end: '2016-04-05T10:02:07+03:00'
                    date_last_charge: '2015-06-03T16:07:29+03:00'
                    date_next_charge: '2015-06-04T00:00:00+03:00'
                    id: 36946
                    plan:
                      charge:
                        amount: 200
                        currency: RUB
                        period:
                          type: day
                          value: 1
                      description: null
                      expiration:
                        type: day
                        value: 0
                      external_id: E8n34J79
                      grace_period:
                        type: day
                        value: 0
                      group_id: charge
                      id: 24
                      localized_name: null
                      name: null
                      project_id: 1234
                      refund_period: null
                      status:
                        value: deleted
                      tags: null
                      trial:
                        type: day
                        value: 0
                      type: charge
                    product:
                      description: null
                      group_id: charge
                      id: 1
                      name: charge
                    status: freeze
                    user:
                      id: '12'
                      name: John
          description: OK(확인).
      security:
        - basicAuth: []
      summary: 사용자 결제 가져오기
      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: >-
        상태를 변경(`active`, `canceled`, 혹은 `non_renewing`)하거나 다음 청구 날짜를 연기하여 정기 결제를
        업데이트합니다.
      operationId: update-subscription
      parameters:
        - $ref: '#/components/parameters/project-id-path-param'
        - $ref: '#/components/parameters/user-id-path-param'
        - $ref: '#/components/parameters/subscription-id-path-param'
      requestBody:
        content:
          application/json:
            example:
              status: active
            schema:
              $ref: '#/components/schemas/Subscription'
        required: true
      responses:
        '200':
          content:
            application/json:
              example:
                charge_amount: 0.03
                currency: USD
                date_create: '2018-09-21T16:54:59+03:00'
                date_end: null
                date_last_charge: '2018-09-21T16:55:05+03:00'
                date_next_charge: '2018-09-21T16:55:05+03:00'
                id: 24953579
                plan:
                  billing_retry:
                    value: 1
                  charge:
                    amount: 0.03
                    currency: USD
                    period:
                      type: day
                      value: 1
                  description: null
                  expiration:
                    type: day
                    value: 0
                  external_id: lowcost
                  grace_period:
                    type: day
                    value: 2
                  group_id: newPlans
                  id: 66001
                  localized_name: null
                  name: null
                  project_id: 18404
                  refund_period: null
                  status:
                    value: active
                  tags: null
                  trial:
                    type: day
                    value: 0
                  type: all
                product: null
                status: active
                user:
                  id: jb1
                  name: J.Black
          description: OK(확인).
      security:
        - basicAuth: []
      summary: Update Subscription
      tags:
        - subscriptions
      x-admin: true
      x-server: true
    servers:
      - url: https://api.xsolla.com/merchant/v2
tags:
  - name: token
    x-displayName: 토큰
  - name: plans
    x-displayName: Plans
  - name: products
    x-displayName: 제품
  - name: subscriptions
    x-displayName: Subscription management
  - name: payments
    x-displayName: 결제
  - name: promotions
    x-displayName: 프로모션
  - name: coupons
    x-displayName: 쿠폰
  - 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
