openapi: 3.1.0
info:
  description: >-
    # 개요


    * **버전:** 2.0.0

    * **서버**: `https://store.xsolla.com/api`

    * **[이메일로 문의하기](mailto:integration@xsolla.com)**

    * **문의 URL:** https://xsolla.com/

    * **필수 TLS 버전:** 1.2


    LiveOps는 프로모션 및 개인 맞춤형 제안을 통해 지속적인 플레이어 참여를 유도하는 도구입니다.


    다음 기능을 관리하기 위해 API를 사용하십시오:


    * **Promotions**- 쿠폰, 프로모션 코드, 할인 및 보너스 캠페인을 생성하고 관리합니다.

    * **Personalization** - 특정 인증된 사용자에게만 아이템 카탈로그를 디스플레이하고 프로모션을 적용할 조건을 지정합니다.

    * **Promotion limits** - 사용자가 프로모션을 사용할 수 있는 횟수를 제한하고 이러한 제한의 예약된 재설정을
    구성합니다.

    * **Reward chains & Value points** - 가치 포인트 축적에 연결된 보상 진행을 구성합니다.

    * **Daily chains** - 정기적인 일일 보상을 설정하여 정기적인 로그인을 유도합니다.

    * **Offer chains** - 단계별 가격 책정 및 무료 보상 옵션을 포함한 순차적 구매 제안을 구축합니다.

    * **Upsell** - 사용자가 추가 가치를 가진 아이템을 구매하도록 제안하는 판매 방법입니다.


    ## API 호출


    API는 **following groups**으로 구분됩니다:


    * **<nt>Admin</nt>** - 캠페인 및 체인 구성을 생성, 업데이트, 활성화 및 삭제하는 호출입니다. 판매자 또는 프로젝트
    자격 증명을 사용한 [기본 액세스
    인증](https://developers.xsolla.com/ko/payment-ui-and-flow/payment-ui/how-to-get-payment-token/#payments_solution_get_user_auth_token_basic_auth)을
    통해 인증됩니다.

    * **<nt>Client</nt>** - 인증된 최종 사용자를 대신하여 사용 가능한 프로모션을 검색하고, 활성 체인을 가져오고, 코드를
    사용하고, 보상을 청구하는 호출입니다. 사용자 JWT를 통해 인증됩니다.


    # 인증


    API 호출은 사용자 또는 프로젝트를 대신하여 인증이 필요합니다. 사용된 인증 체계는 각 호출 설명의 **보안** 섹션에 명시되어
    있습니다.


    ## 사용자의 JWT를 사용한 인증


    사용자의 JWT 인증은 브라우저, 모바일 애플리케이션 또는 게임에서 요청이 전송될 때 사용됩니다. 기본적으로
    `XsollaLoginUserJWT` 체계가 적용됩니다. 토큰 생성 방법에 대한 자세한 내용은 [엑솔라 로그인 API
    문서](/ko/api/login/authentication-schemes#getting-user-token)를 참조하십시오.


    토큰은 다음 형식으로 `Authorization` 헤더에 전달됩니다: `Authorization: Bearer <user_JWT>`,
    여기에서 `<user_JWT>`는 사용자 토큰입니다. 이 토큰은 사용자를 식별하고 개인화된 데이터에 대한 액세스를 제공합니다.


    또는 [결제 UI를 여는 토큰](/ko/api/pay-station/token/create-token)을 사용할 수 있습니다.


    ## 기본 HTTP 인증


    기본 HTTP 인증은 서버 간 상호작용에 사용되며, API 호출이 사용자의 브라우저나 모바일 애플리케이션이 아닌 서버에서 직접 전송될 때
    사용됩니다. 일반적으로 [API 키](/ko/api/getting-started/#api_keys_overview)를 사용한 HTTP
    기본 인증이 사용됩니다.


    <div class="note"><b>참고</b><br><br>API 키는 기밀이며 클라이언트 애플리케이션에 저장하거나 사용해서는 안
    됩니다.</div>


    기본 서버 측 인증을 사용하면 모든 API 요청에 다음 헤더를 포함해야 합니다:


    - `basicAuth`의 경우 - `Authorization: Basic <your_authorization_basic_key>`,
    여기에서 `your_authorization_basic_key`는 Base64로 인코딩된 `project_id:api_key` 쌍입니다.

    - `basicMerchantAuth`의 경우 - `Authorization: Basic
    <your_authorization_basic_key>`, 여기에서 `your_authorization_basic_key`는
    Base64로 인코딩된 `merchant_id:api_key` 쌍입니다.


    [관리자 페이지](https://publisher.xsolla.com/)에서 매개 변수 값을 찾을 수 있습니다:


    - `merchant_id`는 다음 위치에 표시됩니다:
      - **Company settings > Company**에서.
      - 관리자 페이지의 모든 페이지에서 브라우저 주소 표시줄의 URL에. URL 형식은 다음과 같습니다: `https://publisher.xsolla.com/<merchant_id>`.
    - `project_id`는 다음 위치에 표시됩니다:
      - 관리자 페이지에서 프로젝트 이름 옆.
      - 관리자 페이지에서 프로젝트 작업 시 브라우저 주소 표시줄의 URL. URL 형식은 다음과 같습니다: `https://publisher.xsolla.com/<merchant_id>/projects/<project_id>`.
    - `api_key`는 생성 시에만 관리자 페이지에 표시되며 귀하의 측에서 안전하게 저장해야 합니다. API 키는 다음 섹션에서 생성할
    수 있습니다:
       - [Company settings > API keys](https://publisher.xsolla.com/0/settings/api_key)   - [Project settings > API key](https://publisher.xsolla.com/0/projects/0/edit/api_key)

    <div class="notice"><b>알림</b><br><br>필수 API 호출에 <code>project_id</code> 경로
    매개 변수가 포함되지 않은 경우, 모든 회사 프로젝트에 대해 유효한 API 키를 사용하여 인증하십시오.</div>


    API 키 작업에 대한 자세한 내용은 [API 참조
    문서](/ko/api/getting-started/#api_keys_overview)를 참조하십시오.


    ## 게스트 액세스 지원을 통한 인증


    이 `AuthForCart` 인증 체계는 장바구니 구매에 사용되며 두 가지 모드를 지원합니다.


    1. **Authentication with a user's JWT.** 토큰은 `Authorization` 헤더에 다음 형식으로
    전달됩니다: `Authorization: Bearer <user_JWT>`, 여기에서 `<user_JWT>`는 사용자 토큰입니다. 이
    토큰은 사용자를 식별하고 개인화된 데이터에 대한 액세스를 제공합니다. 또는 [결제 UI를 여는
    토큰](/ko/api/pay-station/token/create-token)을 사용할 수 있습니다.


    2. **Simplified mode without Authorization header.** 이 모드는 미인증 사용자만 사용하며,
    [게임 키
    판매](/ko/doc/buy-button/how-to/set-up-authentication/#guides_buy_button_selling_items_not_authenticated_users)에만
    적용할 수 있습니다. 토큰 대신 요청에 다음 헤더를 포함해야 합니다.
       - 요청 ID와 `x-unauthorized-id`
       - Base64로 인코딩된 사용자의 이메일 주소와 `x-user`

    ## 유용한 링크


    - [상호작용 모델별 API 호출](https://developers.xsolla.com/ko/api/catalog/)

    - [엔드포인트 유형](https://developers.xsolla.com/ko/api/catalog/)

    - [오류 처리](https://developers.xsolla.com/ko/api/catalog/)

    - [API 키](https://developers.xsolla.com/ko/api/catalog/)


    # 핵심 엔티티 구조


    모든 유형의 아이템(가상 아이템, 번들, 인게임 재화, 키)은 유사한 데이터 구조를 사용합니다. 기본 구조를 이해하면 API 작업이
    간소화되고 문서를 더 쉽게 탐색할 수 있습니다.


    <div class="note"><b>참고</b><br><br>일부 호출에는 추가 입력란이 포함될 수 있지만 기본 구조는 변경되지
    않습니다.</div>


    **식별**


    - `merchant_id`- [관리자 페이지](https://publisher.xsolla.com/)의 회사 ID

    - `project_id` - 관리자 페이지의 프로젝트 ID

    - `sku` - 프로젝트 내의 고유한 아이템 SKU


    **Store display**


    - `name` - 아이템 이름

    - `description` - 아이템 설명

    - `image_url` - 이미지 URL

    - `is_enabled` - 아이템 가용성

    - `is_show_in_store` - 카탈로그에 아이템이 표시되는지 여부


    카탈로그에서 아이템 가용성 관리에 대한 자세한 정보는
    [문서](/ko/items-catalog/catalog-features/items-availability/)를 참조하세요.


    **Organization**


    - `type` - 아이템 유형, 예를 들어 가상 아이템(`virtual_item`) 또는 번들(`bundle`)

    - `groups` - 아이템이 속한 그룹

    - `order` - 카탈로그 내 디스플레이 순서


    **판매 조건**


    - `prices` - 실제 화폐 또는 인게임 재화로 된 가격

    - `limits` - 구매 한도

    - `periods` - 가용 기간

    - `regions` - 지역 제한


    **핵심 엔티티 구조 예시:**


    ```json

    {
      "attributes": [],
      "bundle_type": "virtual_currency_package",
      "content": [
        {
          "description": {
            "en": "Main in-game currency"
          },
          "image_url": "https://.../image.png",
          "name": {
            "en": "Crystals",
            "de": "Kristalle"
          },
          "quantity": 500,
          "sku": "com.xsolla.crystal_2",
          "type": "virtual_currency"
        }
      ],
      "description": {
        "en": "Crystals x500"
      },
      "groups": [],
      "image_url": "https://.../image.png",
      "is_enabled": true,
      "is_free": false,
      "is_show_in_store": true,
      "limits": {
        "per_item": null,
        "per_user": null,
        "recurrent_schedule": null
      },
      "long_description": null,
      "media_list": [],
      "name": {
        "en": "Medium crystal pack"
      },
      "order": 1,
      "periods": [
        {
          "date_from": null,
          "date_until": "2020-08-11T20:00:00+03:00"
        }
      ],
      "prices": [
        {
          "amount": 20,
          "country_iso": "US",
          "currency": "USD",
          "is_default": true,
          "is_enabled": true
        }
      ],
      "regions": [],
      "sku": "com.xsolla.crystal_pack_2",
      "type": "bundle",
      "vc_prices": []
    }

    ```


    # 기본 구매 흐름


    엑솔라 API를 사용하면 아이템 카탈로그 검색, 장바구니 관리, 주문 생성 및 상태 추적을 포함한 인게임 스토어 로직을 구현할 수
    있습니다. 통합 시나리오에 따라 API 호출은 **Admin**와 **Catalog** 하위 섹션으로 구분되며, 서로 다른 [인증
    방식](/ko/api/catalog/section/authentication)을 사용합니다.


    다음 예시는 아이템 생성부터 구매까지 스토어 설정 및 운영을 위한 기본 흐름을 보여줍니다.


    ## 아이템 및 그룹 생성(관리자)


    가상 아이템, 번들, 인게임 재화와 같은 스토어의 아이템 카탈로그를 생성합니다.


    예시 API 호출:

    - [가상 아이템
    생성](/ko/api/catalog/virtual-items-currency-admin/admin-create-virtual-item)

    - [번들 생성](/ko/api/catalog/bundles-admin/admin-create-bundle)

    - [인게임 재화
    생성](/ko/api/catalog/virtual-items-currency-admin/admin-create-virtual-currency)


    ## 프로모션, 체인 및 한도 설정(관리자)


    할인, 보너스, 일일 보상 또는 혜택 체인과 같은 사용자 획득 및 수익화 도구를 구성합니다.


    예시 API 호출:

    - [보너스 프로모션 생성](/ko/api/liveops/promotions-bonuses/create-bonus-promotion)

    - [일일 보상 생성](/ko/api/liveops/daily-chain-admin/admin-create-daily-chain)

    - [고유 카탈로그 혜택 프로모션
    생성](/ko/api/liveops/promotions-unique-catalog-offers/admin-create-unique-catalog-offer)


    ## 아이템 정보 가져오기(클라이언트)


    애플리케이션에서 아이템 디스플레이를 구성합니다.


    <div class="notice">
      <b>알림</b><br><br>
        사용자 카탈로그를 구축하는 데 관리자 하위 섹션의 API 호출을 사용하지 마십시오. 이러한 API 호출에는 <a href="https://developers.xsolla.com/ko/api/getting-started/#api_rate_limits" target="_blank">속도 제한</a>이 있으며 사용자 트래픽을 위한 것이 아닙니다.
    </div>


    <br>


    API 호출 예시:

    - [가상 아이템 목록
    가져오기](/ko/api/catalog/virtual-items-currency-catalog/get-virtual-items)

    - [아이템 그룹 목록
    가져오기](/ko/api/catalog/virtual-items-currency-catalog/get-item-groups)

    - [번들 목록 가져오기](/ko/api/catalog/bundles-catalog/get-bundle-list)

    - [판매 가능한 아이템 목록 가져오기](/ko/api/catalog/common-catalog/get-sellable-items)


    <div class="note">
      <b>참고</b><br><br>
        기본적으로 카탈로그 API 호출은 요청 시점에 스토어에서 현재 사용 가능한 아이템을 반환합니다. 아직 사용 가능하지 않거나 더 이상 사용 가능하지 않은 아이템을 검색하려면 카탈로그 요청에 <code>"show_inactive_time_limited_items": 1</code> 매개 변수를 포함하십시오.
    </div>


    ## 아이템 판매


    다음 방법을 사용하여 아이템을 판매할 수 있습니다:

    - 빠른 구매 - 하나의 SKU를 여러 번 판매합니다.

    - 장바구니 구매 - 사용자가 장바구니에 아이템을 추가하고, 제거하고, 수량을 업데이트합니다.


    아이템이 실제 돈 대신 인게임 재화로 구매된 경우, [인게임 재화로 구매한 특정 아이템으로 주문
    생성](/ko/api/catalog/virtual-payment/create-order-with-item-for-virtual-currency)
    API 호출을 사용하십시오. 결제 UI는 필요하지 않으며, API 호출이 실행될 때 청구가 처리됩니다.


    무료 아이템 구매의 경우, [특정 무료 아이템으로 주문
    생성](/ko/api/catalog/free-item/create-free-order-with-item) API 호출 또는 [무료
    장바구니로 주문 생성](/ko/api/catalog/free-item/create-free-order) API 호출을 사용하십시오. 결제
    UI는 필요하지 않으며, 주문은 즉시 <code>done</code> 상태로 설정됩니다.


    ### 빠른 구매


    클라이언트 측 API 호출을 사용하여 [특정 아이템으로 주문
    생성](/ko/api/catalog/payment-client-side/create-order-with-item)을 수행합니다. 호출은
    결제 UI를 열기 위한 토큰을 반환합니다.


    <div class="note">
      <b>참고</b><br><br>
        할인 정보는 결제 UI에서만 사용자에게 제공됩니다. 프로모션 코드는 지원되지 않습니다.
    </div>


    ### 장바구니 구매


    장바구니 설정 및 구매는 클라이언트 또는 서버 측에서 수행할 수 있습니다.


    **클라이언트에서 장바구니 설정 및 구매**


    아이템 추가 및 제거 로직을 직접 구현하십시오. 장바구니 설정을 위한 API 호출 전에는 구매에 적용될 프로모션에 대한 정보를 알 수
    없습니다. 이는 총 비용과 추가 보너스 아이템의 세부 사항을 알 수 없음을 의미합니다.


    다음 장바구니 로직을 구현하십시오:

    1. 플레이어가 장바구니를 채운 후, [아이템으로 장바구니
    채우기](/ko/api/shop-builder/operation/cart-fill/) API 호출을 사용하십시오. 호출은 선택한 아이템에
    대한 현재 정보를 반환합니다 (할인 전후 가격, 보너스 아이템).

    2. 사용자 작업에 따라 장바구니 내용을 업데이트하십시오:
       - 아이템을 추가하거나 아이템 수량을 변경하려면 [장바구니 ID로 장바구니 아이템 업데이트](/ko/api/shop-builder/operation/put-item-by-cart-id/) API 호출을 사용하십시오.
       - 아이템을 제거하려면 [장바구니 ID로 장바구니 아이템 삭제](/ko/api/shop-builder/operation/delete-item-by-cart-id/) API 호출을 사용하십시오.

    <div class="note">
      <b>참고</b><br><br>
        현재 장바구니 상태를 얻으려면 현재 사용자의 장바구니 가져오기 API 호출을 사용하십시오.
    </div>


    3. [현재 장바구니의 모든 아이템으로 주문 생성](/ko/api/shop-builder/operation/create-order/)
    API 호출을 사용하십시오. 호출은 주문 ID와 결제 토큰을 반환합니다. 새로 생성된 주문은 기본적으로 <code>new</code>
    상태로 설정됩니다.


    **서버에서 장바구니 설정 및 구매**


    이 설정 옵션은 장바구니 설정에 더 많은 시간이 걸릴 수 있습니다. 장바구니의 각 변경 사항은 API 호출을 동반해야 하기 때문입니다.


    다음 장바구니 로직을 구현하십시오:

    1. 플레이어가 장바구니를 채운 후, [아이템으로 장바구니 채우기](/ko/api/catalog/cart-server-side) API
    호출을 사용하십시오. 호출은 선택한 아이템에 대한 현재 정보를 반환합니다(할인 전후 가격, 보너스 아이템).

    2. [현재 장바구니의 모든 아이템으로 주문 생성](/ko/api/shop-builder/operation/create-order/)
    API 호출을 사용하십시오. 호출은 주문 ID와 결제 토큰을 반환합니다. 새로 생성된 주문은 기본적으로 <code>new</code>
    상태로 설정됩니다.


    ## 결제 UI 열기


    반환된 토큰을 사용하여 새 창에서 결제 UI를 엽니다. 결제 UI를 여는 다른 방법은
    [문서](/ko/payment-ui-and-flow/payment-ui/how-to-open-payment-ui/#open_payment_ui)에
    설명되어 있습니다.


    | 작업                          |
    엔드포인트                                                                  |

    |:--------------------------------|:--------------------------------------------------------------------------|

    | 프로덕션 환경에서 열기. |
    <code>https://secure.xsolla.com/paystation4/?token={token}</code>         |

    | 샌드박스 모드에서 열기.           |
    <code>https://sandbox-secure.xsolla.com/paystation4/?token={token}</code> |


    <div class="note">
      <b>참고</b><br><br>
        개발 및 테스트 중에는 샌드박스 모드를 사용하세요. 테스트 구매는 실제 계정에 청구되지 않습니다. <a href="https://developers.xsolla.com/ko/dev-resources/testing/test-cards/">테스트 은행 카드</a>를 사용할 수 있습니다.

        첫 번째 실제 결제가 이루어진 후에는 엄격한 샌드박스 결제 정책이 적용됩니다. 샌드박스 모드에서의 결제는 [관리자 페이지 > 회사 설정 > 사용자](https://publisher.xsolla.com/0/settings/users)에 지정된 사용자에게만 가능합니다.

        실제 통화로 인게임 재화와 아이템을 구매하려면 엑솔라와의 라이선스 계약을 체결해야 합니다. 이를 위해 [관리자 페이지](https://publisher.xsolla.com/)에서 **Agreements & Taxes > Agreements**으로 이동하여 계약 양식을 작성하고 확인을 기다리세요. 계약 검토에는 최대 3영업일이 소요될 수 있습니다.
    </div>


    샌드박스 모드를 활성화하거나 비활성화하려면 빠른 구매 및 장바구니 구매 요청에서 `sandbox` 매개 변수의 값을 변경하세요.
    기본적으로 샌드박스 모드는 꺼져 있습니다.


    가능한 주문 상태:

    - `new` - 주문 생성됨

    - `paid` - 결제 완료됨

    - `done` - 아이템 전달됨

    - `canceled` - 주문 취소됨

    - `expired` -주문 만료됨


    다음 방법 중 하나를 사용하여 주문 상태를 추적하세요:

    - [서버에 구성된
    웹훅](/ko/virtual-goods/own-ui/server-side-token-generation/set-up-order-tracking/#payments_integration_order_tracking)

    - [짧은
    폴링](/ko/virtual-goods/own-ui/client-side-token-generation/set-up-order-tracking/#guides_shop_builder_integrate_store_get_order_status_via_short_polling)

    - [WebSocket
    API](/ko/virtual-goods/own-ui/client-side-token-generation/set-up-order-tracking/#guides_shop_builder_integrate_store_get_order_status_via_websocket_api)


    ## 유용한 링크


    - 인증

    - [상호작용 모델에 따른 API 호출](/ko/api/catalog/section/authentication)

    - [결제 테스트](/ko/dev-resources/testing/general-info/#general_overview)

    - [주문 상태 추적
    설정](/ko/virtual-goods/own-ui/client-side-token-generation/set-up-order-tracking/?link=200-api#payments_integration_order_tracking)

    - [웹훅](/ko/webhooks/overview)

    - [속도 제한](/ko/api/login/rate-limits)

    - [오류 처리](/ko/api/getting-started/#api_errors_handling)

    - [API 키](/ko/api/getting-started/#api_keys_overview)


    # 페이지 매김


    대량의 레코드를 반환하는 API 호출(예: 카탈로그 작성 시)은 데이터를 페이지 단위로 반환합니다. 페이지 매김은 단일 API 응답에서
    반환되는 항목 수를 제한하고 이후 페이지를 순차적으로 검색할 수 있는 메커니즘입니다.


    반환되는 아이템 수를 제어하기 위해 다음 매개 변수를 사용하세요:


    - `limit` - 페이지당 항목 수

    - `offset` - 페이지의 첫 번째 항목의 인덱스(번호는 0부터 시작)

    - `has_more` - 다른 페이지가 있는지 여부를 나타냄

    - `total_items_count` - 총 항목 수


    요청 예시:


    ```

    GET /items?limit=20&offset=40

    ```


    응답 예시:


    ```json

    {
      "items": [...],
      "has_more": true,
      "total_items_count": 135
    }

    ```


    응답이 `has_more = false`를 반환할 때까지 후속 요청을 보내는 것이 좋습니다.


    # 날짜 및 시간 형식


    날짜 및 시간 값은 [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) 형식으로 전달됩니다.


    다음이 지원됩니다:


    - UTC 오프셋

    - 항목 표시 시간 제한이 없는 경우 `null` 값

    - 일부 입력란에서 사용되는 [Unix 타임스탬프](https://www.unixtimestamp.com/)(초 단위)


    형식: `YYYY-MM-DDTHH:MM:SS±HH:MM`


    예시: `2026-03-16T10:00:00+03:00`


    # 현지화


    엑솔라는 항목 이름 및 설명과 같은 사용자 대상 입력란의 현지화를 지원합니다. 현지화된 값은 언어 코드를 키로 사용하는 개체로
    전달됩니다. 지원되는 언어의 전체 목록은
    [문서](/ko/doc/shop-builder/references/supported-languages/)에서 확인할 수 있습니다.


    **Supported fields**


    다음 매개 변수에 대해 현지화를 지정할 수 있습니다:


    - `name`

    - `description`

    - `long_description`


    **Locale format**


    로케일 키는 다음 형식 중 하나로 지정할 수 있습니다:


    - 두 글자 언어 코드: `en`, `ru`

    - 다섯 글자 언어 코드: `en-US`, `ru-RU`, `de-DE`


    **Examples**


    두 글자 언어 코드 예시:


    ```json

    {
      "name": {
        "en": "Starter Pack",
        "ru": "Стартовый набор"
      }
    }

    ```


    다섯 글자 언어 코드 예시:


    ```json

    {
      "description": {
        "en-US": "Premium bundle",
        "de-DE": "Premium-Paket"
      }
    }

    ```


    # 오류 응답 형식


    오류가 발생하면, API는 HTTP 상태와 JSON 응답 본문을 반환합니다. 스토어 관련 오류의 전체 목록은
    [문서](/ko/dev-resources/references/errors/store-errors/)에서 확인할 수 있습니다.


    **Response example:**


    ```json

    {
      "errorCode": 1102,
      "errorMessage": "Validation error",
      "statusCode": 422,
      "transactionId": "c9e1a..."
    }

    ```


    - `errorCode` - 오류 코드.

    - `errorMessage` - 짧은 오류 설명.

    - `statusCode` - HTTP 응답 상태.

    - `transactionId` - 요청 ID. 일부 경우에만 반환됩니다.

    - `errorMessageExtended` - 요청 매개 변수와 같은 추가 오류 세부 정보. 일부 경우에만 반환됩니다.


    **Extended response example:**


    ```json

    {
      "errorCode": 7001,
      "errorMessage": "Chain not found",
      "errorMessageExtended": {
        "chain_id": "test_chain_id",
        "project_id": "test_project_id",
        "step_number": 2
      },
      "statusCode": 404
    }

    ```


    **Common HTTP status codes**


    - `400` - 잘못된 요청

    - `401` - 인증 오류

    - `403` - 권한 부족

    - `404` - 리소스를 찾을 수 없음

    - `422` - 유효성 검사 오류

    - `429` - 속도 제한 초과


    **Recommendations**


    - HTTP 상태와 응답 본문을 함께 처리하세요.

    - `errorCode`를 사용하여 애플리케이션 로직과 관련된 오류를 처리하세요.

    - `transactionId`를 사용하여 오류 분석 시 요청을 더 빠르게 식별하세요.
  version: 2.0.0
  title: LiveOps API
servers:
  - url: https://store.xsolla.com/api
tags:
  - name: promotion-limits-overview
    x-displayName: 개요
    description: >-
      프로모션 사용 한도를 통해 특정 사용자가 프로모션을 사용할 수 있는 횟수를 제한할 수 있습니다. 또한 예약된 한도 재설정을 구성할 수
      있습니다.


      한도는 엑솔라 측에 저장되며, [관리자
      페이지](https://publisher.xsolla.com/0/projects/0/storefront/promotions) 또는
      다음 API 호출의 `limits` 개체를 통해 프로모션 설정에서 구성됩니다:

      * [아이템 할인 프로모션
      생성](/ko/api/liveops/promotions-discounts/create-item-promotion/) 또는 [할인
      프로모션 업데이트](/ko/api/liveops/promotions-discounts/update-item-promotion)

      * [보너스 프로모션
      생성](/ko/api/liveops/promotions-bonuses/create-bonus-promotion/) 또는 [보너스
      프로모션 업데이트](/ko/api/liveops/promotions-bonuses/update-bonus-promotion)


      한도 정보는 다음 API 호출에서 아이템 카탈로그를 가져올 때 `items.promotions.limits` 개체에 반환됩니다:

      * [가상 아이템 목록
      가져오기](/ko/api/catalog/virtual-items-currency-catalog/get-virtual-items/)

      * [인게임 재화 목록
      가져오기](/ko/api/catalog/virtual-items-currency-catalog/get-virtual-currency/)

      * [인게임 재화 패키지 목록
      가져오기](/ko/api/catalog/virtual-items-currency-catalog/get-virtual-currency-package/)

      * [번들 목록 가져오기](/ko/api/catalog/bundles-catalog/get-bundle-list/)

      * [게임 목록 가져오기](/ko/api/catalog/game-keys-catalog/get-games-list/)


      **한도** 그룹의 **관리** 하위 섹션에 있는 API 호출은 현재 한도의 상태를 검색하고 특정 사용자에 대해 업데이트할 수 있도록
      합니다. 예를 들어, 퀘스트 완료 후 카운터를 재설정하거나 남은 수량을 수동으로 조정할 수 있습니다.


      <div class="note">
        <b>참고</b><br><br>
        카탈로그에서 한도를 구성하는 자세한 정보는 <a href="/ko/liveops/promotion-tools/liveops-number-limits/">프로모션 사용 한도</a> 섹션을 참조하세요.
      </div>


      [limits.per_user](/ko/api/liveops/promotions-discounts/create-item-promotion#promotions-discounts/create-item-promotion/t=request&path=limits)
      - 단일 사용자가 프로모션을 사용할 수 있는 횟수에 대한 한도를 구성할 수 있습니다.


      인증되지 않은 사용자에게는 항상 최대 프로모션 사용 횟수가 표시됩니다.


      활성 한도가 적용된 사용자의 남은 프로모션 사용 횟수를 표시하려면 아이템 카탈로그를 요청할 때 사용자 인증 데이터를 전달하세요.


      일일, 주간 또는 월간으로 예약된 재설정 기간을 구성하려면 프로모션을
      [생성](/ko/api/liveops/promotions-discounts/create-item-promotion#promotions-discounts/create-item-promotion/t=request&path=limits/recurrent_schedule)하거나
      프로모션을
      [업데이트](/ko/api/liveops/promotions-discounts/update-item-promotion#promotions-discounts/update-item-promotion/t=request&path=limits/recurrent_schedule)할
      때 `limits.recurrent_schedule` 개체를 전달하세요.


      **Limit configuration and enforcement scenario**


      1. [아이템 할인 프로모션
      생성](/ko/api/liveops/promotions-discounts/create-item-promotion/) 또는 [보너스
      프로모션 생성](/ko/api/liveops/promotions-bonuses/create-bonus-promotion/) API
      호출을 사용하여 프로모션을 생성하고 `limits` 개체를 전달합니다.

      2. 인증되지 않은 사용자에 대해 카탈로그를 요청합니다 - 응답은 `items.promotions.limits` 개체에 최대 프로모션
      사용 횟수를 반환합니다.

      3. 사용자가 로그인합니다.

      4. 사용자의 인증 토큰으로 카탈로그를 요청합니다 - 응답은 활성 한도가 적용된 남은 사용 횟수를 반환합니다.

      5. 사용자가 프로모션 아이템을 선택하고 구매합니다.

      6. 결제가 성공적으로 완료되면 엑솔라는 `items.promotions.limits.per_user` 값을 업데이트합니다. 값이
      `0`에 도달하면, 해당 아이템은 카탈로그 API 호출에서 할인이나 보너스 없이 반환됩니다.

      7. **Management** 하위 섹션의 API 호출을 사용하여 한도를 업데이트할 수 있습니다:
         * [지정된 사용자의 모든 프로모션 한도 새로고침](/ko/api/liveops/user-limits-admin/reset-all-user-promotions-limit/) 또는 [특정 프로모션의 한도 새로고침](/ko/api/liveops/user-limits-admin/reset-user-promotion-limit/)
         * [특정 한도 값 설정](/ko/api/liveops/user-limits-admin/set-user-promotion-limit/)
         * [사용 가능 횟수 증가](/ko/api/liveops/user-limits-admin/add-user-promotion-limit/) 또는 [사용 가능 횟수 감소](/ko/api/liveops/user-limits-admin/remove-user-promotion-limit/)
      8. 사용자의 인증 토큰으로 다음 카탈로그 요청을 할 때 `items.promotions.limits`에서 업데이트된 한도 값을
      가져와 사용자에게 표시합니다.


      ![프로모션
      제한](https://cdn.xsolla.net/developers/current/images/api_docs/promotion-limit.svg)
  - name: promotions-overview
    x-displayName: 개요
    description: >-
      프로모션은 신규 사용자를 유치하고 매출을 높이기 위해 고안된 마케팅 도구입니다. 엑솔라 API를 사용하여 다음과 같은 프로모션을
      설정할 수 있습니다.


      * 할인 - 선택한 아이템의 가격을 인하.

      * 보너스 - 구매 시 사용자에게 제공되는 아이템.

      * 쿠폰 - 사용 시 하나 이상의 보너스 아이템을 받을 수 있는 코드.

      * 프로모션 코드 - 사용자가 보너스 아이템을 받거나, 특정 상품에 대해 할인을 받거나, 장바구니 전체에 대해 할인을 받을 수 있게
      해주는 코드. 사용자가 입력한 후에 사용 가능한 쿠폰과 달리, 프로모션 코드는 구매를 진행할 때(결제 시)에 사용됩니다.

      * 특별 혜택 - 고유한 혜택 코드를 입력한 사용자에게만 카탈로그에 표시되는 숨겨진 아이템. 코드를 입력하지 않으면 해당 아이템은
      표시되지 않습니다.


      할인 프로모션을 구성하는 예시 절차:

      1. [가상 아이템 및 인게임
      재화](/ko/api/catalog/virtual-items-currency-admin/admin-get-virtual-items-list/),
      [번들](/ko/api/catalog/bundles-admin/admin-create-bundle) 또는 [게임
      키](/ko/api/catalog/game-keys-admin) 그룹의 **관리자** 하위 섹션의 호출을 사용하여 아이템을
      생성합니다.

      2. [아이템 할인 프로모션
      생성](/ko/api/liveops/promotions-discounts/create-item-promotion/) 호출을 사용하여
      프로모션을 생성합니다. `items` 배열에서 필요한 아이템 SKU를 전달합니다.

      3. 프로모션 유효 기간을 설정합니다. 이를 위해 [아이템 할인 프로모션
      생성](/ko/api/liveops/promotions-discounts/create-item-promotion/) 또는 [아이템
      프로모션 업데이트](/ko/api/liveops/promotions-discounts/update-item-promotion/)
      메소드를 호출하고, `promotion_periods` 필드를 객체 배열로 전달합니다. 여기서  `date_from`은 유효 기간의
      시작일을, `date_until`은 종료일을 정의합니다.

      4. [아이템 프로모션
      업데이트](/ko/api/liveops/promotions-discounts/update-item-promotion/) 호출을
      사용하여 프로모션을 활성화합니다. `"is_enabled": true` 매개 변수를 전달합니다.

      5. 할인 가격을 포함하여 아이템 가격 정보를 가져오려면, [일반 >
      카탈로그](/ko/api/catalog/tag/common-catalog/), [가상 아이템 및 인게임 재화 >
      카탈로그](/ko/api/catalog/virtual-items-currency-catalog/get-virtual-items/),
      [번들 > 카탈로그](/ko/api/catalog/bundles-catalog/get-bundle-list/) 하위 섹션에서 아이템
      카탈로그를 가져오는 클라이언트 API 메소드를 호출합니다.


      ![프로모션 구성
      예시](https://cdn.xsolla.net/developers/current/images/api_docs/promo-overview.svg)


      프로모션 구성에 대한 자세한 내용은 참조 문서를 참조하십시오.

      *
      [할인](https://developers.xsolla.com/ko/liveops/promotion-tools/discounts/)

      * [보너스](https://developers.xsolla.com/ko/liveops/promotion-tools/bonuses/)

      * [쿠폰](https://developers.xsolla.com/ko/liveops/promotion-tools/coupons/)

      * [프로모션
      코드](https://developers.xsolla.com/ko/liveops/promotion-tools/promo-codes/)

      * [고유 카탈로그
      혜택](https://developers.xsolla.com/ko/liveops/promotion-tools/unique-offer/)
  - name: promotions-common
    x-displayName: 일반 API 호출
    description: 이 하위 섹션에서 API 메소드를 호출하여 다양한 프로모션 유형을 관리할 수 있습니다.
  - name: promotions-coupons
    x-displayName: 쿠폰
    description: |-
      쿠폰 프로모션을 구성하고 관리하려면 이 하위 섹션의 API 메소드를 호출합니다.

      <div class="note">
       <p><b>참고</b></p>
        <p>쿠폰에 대한 자세한 정보는 <a href="https://developers.xsolla.com/ko/liveops/promotion-tools/coupons/">참조 문서</a>를 참조하십시오.</p>
      </div>
  - name: promotions-promo-codes
    x-displayName: 프로모션 코드
    description: |-
      이 하위 섹션의 API 메소드를 호출하여 프로모션 코드 프로모션을 구성하고 관리합니다.

      <div class="note">
       <p><b>참고</b></p>
        <p>프로모션 코드에 대한 자세한 정보는 <a href="https://developers.xsolla.com/ko/liveops/promotion-tools/promo-codes/">참조 문서</a>를 참조하십시오.</p>
      </div>
  - name: promotions-unique-catalog-offers
    x-displayName: 고유 카탈로그 혜택
    description: |-
      고유 카탈로그 혜택을 구성하고 관리하려면 이 하위 섹션의 API 메소드를 호출합니다.

      <div class="note">
       <p><b>참고</b></p>
        <p>고유 카탈로그 혜택에 대한 자세한 정보는 <a href="https://developers.xsolla.com/ko/liveops/promotion-tools/unique-offer/">참조 문서</a>를 참조하십시오.</p>
      </div>
  - name: promotions-discounts
    x-displayName: 할인
    description: |-
      할인 프로모션을 구성하고 관리하려면 이 하위 섹션의 API 메소드를 호출합니다.

      <div class="note">
       <p><b>참고</b></p>
        <p>할인에 대한 자세한 정보는 <a href="https://developers.xsolla.com/ko/liveops/promotion-tools/discounts/">참조 문서</a>를 참조하십시오.</p>
      </div>
  - name: promotions-bonuses
    x-displayName: 보너스
    description: |-
      보너스 프로모션을 구성하고 관리하려면 이 하위 섹션의 API 메소드를 호출합니다.

      <div class="note">
       <p><b>참고</b></p>
        <p>보너스에 대한 자세한 정보는 <a href="https://developers.xsolla.com/ko/liveops/promotion-tools/bonuses/">참조 문서</a>를 참조하십시오.</p>
      </div>
  - name: personalized-catalog
    x-displayName: 개인 맞춤형 카탈로그
    description: >-
      사용자 맞춤 설정을 통해 특정 인증된 사용자에게만 아이템 카탈로그를 표시하고 프로모션을 적용할 조건을 지정할 수 있습니다. 조건은
      사용자 특성에 기반하여 정의되며, 특정 사용자에게 가장 관련성 있는 아이템과 프로모션을 제공할 수 있습니다.


      다음과 같은 사용자 맞춤 설정 유형이 가능합니다:


      * [엑솔라 측 사용자 맞춤
      설정](/ko/liveops/promotion-tools/personalization/#guides_personalization_on_xsolla_side).
      사용자 맞춤 설정 규칙과 로직은 엑솔라 측에서 구성되고 저장됩니다. 사용자 특성을 전달하면 엑솔라가 이를 사용하여 개인 설정된
      카탈로그를 생성합니다.

      * [파트너 측 사용자 맞춤
      설정](/ko/liveops/promotion-tools/personalization/#guides_personalization_on_partner_side).
      사용자 맞춤 설정 규칙과 로직을 파트너 측에서 구성하고 특정 사용자에 대한 최종 카탈로그 페이로드를 엑솔라에 전송합니다.


      <div class="note">
        <b>참고</b><br><br>
        하나의 사용자 맞춤 설정 유형만 사용할 수 있습니다. 변경하려면
        <a href="/ko/liveops/promotion-tools/personalization/#guides_personalization_change">지침</a>을 따르십시오.
      </div>


      엑솔라 API를 사용하여 엑솔라 측에서 사용자 맞춤 설정을 구성하는 방법:


      1. [가상 아이템 및 인게임
      재화](/ko/api/catalog/virtual-items-currency-admin/admin-get-virtual-items-list/),
      [번들](/ko/api/catalog/bundles-admin/admin-create-bundle) 또는 [게임
      키](/ko/api/catalog/game-keys-admin) 그룹의 **Admin** 하위 섹션의 API 호출을 사용하여 아이템을
      생성합니다.

      2. [엑솔라 로그인 API를 사용하여 사용자 특성을
      설정](/ko/liveops/promotion-tools/personalization/#web_shop_guide_personalization_setting_attributes)하고,
      게임 내에서 변경이 발생할 때마다 엑솔라에 데이터를 업데이트하여 동기화 상태를 유지합니다.

      3. 아이템 또는 프로모션에 대한 사용자 맞춤 설정을 구성합니다:
          * 아이템 카탈로그를 개인 설정하려면 [카탈로그 필터 규칙 생성](/ko/api/liveops/personalized-catalog/create-filter-rule) API 호출을 사용하여 카탈로그 표시 규칙을 정의합니다:
              * [attribute_conditions](/ko/api/liveops/personalized-catalog/create-filter-rule#personalized-catalog/create-filter-rule/t=request&path=attribute_conditions) 목록에서 사용자 특성에 기반하여 아이템 가용성을 결정하는 조건을 지정합니다.
              * [items](/ko/api/liveops/personalized-catalog/create-filter-rule#personalized-catalog/create-filter-rule/t=request&path=items) 목록에서 사용자의 특성이 지정된 조건과 일치할 경우 표시되어야 하는 아이템 목록을 제공합니다.
          * 개인 설정한 프로모션을 구성하려면 [필요한 프로모션 유형에 대한 생성 및 업데이트 API 호출](/ko/api/liveops/promotions-discounts/create-item-promotion)을 사용합니다. [attribute_conditions](/ko/api/liveops/promotions-discounts/create-item-promotion) 목록에서 사용자 특성에 기반하여 프로모션 가용성을 결정하는 조건을 지정합니다.

      4. 사용자 특성을 포함한 [사용자
      JWT](/ko/api/login/getting-user-token?#getting-user-token)를 [카탈로그 검색 API
      호출](https://developers.xsolla.com/ko/api/catalog/virtual-items-currency-catalog/get-virtual-items)에
      전달하여 개인 설정된 카탈로그를 받습니다.


      **아이템 카탈로그에 대한 엑솔라 측 사용자 맞춤 설정 구성 및 적용 순서:**


      ![아이템 카탈로그에 대한 사용자 맞춤
      설정](https://cdn.xsolla.net/developers/current/images/api_docs/personalization-catalog.png)


      **프로모션에 대한 엑솔라 측 사용자 맞춤 설정 구성 및 적용 순서:**


      ![프로모션에 대한 사용자 맞춤
      설정](https://cdn.xsolla.net/developers/current/images/api_docs/personalization-liveops.png)


      <div class="note">

      <b>참고</b><br><br>

      상세 정보는 다음에서 제공됩니다:

      <ul>
        <li><a href="/ko/liveops/promotion-tools/personalization/">엑솔라 측 및 파트너 측 사용자 맞춤 설정 구성 가이드</a></li>
        <li><a href="/ko/doc/shop-builder/tutorials/personalization-tutorial/">엑솔라 측 아이템 카탈로그 사용자 맞춤 설정에 대한 단계별 튜토리얼</a></li>
      </ul>

      </div>
  - name: user-limits-admin
    x-displayName: 관리
  - name: reward-chain-value-points-overview
    x-displayName: 개요
    description: >-
      보상 체인은 사용자가 인게임 재화를 사용하여 스토어에서 구매하도록 유도합니다. 구매할 때마다 사용자는 가치 포인트를 획득하고 보상
      체인을 따라 진행합니다. 사용자가 클랜에 소속되어 있는 경우, 해당 사용자의 구매 내역은 클랜 전체에 가치 포인트로 기여합니다. 보상
      체인 설정에 대한 자세한 내용은 [보상
      시스템](https://developers.xsolla.com/ko/liveops/promotion-tools/reward-system/)
      섹션을 참조하십시오.


      보상 체인을 구성하려면 **Admin** 하위 섹션의 API 호출을 사용하십시오. 체인을 표시하고 보상을 수령하려면
      **Client** 하위 섹션의 API 호출을 사용하십시오. 클랜 보상 체인을 관리하려면 **Clans client** 하위 섹션의
      API 호출을 사용하십시오.


      <b>보상 체인 구성 절차에 대한 예시:</b>


      1. [가상 아이템 및
      통화](https://developers.xsolla.com/ko/api/catalog/virtual-items-currency-overview)
      또는 [번들](https://developers.xsolla.com/ko/api/catalog/bundles-admin) 그룹의
      **Admin** 하위 섹션에 있는 API 호출을 사용하여 아이템을 생성합니다.

      2. [가치 포인트
      생성](https://developers.xsolla.com/ko/api/liveops/reward-chain-value-points-admin/admin-create-value-points)
      API 호출을 사용하여 가치 포인트를 생성합니다.

      3. [아이템에 가치 포인트
      설정](https://developers.xsolla.com/ko/api/liveops/reward-chain-value-points-admin/admin-set-items-value-point-reward)
      API 호출을 사용하여 아이템에 가치 포인트를 할당합니다. 사용자는 해당 아이템을 구매한 후 가치 포인트를 받게 됩니다.

      4. [보상 체인
      생성](https://developers.xsolla.com/ko/api/liveops/reward-chain-value-points-admin/admin-create-reward-chain)
      API 호출을 사용하여 체인을 생성합니다. 체인을 활성화하려면 `is_enabled: true` 매개 변수를 전달하십시오.

      5. 보상 체인 표시 기능을 구현합니다. 이를 위해 [현재 사용자의 보상 체인
      가져오기](https://developers.xsolla.com/ko/api/liveops/reward-chain-client/get-reward-chains-list)
      API 호출을 사용하여 사용 가능한 체인 목록을 요청합니다. 응답에는 단계 및 상태와 함께 모든 활성화된 체인이 포함됩니다.

      6. 가치 포인트 잔액 표시 기능을 구현합니다. 이를 위해 [현재 사용자의 가치 포인트 잔액
      조회](https://developers.xsolla.com/ko/api/liveops/reward-chain-client/get-user-reward-chain-balance)
      API 호출을 사용합니다.

      7. 단계별 보상 수령을 구현합니다. 이를 위해 [단계별 보상
      수령](https://developers.xsolla.com/ko/api/liveops/reward-chain-client/claim-user-reward-chain-step-reward)
      API 호출을 사용합니다.

      8. [웹훅](https://developers.xsolla.com/ko/webhooks/section/overview) 등을
      사용하여 주문 상태 추적을 구성하고, 청구된 보상에 대한 데이터를 신속하게 수신하여 사용자에게 보상을 지급합니다.


      ![보상 체인 구성
      절차](https://cdn.xsolla.net/developers/current/images/api_docs/reward-chains-and-value-points-overview.svg)
  - name: reward-chain-value-points-admin
    x-displayName: 관리자
  - name: reward-chain-client
    x-displayName: 클라이언트
  - name: clan-reward-chain-client
    x-displayName: 클랜 클라이언트
  - name: daily-chain-overview
    x-displayName: 개요
    description: >-
      일일 보상은 사용자가 매일 스토어에 로그인하여 무료 아이템을 받도록 유도합니다. 하루를 건너뛸 경우의 동작은 [체인
      유형](/ko/api/liveops/daily-chain-admin/admin-create-daily-chain#daily-chain-admin/admin-create-daily-chain/t=request&path=&oneof=0/type)에
      따라 달라집니다. 일일 보상이 올바르게 작동하려면 [사용자
      인증](/ko/api/catalog#section/Authentication)을 구성해야 합니다. 인증되지 않은 사용자는 전체 일일
      리워드 체인을 볼 수는 있지만 보상을 수령할 수는 없습니다. 일일 보상 구성에 대한 자세한 내용은 [일일
      보상](/ko/liveops/promotion-tools/daily-rewards/) 섹션을 참조해 주세요.


      체인은 **관리자** 하위 섹션의 API 호출을 사용하여 구성합니다. 보상을 지급하려면 **클라이언트** 하위 섹션의 API 호출을
      사용합니다.


      일일 체인 구성 시나리오:


      1. **관리자** 하위 섹션의 [가상아이템 및 인게임
      재화](/ko/api/catalog/virtual-items-currency-admin/admin-get-virtual-items-list/)
      또는 [번들](/ko/api/catalog/bundles-admin/admin-create-bundle) 그룹에 있는 API 호출을
      사용하여 아이템을 생성합니다.

      2. [일일 보상 생성](/ko/api/liveops/daily-chain-admin/admin-create-daily-chain)
      API 호출을 사용하여 체인을 생성합니다.

      3. `"is_enabled": true` 매개 변수를 전달하여 [일일 보상
      생성](/ko/api/liveops/daily-chain-admin/admin-create-daily-chain/) API 호출로
      체인을 활성화합니다.

      4. [현재 사용자의 일일 보상
      가져오기](/ko/api/liveops/daily-chain-client/get-daily-chains-list) API 호출을
      사용하고 [사용자
      JWT](/ko/api/catalog/section/authentication/authentication-using-user's-jwt)를
      전달하여 사용 가능한 체인 목록을 요청합니다. 응답에는 모든 활성 체인과 해당 단계 및 상태가 포함됩니다.

      5. [웹훅](/ko/webhooks/section/osnovnye-polozheniya)을 통해 아이템 지급을 설정합니다.

      6. [일일 보상 지급
      단계](/ko/api/liveops/daily-chain-client/claim-user-daily-chain-step-reward)
      API 호출을 사용하고 `daily_chain_id` 및 `step_number`를 전달하여 사용자에게 일일 보상을 지급합니다.


      ![일일
      보상](https://cdn.xsolla.net/developers/current/images/api_docs/daily-rewards.svg)
  - name: daily-chain-admin
    x-displayName: 관리자
  - name: daily-chain-client
    x-displayName: 클라이언트
  - name: offer-chains-overview
    x-displayName: 개요
    description: >-
      혜택 체인은 일련의 단계로 구성되며, 각 단계에는 활성 혜택의 일환으로 무료로 받거나 구매하는 아이템이 포함됩니다. 혜택 체인에는
      해당 체인 내에서만 이용할 수 있는 독점 아이템은 물론, 스토어 가격보다 할인된 가격의 아이템도 포함될 수 있습니다. 이 마케팅
      도구의 설정에 대한 자세한 내용은 [혜택
      체인](https://developers.xsolla.com/ko/liveops/promotion-tools/offer-chains/)
      섹션을 참조하십시오.


      혜택 체인을 구성하려면 **Admin** 하위 섹션의 API 호출을 사용하십시오. 체인을 표시하고 사용자가 수신하는 아이템을 처리하기
      위한 로직을 구현하려면 **Client** 하위 섹션의 API 호출을 사용하십시오.


      <b>혜택 체인 구성 절차에 대한 예시:</b>


      1. [가상 아이템 및 인게임
      재화](https://developers.xsolla.com/ko/api/catalog/virtual-items-currency-overview)
      또는 [번들](https://developers.xsolla.com/ko/api/catalog/bundles-admin) 그룹의
      **Admin** 하위 섹션에 있는 API 호출을 사용하여 아이템을 생성합니다.


      2. [혜택 체인
      생성](https://developers.xsolla.com/ko/api/liveops/offer-chain-admin/admin-create-offer-chain)API
      호출을 사용하여 체인을 생성합니다. 체인을 활성화하려면 `is_enabled: true` 매개 변수를 전달하십시오.


      3. 혜택 체인 표시 기능을 구현합니다. 이를 위해 [현재 사용자의 혜택 체인
      가져오기](https://developers.xsolla.com/ko/api/liveops/offer-chain-client/get-offer-chains-list)
      API 호출을 사용하여 사용 가능한 체인 목록을 요청합니다. 응답에는 단계 및 상태와 함께 모든 활성 체인이 포함됩니다.


      4. 사용자가 수신하는 아이템을 처리하는 로직을 구현합니다:

          - 해당 단계 아이템이 무료인 경우, [무료 혜택 체인 단계 청구](https://developers.xsolla.com/ko/api/liveops/offer-chain-client/claim-user-offer-chain-step-reward) API 호출을 사용하십시오. 요청에 `offer_chain_id`와 `step_number`를 전달하십시오.

          - 단계별 아이템이 결제된 경우, [결제된 혜택 체인 단계에 대한 주문 생성](https://developers.xsolla.com/ko/api/liveops/offer-chain-client/order-user-offer-chain-step-reward) API 호출을 사용하십시오. 요청에 `offer_chain_id`와 `step_number`를 전달하십시오. 응답에는 `order_id`와 결제 UI를 열 수 있는 토큰이 반환됩니다.

      5. 예를 들어,
      [웹훅](https://developers.xsolla.com/ko/webhooks/section/overview)을 사용하여 주문
      상태 추적을 설정하고, 청구되거나 구매된 상품에 대한 데이터를 신속하게 수신하여 사용자에게 해당 상품을 부여합니다.


      ![보상 체인 구성
      절차](https://cdn.xsolla.net/developers/current/images/api_docs/offer-chains-overview.svg)
  - name: offer-chain-admin
    x-displayName: 관리자
  - name: offer-chain-client
    x-displayName: 클라이언트
  - name: upsell-overview
    x-displayName: 개요
    description: >-
      업셀링은 사용자에게 부가 가치가 있는 아이템의 구매를 제안하는 판매 방식입니다. 예를 들어 다른 사용자 사이에서 수요가 매우 높은
      아이템일 수 있습니다. 업셀링 아이템에 대한 지역 제한도 구성할 수 있습니다. 자세한 내용은
      [업셀링](/ko/liveops/promotion-tools/upsell/) 섹션을 참조해 주세요.


      업셀링용으로 구성된 아이템 목록과 업셀링 상태(활성화 또는 비활성화)는 [프로젝트에서 업셀링 정보
      가져오기](/ko/api/liveops/upsell-admin/get-upsell-configurations-for-project-admin)
      API 메서드에서 반환합니다. 클라이언트 측에서는 [프로젝트에서 업셀링 아이템
      가져오기](/ko/api/liveops/upsell-client/get-upsell-for-project-client) API
      메서드가 아이템 목록을 반환하며, 구매 흐름의 적절한 지점에서 사용자에게 표시됩니다.


      업셀링 구성 시나리오:


      1. **관리자** 하위 섹션의 [가상 아이템 및 인게임
      재화](/ko/api/catalog/virtual-items-currency-admin/admin-get-virtual-items-list/),
      [번들](/ko/api/catalog/bundles-admin/admin-create-bundle) 또는 [게임
      키](/ko/api/catalog/game-keys-admin) 그룹에 있는 API 호출을 사용하여 아이템을 생성합니다.

      2. [업셀링 생성](/ko/api/liveops/upsell-admin/post-upsell) API 호출을 사용하여 업셀링을
      설정합니다. 필수 아이템의 SKU를 `items` 배열로 전달합니다.

      3. [프로젝트의 업셀링
      활성화/비활성화](/ko/api/liveops/upsell-admin/put-upsell-toggle-active-inactive)
      API 호출을 사용하여 프로젝트의 업셀링을 활성화합니다.

      4. 구매 흐름의 적절한 지점에서 [프로젝트에서 업셀링 아이템 목록
      가져오기](/ko/api/liveops/upsell-client/get-upsell-for-project-client) API 호출을
      사용하여 사용자에게 업셀링 제안을 표시합니다.

      5. 주문 결제를 위한 결제 UI가 열리도록 구현합니다. 예를 들어 [특정 장바구니의 모든 아이템으로 주문
      생성](/ko/api/catalog/payment-client-side/create-order-by-cart-id) API 호출을
      사용할 수 있습니다. 응답으로 결제 UI를 여는 토큰이 반환됩니다.

      6. 예를 들어 [웹훅](/ko/webhooks/overview)을 사용하여 주문 상태 추적을 구성하고, 결제가 완료된 아이템의
      데이터를 신속하게 받아 사용자에게 지급합니다.


      ![업셀링
      시나리오](https://cdn.xsolla.net/developers/current/images/api_docs/Upsell.svg)
  - name: upsell-admin
    x-displayName: 관리자
  - name: upsell-client
    x-displayName: 클라이언트
  - name: loyalty-program-overview
    x-displayName: 개요
    description: >-
      로열티 서비스 API를 사용하면 사용자의 로열티 포인트 잔액을 관리할 수 있습니다. 사용자의 현재 잔액을 조회하고 로열티 포인트를
      적립하거나 차감할 수 있습니다.


      로열티 서비스 API의 관리자 API 호출은 서버 측에서 이루어지며 기본 인증이 필요합니다.


      이 API의 기본 URL은 `https://loyalty-points.xsolla.com/`입니다.


      이 마케팅 도구 설정 방법에 대한 자세한 내용은 [로열티
      서비스](https://developers.xsolla.com/ko/liveops/promotion-tools/loyalty-as-service/)를
      참조해 주세요.
  - name: loyalty-program-admin
    x-displayName: 관리자
paths:
  /v3/project/{project_id}/admin/promotion:
    get:
      summary: 모든 프로모션 목록 가져오기
      description: 프로젝트의 프로모션 목록을 가져옵니다.
      operationId: get-promotion-list
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/limit-query-param'
        - $ref: '#/components/parameters/offset-query-param'
        - $ref: '#/components/parameters/enabled-query-param'
      tags:
        - promotions-common
      responses:
        '200':
          $ref: '#/components/responses/Promotions_200-get-promotions'
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
      security:
        - basicAuth: []
  /v2/project/{project_id}/admin/promotion/{promotion_id}/activate:
    put:
      summary: 프로모션 활성화
      description: 프로모션을 활성화합니다.
      operationId: activate-promotion
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/promotion_id-path-param'
      security:
        - basicAuth: []
      tags:
        - promotions-common
      responses:
        '204':
          description: 프로모션을 성공적으로 활성화했습니다.
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
        '422':
          $ref: '#/components/responses/Promotions_422-activate-deactivate-promotion'
  /v2/project/{project_id}/admin/promotion/{promotion_id}/deactivate:
    put:
      summary: 프로모션 비활성화
      description: 프로모션을 비활성화합니다.
      operationId: deactivate-promotion
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/promotion_id-path-param'
      security:
        - basicAuth: []
      tags:
        - promotions-common
      responses:
        '204':
          description: 프로모션을 성공적으로 비활성화했습니다.
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
        '422':
          $ref: '#/components/responses/Promotions_422-activate-deactivate-promotion'
  /v3/project/{project_id}/admin/promotion/redeemable/code/{code}:
    get:
      summary: 코드로 교환 가능한 프로모션 가져오기
      description: 프로모션 코드 또는 쿠폰 코드로 프로모션을 가져옵니다.
      operationId: get-redeemable-promotion-by-code
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/code-path-param'
      security:
        - basicAuth: []
      tags:
        - promotions-common
      responses:
        '200':
          $ref: '#/components/responses/200-admin-get-redeemable-by-code'
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/404-code-not-found'
        '405':
          $ref: '#/components/responses/405-method-not-found'
  /v2/project/{project_id}/coupon/redeem:
    post:
      summary: 쿠폰 코드 사용
      description: |-
        쿠폰 코드를 사용합니다. 쿠폰이 사용되면 사용자는 보너스를 받습니다. <br>

        <div class="note">
          <strong>참고</strong><br><br>
            이 API 호출은 인증을 위해 사용자 JWT를 사용합니다.<br><br>
            이 토큰은 <code>Authorization</code> 헤더에 다음 형식으로 포함해야 합니다: <code>Bearer &lt;user_JWT&gt;</code>. 사용자 JWT에 대한 자세한 내용은 이 호출의 <strong>보안</strong> 블록을 참조하십시오.
        </div>
      operationId: redeem-coupon
      x-badges:
        - name: Client-side
          color: '#80eaff'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
      tags:
        - promotions-coupons
      requestBody:
        $ref: '#/components/requestBodies/Promotions_redeem-coupon-model'
      responses:
        '200':
          $ref: '#/components/responses/Promotions_200-coupon-redeemed'
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-client-auth'
        '403':
          $ref: '#/components/responses/Promotions_403-auth-header'
        '404':
          $ref: '#/components/responses/Promotions_404-coupon'
        '422':
          $ref: '#/components/responses/Promotions_422-redeem-coupon'
      security:
        - XsollaLoginUserJWT: []
  /v2/project/{project_id}/coupon/code/{coupon_code}/rewards:
    get:
      summary: 쿠폰 보상 얻기
      description: |-
        코드로 쿠폰 보상을 가져옵니다.
        사용자가 여러 아이템 중 하나를 보너스로 선택할 수 있도록 사용할 수 있습니다.
        일반적인 경우는 쿠폰에 게임이 보너스로 포함된 경우 DRM을 선택하는 것입니다 (`type=unit`). <br>

        <div class="note">
          <strong>참고</strong><br><br>
            이 API 호출은 인증을 위해 사용자 JWT를 사용합니다.<br><br>
            이 토큰은 <code>Authorization</code> 헤더에 다음 형식으로 포함해야 합니다: <code>Bearer &lt;user_JWT&gt;</code>. 사용자 JWT에 대한 자세한 내용은 이 호출의 <strong>보안</strong> 블록을 참조하십시오.
        </div>
      operationId: get-coupon-rewards-by-code
      x-badges:
        - name: Client-side
          color: '#80eaff'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/coupon_code-path-param'
      tags:
        - promotions-coupons
      responses:
        '200':
          $ref: '#/components/responses/Promotions_200-coupon-rewards'
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-client-auth'
        '403':
          $ref: '#/components/responses/Promotions_403-auth-header'
        '404':
          $ref: '#/components/responses/Promotions_404-coupon'
        '422':
          $ref: '#/components/responses/Promotions_422-rewards'
      security:
        - XsollaLoginUserJWT: []
  /v3/project/{project_id}/admin/coupon:
    post:
      summary: 쿠폰 프로모션 생성하기
      description: 쿠폰 프로모션을 생성합니다.
      operationId: admin-create-coupon
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
      tags:
        - promotions-coupons
      security:
        - basicAuth: []
      requestBody:
        $ref: '#/components/requestBodies/Promotions_coupon-create'
      responses:
        '201':
          description: 쿠폰을 성공적으로 생성했습니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  external_id:
                    $ref: '#/components/schemas/Promotions_coupon-external_id'
              examples:
                response:
                  value:
                    external_id: coupon_external_id
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
        '422':
          $ref: '#/components/responses/Promotions_422-invalid-coupon'
    get:
      tags:
        - promotions-coupons
      security:
        - basicAuth: []
      operationId: get-coupons
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      summary: 쿠폰 프로모션 목록 가져오기
      description: 프로젝트의 쿠폰 프로모션 목록을 가져옵니다.
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/limit-query-param'
        - $ref: '#/components/parameters/offset-query-param'
      responses:
        '200':
          $ref: '#/components/responses/Promotions_200-get-coupons'
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
  /v3/project/{project_id}/admin/coupon/{external_id}:
    put:
      summary: 쿠폰 프로모션 업데이트
      description: 쿠폰 프로모션을 업데이트합니다.
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
      tags:
        - promotions-coupons
      security:
        - basicAuth: []
      operationId: update-coupon-promotion
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      requestBody:
        $ref: '#/components/requestBodies/Promotions_coupon-update'
      responses:
        '204':
          description: 쿠폰을 성공적으로 업데이트했습니다.
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/Promotions_404-admin-coupon'
        '422':
          $ref: '#/components/responses/Promotions_422-invalid-coupon'
    get:
      tags:
        - promotions-coupons
      security:
        - basicAuth: []
      operationId: get-coupon
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      summary: 쿠폰 프로모션 가져오기
      description: 지정된 쿠폰 프로모션을 가져옵니다.
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
      responses:
        '200':
          description: 쿠폰을 성공적으로 수신했습니다.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/admin-promotions_200-get-coupon-promotion-model
              examples:
                response:
                  value:
                    external_id: summer20221
                    promotion_periods:
                      - date_from: '2020-04-15T18:16:00+05:00'
                        date_until: '2020-04-25T18:16:00+05:00'
                      - date_from: '2020-05-15T18:16:00+05:00'
                        date_until: '2020-05-25T18:16:00+05:00'
                    name:
                      en-US: Coupon name
                      ru-RU: Название купона
                    is_enabled: true
                    bonus:
                      - sku: com.xsolla.diamonds_1
                        quantity: 100
                    redeem_user_limit: null
                    redeem_total_limit: 100
                    redeem_code_limit: null
                    total_limit_state:
                      available: 50
                      reserved: 10
                      used: 40
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/Promotions_404-admin-coupon'
    delete:
      summary: 쿠폰 프로모션 삭제
      description: >-
        [쿠폰
        프로모션](https://developers.xsolla.com/ko/doc/shop-builder/features/coupons/)을
        삭제합니다. 삭제된 프로모션:
         * 프로젝트에 설정된 프로모션 목록에서 사라집니다.
         * 더 이상 아이템 카탈로그에 적용되지 않습니다. 사용자는 이 프로모션으로 보너스 아이템을 얻을 수 없습니다.

        삭제한 후에는 프로모션을 복원할 수 없습니다.
         삭제된 프로모션의 쿠폰 코드는 기존 프로모션에 [추가](https://developers.xsolla.com/ko/api/shop-builder/operation/create-coupon-code/)할 수 있습니다.
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
      tags:
        - promotions-coupons
      security:
        - basicAuth: []
      operationId: delete-coupon-promotion
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      responses:
        '204':
          description: 쿠폰 프로모션을 성공적으로 삭제했습니다.
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/Promotions_404-admin-coupon'
  /v2/project/{project_id}/admin/coupon/{external_id}/activate:
    put:
      summary: 쿠폰 프로모션 활성화
      description: |-
        쿠폰 프로모션을 활성화합니다.
        생성된 쿠폰 프로모션은 기본적으로 비활성화되어 있습니다.
        프로모션을 활성화할 때까지 사용할 수 없습니다.
        이 엔드포인트를 사용하여 쿠폰 프로모션을 활성화합니다.
      operationId: activate-coupon
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
      tags:
        - promotions-coupons
      security:
        - basicAuth: []
      responses:
        '204':
          description: 쿠폰을 성공적으로 활성화했습니다.
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/Promotions_404-admin-coupon'
        '422':
          $ref: '#/components/responses/Promotions_422-admin-promotion-error'
  /v2/project/{project_id}/admin/coupon/{external_id}/deactivate:
    put:
      summary: 쿠폰 프로모션 비활성화
      description: |-
        쿠폰 프로모션을 비활성화합니다.
        생성된 쿠폰 프로모션은 기본적으로 비활성화되어 있습니다.
        프로모션을 활성화할 때까지 사용할 수 없습니다.
        이 엔드포인트를 사용하여 쿠폰 프로모션을 비활성화합니다.
      operationId: deactivate-coupon
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
      tags:
        - promotions-coupons
      security:
        - basicAuth: []
      responses:
        '204':
          description: 쿠폰을 성공적으로 비활성화했습니다.
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/Promotions_404-admin-coupon'
        '422':
          $ref: '#/components/responses/Promotions_422-admin-promotion-error'
  /v2/project/{project_id}/admin/coupon/{external_id}/code:
    post:
      operationId: create-coupon-code
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      summary: 쿠폰 코드 생성하기
      description: 쿠폰 코드를 생성합니다.
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
      tags:
        - promotions-coupons
      security:
        - basicAuth: []
      requestBody:
        $ref: '#/components/requestBodies/Promotions_create-coupon-promocode-code'
      responses:
        '201':
          $ref: '#/components/responses/Promotions_201-coupon-promocode-code-created'
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/Promotions_404-admin-coupon'
        '422':
          $ref: >-
            #/components/responses/Promotions_422-coupon-promocode-same-code-exists
    get:
      operationId: get-coupon-codes
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      summary: 쿠폰 코드 가져오기
      description: >-
        쿠폰 코드를 가져옵니다.


        응답에는 프로모션의 총 코드 수(`total_count`)와 현재 페이지의 코드(`codes`)가 포함됩니다. 다음 페이지를
        불러오려면 모든 코드를 모두 가져올 때까지 `offset` 값을 `limit` 값만큼 늘리십시오(예: `“offset”:
        100`, 그 다음 `“offset”: 200`).


        대부분의 경우 `“limit”: 100` 또는 `“limit”: 1000`으로 충분합니다. `“limit”: 10000`과 같은
        더 큰 값은 일회성 대량 내보내기 용도로만 사용하고, 반드시 필요한 경우가 아니면 `“limit”: 50000`의 사용은
        피하십시오.
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
        - $ref: '#/components/parameters/limit-query-param'
        - $ref: '#/components/parameters/offset-query-param'
      tags:
        - promotions-coupons
      security:
        - basicAuth: []
      responses:
        '200':
          $ref: '#/components/responses/Promotions_200-coupon-code-list'
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/Promotions_404-admin-coupon'
  /v2/project/{project_id}/admin/coupon/{external_id}/code/generate:
    put:
      summary: 쿠폰 코드 생성하기
      description: >-
        쿠폰 코드를 생성합니다.


        코드 생성에 관한 지침:


        * 프로모션당 코드 총 수량에 대한 상한은 없으나, 각 요청당 코드 수는 50,000개로 제한됩니다. 이 수량을 초과하는 요청은
        `422 Unprocessable Entity` 오류가 반환됩니다. 50,000개 이상의 코드가 필요한 경우, 여러 번에 걸쳐
        요청을 보내주십시오.


        * 안정성을 높이기 위해, 요청당 최대 10,000개까지 소량씩 코드를 생성하는 것이 권장합니다. 예를 들어, 100,000개의
        코드를 생성하려면 `"count": 50000`을 지정하여 2번의 요청을 보내는 대신, `"count": 10000`을 지정하여
        10번의 요청을 보내십시오. 각 요청에 대한 성공 응답을 받은 후에 다음 요청을 보내십시오.


        * 초당 15건의 요청으로 설정된 요청 제한에 유의하시기 바랍니다. 대량의 요청 생성 시 요청 제한을 초과하여 `429` 오류가
        발생하지 않도록 요청을 순차적으로 전송하십시오.


        * 코드 목록을 가져오려면 [쿠폰 코드
        가져오기](/ko/api/liveops/promotions-coupons/get-coupon-codes) 메서드를 호출하세요.


        | 매개 변수 | 값 |

        |---|---|

        | 요청당 최소 코드 수. | 1 |

        | 요청당 허용되는 최대 코드 수. 가능한 한 가장 큰 단일 배치 처리가 필요한 경우에만 사용하십시오. | 50,000 |

        | 요청당 권장 코드 수. | 최대 10,000개까지입니다. 더 많이 생성해야 하는 경우, 순차적으로 여러 번 요청을
        보내주십시오. |
      operationId: generate-coupon-codes
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
      tags:
        - promotions-coupons
      security:
        - basicAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                count:
                  $ref: '#/components/schemas/Promotions_coupon-generate-count'
              required:
                - count
      responses:
        '200':
          description: 코드를 성공적으로 생성했습니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    $ref: '#/components/schemas/Promotions_coupon-generate-count'
              examples:
                response:
                  value:
                    count: 10
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/Promotions_404-admin-promocode'
  /v2/project/{project_id}/promocode/redeem:
    post:
      summary: 프로모션 코드 사용
      description: |-
        프로모션 코드 프로모션용 코드를 사용합니다.
        프로모션 코드를 사용하면 사용자가 무료 아이템을 받게 되며, 장바구니 및/또는 특정 아이템의 가격이 할인됩니다.
      operationId: redeem-promo-code
      x-badges:
        - name: Client-side
          color: '#80eaff'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
      tags:
        - promotions-promo-codes
      requestBody:
        $ref: '#/components/requestBodies/Promotions_redeem-promo-code-model'
      responses:
        '200':
          $ref: '#/components/responses/Promotions_200-promo-code-redeemed'
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-client-auth'
        '403':
          $ref: '#/components/responses/Promotions_403-auth-header'
        '404':
          $ref: '#/components/responses/Promotions_404-promo-code'
        '422':
          $ref: '#/components/responses/Promotions_422-redeem-coupon'
      security:
        - AuthForCart: []
  /v2/project/{project_id}/promocode/remove:
    put:
      summary: 장바구니에서 프로모션 코드 제거
      description: >-
        장바구니에서 프로모션 코드를 제거합니다.

        프로모션 코드를 제거하면 프로모션 코드에서 제공하는 보너스 및 할인 혜택 없이 카트에 있는 모든 아이템의 총 가격을 다시
        계산합니다.
      operationId: remove-cart-promo-code
      x-badges:
        - name: Client-side
          color: '#80eaff'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
      tags:
        - promotions-promo-codes
      requestBody:
        $ref: '#/components/requestBodies/Promotions_cancel-promo-code-model'
      responses:
        '200':
          $ref: '#/components/responses/Promotions_200-promo-code-canceled'
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-client-auth'
        '403':
          $ref: '#/components/responses/Promotions_403-auth-header'
        '422':
          $ref: '#/components/responses/Promotions_422-cancel-promo-code'
      security:
        - AuthForCart: []
  /v2/project/{project_id}/promocode/code/{promocode_code}/rewards:
    get:
      summary: 프로모션 코드 보상 가져오기
      description: |-
        코드로 프로모션 코드 보상을 가져옵니다.
        사용자가 여러 아이템 중 하나를 보너스로 선택할 수 있도록 사용할 수 있습니다.
        일반적인 경우는 프로모션 코드에 게임이 보너스로 포함된 경우 DRM을 선택하는 것입니다 (`type=unit`). <br>

        <div class="note">
          <strong>참고</strong><br><br>
            이 API 호출은 인증을 위해 사용자 JWT를 사용합니다.<br><br>
            이 토큰은 <code>Authorization</code> 헤더에 다음 형식으로 포함해야 합니다: <code>Bearer &lt;user_JWT&gt;</code>. 사용자 JWT에 대한 자세한 내용은 이 호출의 <strong>보안</strong> 블록을 참조하십시오.
        </div>
      operationId: get-promo-code-rewards-by-code
      x-badges:
        - name: Client-side
          color: '#80eaff'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/promocode_code-path-param'
      tags:
        - promotions-promo-codes
      responses:
        '200':
          $ref: '#/components/responses/Promotions_200-promocode-rewards'
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-client-auth'
        '403':
          $ref: '#/components/responses/Promotions_403-auth-header'
        '404':
          $ref: '#/components/responses/Promotions_404-promo-code'
        '422':
          $ref: '#/components/responses/Promotions_422-rewards'
      security:
        - XsollaLoginUserJWT: []
  /v3/project/{project_id}/admin/promocode:
    post:
      operationId: create-promo-code
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      summary: 프로모션 코드 프로모션 생성하기
      description: 프로모션 코드 프로모션을 생성합니다.
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
      tags:
        - promotions-promo-codes
      security:
        - basicAuth: []
      requestBody:
        $ref: '#/components/requestBodies/Promotions_promocode-create'
      responses:
        '201':
          description: 프로모션 코드를 성공적으로 생성했습니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  external_id:
                    $ref: '#/components/schemas/Promotions_coupon-external_id'
              examples:
                response:
                  value:
                    external_id: coupon_external_id
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
        '422':
          $ref: '#/components/responses/Promotions_422-invalid-coupon'
    get:
      tags:
        - promotions-promo-codes
      security:
        - basicAuth: []
      operationId: get-promo-codes
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      summary: 프로모션 코드 프로모션의 목록 가져오기
      description: 프로젝트의 프로모션 코드 목록을 가져옵니다.
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/limit-query-param'
        - $ref: '#/components/parameters/offset-query-param'
      responses:
        '200':
          $ref: '#/components/responses/Promotions_200-get-promocodes'
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
  /v3/project/{project_id}/admin/promocode/{external_id}:
    put:
      summary: 프로모션 코드 프로모션 업데이트
      description: 프로모션 코드 프로모션을 업데이트합니다.
      operationId: update-promo-code
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
      tags:
        - promotions-promo-codes
      security:
        - basicAuth: []
      requestBody:
        $ref: '#/components/requestBodies/Promotions_promocode-update'
      responses:
        '204':
          description: 프로모션 코드를 성공적으로 업데이트했습니다.
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/Promotions_404-admin-promocode'
        '422':
          $ref: '#/components/responses/Promotions_422-invalid-coupon'
    get:
      tags:
        - promotions-promo-codes
      security:
        - basicAuth: []
      operationId: get-promo-code
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      summary: 프로모션 코드 프로모션 가져오기
      description: 지정된 프로모션 코드 프로모션을 가져옵니다.
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
      responses:
        '200':
          description: 프로모션 코드를 성공적으로 수신했습니다.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/Promotions_200-get-promocode-promotion-model
              examples:
                simple:
                  value:
                    external_id: summer20221
                    promotion_periods:
                      - date_from: '2020-04-15T18:16:00+05:00'
                        date_until: '2020-04-25T18:16:00+05:00'
                      - date_from: '2020-05-15T18:16:00+05:00'
                        date_until: '2020-05-25T18:16:00+05:00'
                    name:
                      en-US: Coupon name
                      ru-RU: Название купона
                    is_enabled: true
                    bonus:
                      - sku: com.xsolla.diamonds_1
                        quantity: 100
                    redeem_user_limit: null
                    redeem_total_limit: 100
                    redeem_code_limit: 1
                    discount:
                      percent: '10.99'
                    discounted_items: null
                    total_limit_state:
                      available: 50
                      reserved: 10
                      used: 40
                    excluded_promotions:
                      - 23
                      - 45
                with price conditions:
                  value:
                    external_id: summer20221
                    promotion_periods:
                      - date_from: '2020-04-15T18:16:00+05:00'
                        date_until: '2020-04-25T18:16:00+05:00'
                    name:
                      en-US: Coupon name
                      ru-RU: Название купона
                    is_enabled: true
                    bonus:
                      - sku: com.xsolla.diamonds_2
                        quantity: 100
                    redeem_user_limit: null
                    redeem_total_limit: 100
                    redeem_code_limit: 1
                    discount:
                      percent: '10.99'
                    discounted_items: null
                    total_limit_state:
                      available: 50
                      reserved: 10
                      used: 40
                    price_conditions:
                      - operator: gt
                        value: '10.0000'
                      - operator: lt
                        value: '50.0000'
                with item price conditions:
                  value:
                    external_id: summer20221
                    promotion_periods:
                      - date_from: '2020-04-15T18:16:00+05:00'
                        date_until: '2020-04-25T18:16:00+05:00'
                    name:
                      en-US: Coupon name
                      ru-RU: Название купона
                    is_enabled: true
                    bonus:
                      - sku: com.xsolla.diamonds_3
                        quantity: 100
                    redeem_user_limit: null
                    redeem_total_limit: 100
                    redeem_code_limit: 1
                    discount:
                      percent: '10.99'
                    discounted_items: null
                    total_limit_state:
                      available: 50
                      reserved: 10
                      used: 40
                    item_price_conditions:
                      - operator: gt
                        value: '10.0000'
                      - operator: lt
                        value: '50.0000'
                    excluded_promotions:
                      - 23
                      - 45
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/Promotions_404-admin-promocode'
    delete:
      summary: 프로모션 코드 프로모션 삭제
      description: >-
        [프로모션 코드
        프로모션](https://developers.xsolla.com/ko/doc/shop-builder/features/promo-codes/)을
        삭제합니다. 삭제된 프로모션:
         * 프로젝트에 설정된 프로모션 목록에서 사라집니다.
         * 아이템 카탈로그 및 장바구니에는 더 이상 적용되지 않습니다. 사용자는 이 프로모션을 사용하여 보너스 아이템을 얻거나 아이템을 구매할 수 없습니다.

        삭제한 후에는 프로모션을 복원할 수 없습니다.
         삭제된 프로모션의 프로모션 코드는 기존 프로모션에 [추가](https://developers.xsolla.com/ko/api/shop-builder/operation/create-promo-code-code/)할 수 있습니다.
      operationId: delete-promo-code
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
      tags:
        - promotions-promo-codes
      security:
        - basicAuth: []
      responses:
        '204':
          description: 프로모션 코드 프로모션을 성공적으로 삭제했습니다.
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/Promotions_404-admin-promocode'
  /v2/project/{project_id}/admin/promocode/{external_id}/activate:
    put:
      summary: 프로모션 코드 프로모션 활성화
      description: "프로모션 코드 프로모션을 활성화합니다.\n\n생성된 프로모션 코드 프로모션은 기본적으로 비활성화되어 있습니다.\n프로모션을 활성화할 때까지 사용할 수 없습니다.\n이\_엔드포인트를\_사용하여\_프로모션 코드 프로모션을 활성화합니다."
      operationId: activate-promo-code
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
      tags:
        - promotions-promo-codes
      security:
        - basicAuth: []
      responses:
        '204':
          description: 프로모션 코드를 성공적으로 활성화했습니다.
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/Promotions_404-admin-promocode'
        '422':
          $ref: '#/components/responses/Promotions_422-admin-promotion-error'
  /v2/project/{project_id}/admin/promocode/{external_id}/deactivate:
    put:
      summary: 프로모션 코드 프로모션 비활성화
      description: |-
        프로모션 코드 프로모션을 비활성화합니다.

        생성된 프로모션 코드 프로모션은 기본적으로 비활성화되어 있습니다.
        프로모션을 활성화할 때까지 사용할 수 없습니다.
        이 엔드포인트를 사용하여 프로모션 코드 프로모션을 비활성화합니다.
      operationId: deactivate-promo-code
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
      tags:
        - promotions-promo-codes
      security:
        - basicAuth: []
      responses:
        '204':
          description: 쿠폰을 성공적으로 비활성화했습니다.
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/Promotions_404-admin-promocode'
        '422':
          $ref: '#/components/responses/Promotions_422-admin-promotion-error'
  /v2/project/{project_id}/admin/promocode/{external_id}/code:
    post:
      operationId: create-promo-code-code
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      summary: 프로모션 코드 프로모션용 코드 생성하기
      description: 프로모션 코드 프로모션용 코드를 생성합니다.
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
      tags:
        - promotions-promo-codes
      security:
        - basicAuth: []
      requestBody:
        $ref: '#/components/requestBodies/Promotions_create-coupon-promocode-code'
      responses:
        '201':
          $ref: '#/components/responses/Promotions_201-coupon-promocode-code-created'
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/Promotions_404-admin-promocode'
        '422':
          $ref: >-
            #/components/responses/Promotions_422-coupon-promocode-same-code-exists
    get:
      operationId: get-promocode-codes
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      summary: 프로모션 코드 프로모션용 코드 가져오기
      description: >-
        프로모션 코드 프로모션용 코드를 가져옵니다.


        응답에는 프로모션의 총 코드 수(`total_count`)와 현재 페이지의 코드(`codes`)가 포함됩니다. 다음 페이지를
        불러오려면 모든 코드를 모두 가져올 때까지 `offset` 값을 `limit` 값만큼 늘리십시오(예: `“offset”:
        100`, 그 다음 `“offset”: 200`).


        대부분의 경우 `“limit”: 100` 또는 `“limit”: 1000`으로 충분합니다. `“limit”: 10000`과 같은
        더 큰 값은 일회성 대량 내보내기 용도로만 사용하고, 반드시 필요한 경우가 아니면 `“limit”: 50000`의 사용은
        피하십시오.
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
        - $ref: '#/components/parameters/limit-query-param'
        - $ref: '#/components/parameters/offset-query-param'
      tags:
        - promotions-promo-codes
      security:
        - basicAuth: []
      responses:
        '200':
          $ref: '#/components/responses/Promotions_200-promocode-code-list'
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/Promotions_404-admin-promocode'
  /v2/project/{project_id}/admin/promocode/{external_id}/code/generate:
    put:
      summary: 프로모션 코드 프로모션용 코드 생성하기
      description: >-
        프로모션 코드 프로모션용 코드를 생성합니다.


        코드 생성에 관한 지침:


        * 프로모션당 코드 총 수량에 대한 상한은 없으나, 각 요청당 코드 수는 50,000개로 제한됩니다. 이 수량을 초과하는 요청은
        `422 Unprocessable Entity` 오류가 반환됩니다. 50,000개 이상의 코드가 필요한 경우, 여러 번에 걸쳐
        요청을 보내주십시오.


        * 안정성을 높이기 위해, 요청당 최대 10,000개까지 소량씩 코드를 생성하는 것이 권장합니다. 예를 들어, 100,000개의
        코드를 생성하려면 `"count": 50000`을 지정하여 2번의 요청을 보내는 대신, `"count": 10000`을 지정하여
        10번의 요청을 보내십시오. 각 요청에 대한 성공 응답을 받은 후에 다음 요청을 보내십시오.


        * 초당 15건의 요청으로 설정된 요청 제한에 유의하시기 바랍니다. 대량의 요청 생성 시 요청 제한을 초과하여 `429` 오류가
        발생하지 않도록 요청을 순차적으로 전송하십시오.


        * 코드 목록을 가져오려면 [프로모션 코드 목록
        조회](/ko/api/liveops/promotions-promo-codes/get-promocode-codes) 메서드를
        호출하십시오.


        | 매개 변수 | 값 |

        |---|---|

        | 요청당 최소 코드 수. | 1 |

        | 요청당 허용되는 최대 코드 수. 가능한 한 가장 큰 단일 배치 처리가 필요한 경우에만 사용하십시오. | 50,000 |

        | 요청당 권장 코드 수. | 최대 10,000개까지입니다. 더 많이 생성해야 하는 경우, 순차적으로 여러 번 요청을
        보내주십시오. |
      operationId: generate-promo-code-codes
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
      tags:
        - promotions-promo-codes
      security:
        - basicAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                count:
                  $ref: '#/components/schemas/Promotions_coupon-generate-count'
              required:
                - count
      responses:
        '200':
          description: 코드를 성공적으로 생성했습니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    $ref: '#/components/schemas/Promotions_coupon-generate-count'
              examples:
                response:
                  value:
                    count: 10
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/Promotions_404-admin-promocode'
  /v3/project/{project_id}/admin/promotion/item:
    post:
      summary: 아이템에 대한 할인 프로모션 생성하기
      description: |-
        아이템에 대한 할인 프로모션을 가져옵니다.

        프로모션은 아이템에 대한 할인(%) 혜택을 제공합니다.
        지정된 아이템의 모든 가격에 할인이 적용됩니다.
      operationId: create-item-promotion
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
      tags:
        - promotions-discounts
      security:
        - basicAuth: []
      requestBody:
        $ref: '#/components/requestBodies/Promotions_create-update-item-promotion'
      responses:
        '201':
          $ref: '#/components/responses/Promotions_201-create-promotion'
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
        '422':
          $ref: >-
            #/components/responses/Promotions_422-admin-promotion-missed-items-property
    get:
      tags:
        - promotions-discounts
      security:
        - basicAuth: []
      operationId: get-item-promotion-list
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      summary: 아이템 프로모션 목록 가져오기
      description: |-
        프로젝트의 아이템 프로모션 목록을 가져옵니다.

        프로모션은 아이템에 대한 할인(%) 혜택을 제공합니다.
        지정된 아이템의 모든 가격에 할인이 적용됩니다.
      parameters:
        - name: project_id
          in: path
          required: true
          description: 프로젝트 ID입니다.
          schema:
            type: integer
            default: 59080
        - name: limit
          in: query
          required: false
          description: 페이지 요소 개수 제한입니다.
          schema:
            type: integer
        - name: offset
          in: query
          required: false
          description: 목록이 생성된 요소의 개수입니다(개수는 0부터 시작함).
          schema:
            type: integer
      responses:
        '200':
          $ref: '#/components/responses/Promotions_200-get-item-promotions'
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
  /v3/project/{project_id}/admin/promotion/{promotion_id}/item:
    put:
      tags:
        - promotions-discounts
      security:
        - basicAuth: []
      operationId: update-item-promotion
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      summary: 아이템 프로모션 업데이트
      description: >-
        프로모션을 업데이트합니다.


        <div class='note'><b>참고</b><br><br>이전 데이터를 새 데이터로 교체합니다. 일부 프로모션만
        업데이트하려면 요청 시 필요한 모든 데이터도 전송해야 합니다.</div>


        프로모션은 아이템에 대한 할인(%) 혜택을 제공합니다.

        지정된 아이템의 모든 가격에 할인이 적용됩니다.
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/promotion_id-path-param'
      responses:
        '204':
          description: 프로모션을 성공적으로 업데이트했습니다.
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/Promotions_404-admin-promotion'
        '422':
          $ref: >-
            #/components/responses/Promotions_422-admin-promotion-missed-items-property
      requestBody:
        $ref: '#/components/requestBodies/Promotions_create-update-item-promotion'
    get:
      tags:
        - promotions-discounts
      security:
        - basicAuth: []
      operationId: get-item-promotion
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/promotion_id-path-param'
      summary: 아이템 프로모션 가져오기
      description: |-
        특정 아이템에 적용한 프로모션을 가져옵니다.

        프로모션은 아이템에 대한 할인(%) 혜택을 제공합니다.
        지정된 아이템의 모든 가격에 할인이 적용됩니다.
      responses:
        '200':
          description: 아이템 프로모션을 성공적으로 수신했습니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: integer
                    description: 프로모션 ID입니다. 프로젝트 내부의 고유 프로모션 식별자입니다.
                  promotion_periods:
                    $ref: '#/components/schemas/promotion_periods'
                  is_enabled:
                    $ref: '#/components/schemas/Promotions_is_enabled'
                  name:
                    type: object
                    description: |-
                      프로모션의 이름입니다. 키/값 쌍을 포함해야 합니다.
                      여기에서 키는 "^[a-z]{2}-[A-Z]{2}$" 형식의 로케일이며 값은 문자열입니다.
                    additionalProperties:
                      type: string
                      example:
                        en-US: Promotion
                        ru-RU: Акция
                  discount:
                    type: object
                    properties:
                      percent:
                        type:
                          - string
                          - 'null'
                        description: |-
                          퍼센트 할인입니다.
                          이 퍼센트를 사용하여 계산한 값을 사용하면 아이템의 가격이 낮아지게 됩니다.
                        default: '10.00'
                  items:
                    type:
                      - array
                      - 'null'
                    items:
                      description: 할인 대상 아이템 목록입니다.
                      type: object
                      properties:
                        sku:
                          type: string
                          description: 아이템 SKU입니다.
                          default: elven_sword
                  attribute_conditions:
                    $ref: >-
                      #/components/schemas/promotion_user-attribute_conditions_model-get
                  limits:
                    $ref: '#/components/schemas/Promotions_promotion_limits_response'
                  price_conditions:
                    $ref: '#/components/schemas/price_conditions_discount'
                  excluded_promotions:
                    $ref: '#/components/schemas/excluded_promotions'
                example:
                  id: 1
                  promotion_periods:
                    - date_from: '2020-04-15T18:16:00+05:00'
                      date_until: '2020-04-25T18:16:00+05:00'
                  is_enabled: true
                  discount:
                    percent: '15.00'
                  items:
                    - sku: com.xsolla.elven_sword_1
                    - sku: com.xsolla.elven_helmet_1
                    - sku: com.xsolla.elven_armor_1
                  name:
                    en-US: Promotion
                    ru-RU: Акция
              examples:
                response:
                  value:
                    id: 1
                    promotion_periods:
                      - date_from: '2020-04-15T18:16:00+05:00'
                        date_until: '2020-04-25T18:16:00+05:00'
                    is_enabled: true
                    discount:
                      percent: '20.00'
                    items:
                      - sku: com.xsolla.elven_helmet_1
                      - sku: com.xsolla.elven_armor_1
                    name:
                      en-US: Promotion
                      ru-RU: Акция
                    limits:
                      per_user:
                        total: 10
                      per_item: null
                      recurrent_schedule:
                        per_user:
                          interval_type: daily
                          day_of_week: null
                          day_of_month: null
                          time: 11:00:00+08:00
                          reset_next_date: 1677553200
                          displayable_reset_start_date: '2023-02-28T11:00:00+08:00'
                          displayable_reset_next_date: '2023-02-28T11:00:00+08:00'
                    price_conditions:
                      - operator: ge
                        value: '10.0000'
                      - operator: le
                        value: '50.0000'
                    excluded_promotions:
                      - 23
                      - 45
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
        '404':
          description: 프로모션을 찾을 수 없습니다. `promotion_id`가 올바른지 확인해야 합니다.
          content:
            application/json:
              schema:
                properties:
                  statusCode:
                    type: integer
                    example: 404
                  errorCode:
                    type: integer
                    example: 9502
                  errorMessage:
                    type: string
                    example: >-
                      [0401-9502]: Can not find promotion with ID = 111425 in
                      project 59080
                type: object
              examples:
                response:
                  value:
                    statusCode: 404
                    errorCode: 9502
                    errorMessage: >-
                      [0401-9502]: Can not find promotion with ID = 111425 in
                      project 59080
    delete:
      summary: 아이템 프로모션 삭제
      tags:
        - promotions-discounts
      security:
        - basicAuth: []
      operationId: delete-item-promotion
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      description: >-
        [할인
        프로모션](https://developers.xsolla.com/ko/doc/shop-builder/features/discounts/)을
        삭제합니다. 삭제된 프로모션:

        * 프로젝트에 설정된 프로모션 목록에서 사라집니다.

        * 아이템 카탈로그 및 장바구니에는 더 이상 적용되지 않습니다. 사용자는 이 프로모션으로 상품을 구매할 수 없습니다.


        삭제한 후에는 프로모션을 복원할 수 없습니다.
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/promotion_id-path-param'
      responses:
        '204':
          description: 프로모션이 성공적으로 삭제되었습니다.
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/Promotions_404-admin-promotion'
  /v3/project/{project_id}/admin/promotion/bonus:
    post:
      summary: 보너스 프로모션 생성하기
      description: |-
        보너스 프로모션을 생성합니다.

        프로모션은 사용자가 구매한 구매 항목에 무료 보너스 아이템을 추가합니다.
        프로모션은 프로젝트 내의 모든 구매 또는 특정 아이템을 포함하는 구매에 적용할 수 있습니다.
      operationId: create-bonus-promotion
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
      tags:
        - promotions-bonuses
      security:
        - basicAuth: []
      requestBody:
        $ref: '#/components/requestBodies/Promotions_create-update-bonus-promotion'
      responses:
        '201':
          $ref: '#/components/responses/Promotions_201-create-promotion'
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
        '422':
          $ref: >-
            #/components/responses/Promotions_422-admin-promotion-missed-bonus-property
    get:
      tags:
        - promotions-bonuses
      security:
        - basicAuth: []
      operationId: get-bonus-promotion-list
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      summary: 보너스 프로모션 목록 가져오기
      description: |-
        프로젝트에 속한 보너스 프로모션 목록을 가져옵니다.

        프로모션은 사용자가 구매한 구매 항목에 무료 보너스 아이템을 추가합니다.
        프로모션은 프로젝트 내의 모든 구매 또는 특정 아이템을 포함하는 구매에 적용할 수 있습니다.
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/limit-query-param'
        - $ref: '#/components/parameters/offset-query-param'
      responses:
        '200':
          $ref: '#/components/responses/Promotions_200-get-bonus-promotions'
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
  /v3/project/{project_id}/admin/promotion/{promotion_id}/bonus:
    put:
      summary: 보너스 프로모션 업데이트
      description: >-
        프로모션을 업데이트합니다.


        <div class='note'><b>참고</b><br><br>이전 데이터를 새 데이터로 교체합니다. 일부 프로모션만
        업데이트하려면 요청 시 필요한 모든 데이터도 전송해야 합니다.</div>


        프로모션은 사용자가 구매한 구매 항목에 무료 보너스 아이템을 추가합니다.

        프로모션은 프로젝트 내의 모든 구매 또는 특정 아이템을 포함하는 구매에 적용할 수 있습니다.
      operationId: update-bonus-promotion
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/promotion_id-path-param'
      tags:
        - promotions-bonuses
      security:
        - basicAuth: []
      requestBody:
        $ref: '#/components/requestBodies/Promotions_create-update-bonus-promotion'
      responses:
        '204':
          description: 프로모션을 성공적으로 업데이트했습니다.
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
        '422':
          $ref: >-
            #/components/responses/Promotions_422-admin-promotion-missed-bonus-property
    get:
      tags:
        - promotions-bonuses
      security:
        - basicAuth: []
      operationId: get-bonus-promotion
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      summary: 보너스 프로모션 가져오기
      description: |-
        보너스 프로모션을 가져옵니다.

        프로모션은 사용자가 구매한 구매 항목에 무료 보너스 아이템을 추가합니다.
        프로모션은 프로젝트 내의 모든 구매 또는 특정 아이템을 포함하는 구매에 적용할 수 있습니다.
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/promotion_id-path-param'
      responses:
        '200':
          $ref: '#/components/responses/Promotions_200-admin-get-bonus-promotion'
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/Promotions_404-admin-promotion'
    delete:
      summary: 보너스 프로모션 삭제
      tags:
        - promotions-bonuses
      security:
        - basicAuth: []
      operationId: delete-bonus-promotion
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      description: >-
        [보너스
        프로모션](https://developers.xsolla.com/ko/doc/shop-builder/features/bonuses/)을
        삭제합니다. 삭제된 프로모션:
         * 프로젝트에 설정된 프로모션 목록에서 사라집니다.
         * 아이템 카탈로그 및 장바구니에는 더 이상 적용되지 않습니다. 사용자는 이 프로모션으로 보너스 아이템을 얻을 수 없습니다.

        삭제한 후에는 프로모션을 복원할 수 없습니다.
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/promotion_id-path-param'
      responses:
        '204':
          description: 프로모션이 성공적으로 삭제되었습니다.
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/Promotions_404-admin-promotion'
  /v2/project/{project_id}/promotion/code/{code}/verify:
    get:
      summary: 프로모션 코드 확인
      description: |-
        코드가 프로모션 코드인지 쿠폰 코드인지, 사용자가 이를 적용할 수 있는지를 결정합니다. <br>

        <div class="note">
          <strong>참고</strong><br><br>
            이 API 호출은 인증을 위해 사용자 JWT를 사용합니다.<br><br>
            이 토큰은 <code>Authorization</code> 헤더에 다음 형식으로 포함해야 합니다: <code>Bearer &lt;user_JWT&gt;</code>. 사용자 JWT에 대한 자세한 내용은 이 호출의 <strong>보안</strong> 블록을 참조하십시오.
        </div>
      operationId: verify-promotion-code
      x-badges:
        - name: Client-side
          color: '#80eaff'
      security:
        - XsollaLoginUserJWT: []
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/code-path-param'
      tags:
        - promotions-common
      responses:
        '200':
          $ref: '#/components/responses/Promotions_200-verify-promo-code'
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-client-auth'
        '403':
          $ref: '#/components/responses/Promotions_403-auth-header'
        '404':
          $ref: '#/components/responses/Promotions_404-verify-promo-code'
        '422':
          $ref: '#/components/responses/Promotions_422-verify-promo-code'
  /v3/project/{project_id}/admin/unique_catalog_offer:
    post:
      operationId: admin-create-unique-catalog-offer
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      summary: 고유 카탈로그 혜택 프로모션 생성
      description: 고유 카탈로그 혜택 프로모션을 생성합니다.
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
      tags:
        - promotions-unique-catalog-offers
      security:
        - basicAuth: []
      requestBody:
        $ref: '#/components/requestBodies/Promotions_unique_catalog_offer-create'
      responses:
        '201':
          description: 고유 카탈로그 혜택을 성공적으로 생성했습니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  external_id:
                    $ref: '#/components/schemas/Promotions_coupon-external_id'
              examples:
                response:
                  value:
                    external_id: coupon_external_id
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
        '422':
          $ref: '#/components/responses/Promotions_422-invalid-coupon'
    get:
      operationId: get-unique-catalog-offers
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      tags:
        - promotions-unique-catalog-offers
      security:
        - basicAuth: []
      summary: 고유 카탈로그 혜택 프로모션 목록 가져오기
      description: 프로젝트의 고유 카탈로그 혜택 프로모션 목록을 가져옵니다.
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/limit-query-param'
        - $ref: '#/components/parameters/offset-query-param'
      responses:
        '200':
          $ref: '#/components/responses/Promotions_200-get-unique-catalog-offers'
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
  /v3/project/{project_id}/admin/unique_catalog_offer/{external_id}:
    put:
      operationId: update-unique-catalog-offer-promotion
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      summary: 고유 카탈로그 혜택 프로모션 업데이트
      description: 고유 카탈로그 혜택 프로모션을 업데이트합니다.
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
      tags:
        - promotions-unique-catalog-offers
      security:
        - basicAuth: []
      requestBody:
        $ref: '#/components/requestBodies/Promotions_unique_catalog_offer-update'
      responses:
        '204':
          description: 고유 카탈로그 혜택을 성공적으로 업데이트했습니다.
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/Promotions_404-admin-coupon'
        '422':
          $ref: '#/components/responses/Promotions_422-invalid-coupon'
    get:
      operationId: get-unique-catalog-offer
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      tags:
        - promotions-unique-catalog-offers
      security:
        - basicAuth: []
      summary: 고유 카탈로그 혜택 프로모션 가져오기
      description: 지정된 고유 카탈로그 혜택 프로모션을 가져옵니다.
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
      responses:
        '200':
          description: 고유 카탈로그 혜택을 성공적으로 수신했습니다.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/Promotions_200-get-unique-catalog-offer-promotion-model
              examples:
                response:
                  value:
                    external_id: secret_shop
                    promotion_periods:
                      - date_from: '2020-04-15T18:16:00+05:00'
                        date_until: '2020-04-25T18:16:00+05:00'
                      - date_from: '2020-05-15T18:16:00+05:00'
                        date_until: '2020-05-25T18:16:00+05:00'
                    name:
                      en-US: Secret shop
                      ru-RU: Секретный магазин
                    items:
                      - helmet
                      - sword
                      - shield
                    is_enabled: true
                    redeem_user_limit: 1
                    redeem_total_limit: 100
                    redeem_code_limit: 1
                    total_limit_state:
                      available: 50
                      reserved: 10
                      used: 40
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/Promotions_404-admin-coupon'
    delete:
      operationId: delete-unique-catalog-offer-promotion
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      summary: 고유 카탈로그 혜택 프로모션 삭제
      description: >-
        [고유한 카탈로그 제안
        프로모션](https://developers.xsolla.com/ko/doc/shop-builder/features/unique-offer/)을
        삭제합니다. 삭제된 프로모션:

        * 프로젝트에 설정된 프로모션 목록에서 사라집니다.

        * 아이템 카탈로그 및 장바구니에는 더 이상 적용되지 않습니다. 사용자는 이 프로모션으로 상품을 구매할 수 없습니다.


        삭제한 후에는 프로모션을 복원할 수 없습니다.
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
      tags:
        - promotions-unique-catalog-offers
      security:
        - basicAuth: []
      responses:
        '204':
          description: 고유 카탈로그 혜택을 성공적으로 삭제했습니다.
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/Promotions_404-admin-coupon'
  /v2/project/{project_id}/admin/unique_catalog_offer/{external_id}/activate:
    put:
      operationId: activate-unique-catalog-offer
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      summary: 고유 카탈로그 혜택 프로모션 활성화
      description: |-
        고유 카탈로그 혜택 프로모션을 활성화합니다.
        생성된 고유 카탈로그 혜택 프로모션은 기본적으로 비활성화되어 있습니다.
        혜택을 활성화해야 사용할 수 있습니다.
        이 엔드포인트를 사용하면 쿠폰 프로모션을 사용할 수 있게 설정하거나 활성화할 수 있습니다.
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
      tags:
        - promotions-unique-catalog-offers
      security:
        - basicAuth: []
      responses:
        '204':
          description: 고유 카탈로그 혜택을 성공적으로 활성화했습니다.
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/Promotions_404-admin-coupon'
        '422':
          $ref: '#/components/responses/Promotions_422-admin-promotion-error'
  /v2/project/{project_id}/admin/unique_catalog_offer/{external_id}/deactivate:
    put:
      operationId: deactivate-unique-catalog-offer
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      summary: 고유 카탈로그 혜택 프로모션 비활성화
      description: |-
        고유 카탈로그 혜택 프로모션을 비활성화합니다.
        생성된 고유 카탈로그 혜택 프로모션은 기본적으로 비활성화되어 있습니다.
        혜택을 활성화해야 사용할 수 있습니다.
        이 엔드포인트를 사용하면 쿠폰 프로모션을 사용할 수 없게 설정하거나 비활성화할 수 있습니다.
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
      tags:
        - promotions-unique-catalog-offers
      security:
        - basicAuth: []
      responses:
        '204':
          description: 고유 카탈로그 혜택을 성공적으로 비활성화했습니다.
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/Promotions_404-admin-coupon'
        '422':
          $ref: '#/components/responses/Promotions_422-admin-promotion-error'
  /v2/project/{project_id}/admin/unique_catalog_offer/{external_id}/code:
    post:
      operationId: create-unique-catalog-offer-code
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      summary: 고유 카탈로그 혜택 코드 생성
      description: 고유 카탈로그 혜택 코드를 생성합니다.
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
      tags:
        - promotions-unique-catalog-offers
      security:
        - basicAuth: []
      requestBody:
        $ref: '#/components/requestBodies/Promotions_create-coupon-promocode-code'
      responses:
        '201':
          $ref: '#/components/responses/Promotions_201-coupon-promocode-code-created'
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/Promotions_404-admin-coupon'
        '422':
          $ref: >-
            #/components/responses/Promotions_422-coupon-promocode-same-code-exists
    get:
      operationId: get-unique-catalog-offer-codes
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      summary: 고유 카탈로그 혜택 코드 가져오기
      description: 고유 카탈로그 혜택 코드를 가져옵니다.
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
        - $ref: '#/components/parameters/limit-query-param'
        - $ref: '#/components/parameters/offset-query-param'
      tags:
        - promotions-unique-catalog-offers
      security:
        - basicAuth: []
      responses:
        '200':
          $ref: '#/components/responses/Promotions_200-unique-catalog-offer-code-list'
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/Promotions_404-admin-coupon'
  /v2/project/{project_id}/admin/unique_catalog_offer/{external_id}/code/generate:
    put:
      operationId: generate-unique-catalog-offer-codes
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      summary: 고유 카탈로그 혜택 코드 생성
      description: 고유 카탈로그 혜택 코드를 생성합니다.
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
      tags:
        - promotions-unique-catalog-offers
      security:
        - basicAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                count:
                  $ref: '#/components/schemas/Promotions_coupon-generate-count'
              required:
                - count
      responses:
        '200':
          description: 코드를 성공적으로 생성했습니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    $ref: '#/components/schemas/Promotions_coupon-generate-count'
              examples:
                response:
                  value:
                    count: 10
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/Promotions_404-admin-promocode'
  /v2/project/{project_id}/admin/user/limit/promocode/external_id/{external_id}:
    get:
      tags:
        - promotions-promo-codes
      security:
        - basicAuth: []
      operationId: get-promo-code-user-limit
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
        - $ref: '#/components/parameters/user_external_id-query-param'
      summary: 지정된 사용자에 대한 프로모션 코드 제한 가져오기
      description: >-
        지정된 사용자가 프로모션 코드를 사용할 수 있는 남은 횟수를 가져옵니다.


        사용자 제한 API를 사용하면 사용자가 프로모션 코드를 사용할 수 있는 횟수를 제한할 수 있습니다. 사용자 제한 자체를 구성하려면
        관리 섹션으로 이동합니다.

        * [프로모션
        코드](https://developers.xsolla.com/ko/api/shop-builder/tag/promotions-promo-codes/)
      responses:
        '200':
          $ref: '#/components/responses/200-admin-get-user-promo-code-limits'
        '401':
          $ref: '#/components/responses/Common_401-invalid-basic-auth'
        '404':
          description: 아이템을 찾을 수 없습니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: integer
                  errorCode:
                    type: integer
                  errorMessage:
                    type: string
                  transactionId:
                    type: string
              examples:
                Promo code not found:
                  $ref: '#/components/examples/404-coupon-not-found'
                User not found:
                  $ref: '#/components/examples/404-user-not-found'
        '422':
          description: 잘못된 요청입니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: integer
                  errorCode:
                    type: integer
                  errorMessage:
                    type: string
                  errorMessageExtended:
                    type: array
                  transactionId:
                    type: string
              examples:
                Invalid user_external_id:
                  $ref: '#/components/examples/Promotions_422-invalid-coupon'
  /v2/project/{project_id}/admin/user/limit/coupon/external_id/{external_id}:
    get:
      tags:
        - promotions-coupons
      security:
        - basicAuth: []
      operationId: get-coupon-user-limit
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
        - $ref: '#/components/parameters/user_external_id-query-param'
      summary: 지정된 사용자의 쿠폰 제한 가져오기
      description: >-
        지정된 사용자가 쿠폰을 사용할 수 있는 남은 횟수를 가져옵니다.


        사용자 제한 API를 사용하면 사용자가 쿠폰을 사용할 수 있는 횟수를 제한할 수 있습니다. 사용자 제한 자체를 구성하려면 관리
        섹션으로 이동합니다.

        *
        [쿠폰](https://developers.xsolla.com/ko/api/shop-builder/tag/promotions-coupons/)
      responses:
        '200':
          $ref: '#/components/responses/200-admin-get-user-coupon-limits'
        '401':
          $ref: '#/components/responses/Common_401-invalid-basic-auth'
        '404':
          description: 아이템을 찾을 수 없습니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: integer
                  errorCode:
                    type: integer
                  errorMessage:
                    type: string
                  transactionId:
                    type: string
              examples:
                Coupon not found:
                  $ref: '#/components/examples/404-coupon-not-found'
                User not found:
                  $ref: '#/components/examples/404-user-not-found'
        '422':
          description: 잘못된 요청입니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: integer
                  errorCode:
                    type: integer
                  errorMessage:
                    type: string
                  errorMessageExtended:
                    type: array
                  transactionId:
                    type: string
              examples:
                Invalid user_external_id:
                  $ref: '#/components/examples/Promotions_422-invalid-coupon'
  /v2/project/{project_id}/admin/code/limit/promocode/external_id/{external_id}:
    get:
      tags:
        - promotions-promo-codes
      security:
        - basicAuth: []
      operationId: get-promo-code-code-limit
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
        - $ref: '#/components/parameters/codes-query-param'
        - $ref: '#/components/parameters/limit-query-param'
        - $ref: '#/components/parameters/offset-query-param'
      summary: 코드에 대한 프로모션 코드 제한 가져오기
      description: >-
        코드를 사용할 수 있는 남은 횟수를 가져옵니다. 코드를 필터링하려면 `codes` 쿼리 매개 변수를 사용합니다.


        코드 제한 자체를 구성하려면 관리자 섹션으로 이동합니다.

        * [프로모션
        코드](https://developers.xsolla.com/ko/api/shop-builder/tag/promotions-promo-codes/)
      responses:
        '200':
          $ref: '#/components/responses/200-admin-get-code-promo-code-limits'
        '401':
          $ref: '#/components/responses/Common_401-invalid-basic-auth'
        '404':
          description: 아이템을 찾을 수 없습니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: integer
                  errorCode:
                    type: integer
                  errorMessage:
                    type: string
                  transactionId:
                    type: string
              examples:
                Promo code not found:
                  $ref: '#/components/examples/404-coupon-not-found'
        '422':
          description: 잘못된 요청입니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: integer
                  errorCode:
                    type: integer
                  errorMessage:
                    type: string
                  errorMessageExtended:
                    type: array
  /v2/project/{project_id}/admin/code/limit/coupon/external_id/{external_id}:
    get:
      tags:
        - promotions-coupons
      security:
        - basicAuth: []
      operationId: get-coupon-code-limit
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
        - $ref: '#/components/parameters/codes-query-param'
        - $ref: '#/components/parameters/limit-query-param'
        - $ref: '#/components/parameters/offset-query-param'
      summary: 고유 쿠폰 코드 제한 사항 가져오기
      description: >-
        코드를 사용할 수 있는 남은 횟수를 가져옵니다. 코드를 필터링하려면 `codes` 쿼리 매개 변수를 사용합니다.


        코드 제한 자체를 구성하려면 관리자 섹션으로 이동합니다.

        *
        [쿠폰](https://developers.xsolla.com/ko/api/shop-builder/tag/promotions-coupons/)
      responses:
        '200':
          $ref: '#/components/responses/200-admin-get-code-coupon-limits'
        '401':
          $ref: '#/components/responses/Common_401-invalid-basic-auth'
        '404':
          description: 아이템을 찾을 수 없습니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: integer
                  errorCode:
                    type: integer
                  errorMessage:
                    type: string
                  transactionId:
                    type: string
              examples:
                Coupon not found:
                  $ref: '#/components/examples/404-coupon-not-found'
        '422':
          description: 잘못된 요청입니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: integer
                  errorCode:
                    type: integer
                  errorMessage:
                    type: string
                  errorMessageExtended:
                    type: array
  /v2/project/{project_id}/admin/user/attribute/rule:
    get:
      tags:
        - personalized-catalog
      security:
        - basicAuth: []
      operationId: get-filter-rules
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/limit-query-param'
        - $ref: '#/components/parameters/offset-query-param'
        - $ref: '#/components/parameters/is_enabled-query-param'
      summary: 카탈로그 필터 규칙 목록 가져오기
      description: 사용자 특성에 적용하는 모든 규칙을 가져옵니다.
      responses:
        '200':
          description: 규칙을 성공적으로 수신했습니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/user-attribute_personalized-catalog'
                  total_items_count:
                    type: number
                    description: Total number of rules.
                  has_more:
                    type: boolean
                    description: If another page with rules exists.
              examples:
                response:
                  value:
                    items:
                      - rule_id: 1
                        name: Ork race armor rule
                        is_enabled: true
                        is_satisfied_for_unauth: false
                        attribute_conditions:
                          - attribute: race
                            operator: eq
                            value: ork
                            type: string
                            can_be_missing: false
                        items:
                          - item_id: 1
                            sku: com.xsolla.ork_armor_1
                            name: Ork Armor
                            type: virtual_good
                          - item_id: 2
                            sku: com.xsolla.potion_pack_1
                            name: Potion pack
                            type: bundle
                            bundle_type: standard
                    total_items_count: 20
                    has_more: true
        '401':
          $ref: '#/components/responses/Common_401-complex'
        '403':
          $ref: '#/components/responses/403-auth-header-not-sent'
    post:
      tags:
        - personalized-catalog
      security:
        - basicAuth: []
      operationId: create-filter-rule
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
      summary: 카탈로그 필터 규칙 생성하기
      description: 사용자 특성에 대한 규칙을 생성합니다.
      responses:
        '201':
          description: 규칙을 성공적으로 생성했습니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  rule_id:
                    type: number
                    description: 규칙 ID입니다.
              examples:
                response:
                  value:
                    rule_id: 1
        '401':
          $ref: '#/components/responses/Common_401-complex'
        '422':
          $ref: '#/components/responses/Common_422-body-validation'
      requestBody:
        $ref: '#/components/requestBodies/personalized-catalog_create-update-body'
  /v2/project/{project_id}/admin/user/attribute/rule/all:
    get:
      tags:
        - personalized-catalog
      security:
        - basicAuth: []
      operationId: get-all-filter-rules
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
      summary: 클라이언트 측에서 검색하기 위한 모든 카탈로그 규칙을 가져옵니다
      description: >-
        클라이언트 측 검색을 위한 모든 카탈로그 규칙 목록을 가져옵니다.


        <div class="notice"><strong>주의</strong><br><br>규칙 ID, 이름 및 is_enabled만
        반환합니다.</div>
      responses:
        '200':
          description: 규칙을 성공적으로 수신했습니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      $ref: >-
                        #/components/schemas/user-attribute_personalized-catalog_all
              examples:
                response:
                  value:
                    items:
                      - rule_id: 1
                        name: Ork race armor rule
                        is_enabled: true
                        is_satisfied_for_unauth: false
                      - rule_id: 2
                        name: Age
                        is_enabled: false
                        is_satisfied_for_unauth: false
        '401':
          $ref: '#/components/responses/Common_401-complex'
        '403':
          $ref: '#/components/responses/403-auth-header-not-sent'
  /v2/project/{project_id}/admin/user/attribute/rule/{rule_id}:
    get:
      tags:
        - personalized-catalog
      security:
        - basicAuth: []
      operationId: get-filter-rule-by-id
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/personalized-catalog-rule_id-path-param'
      summary: 카탈로그 필터 규칙 가져오기
      description: 사용자 특성에 적용하는 특정 규칙을 가져옵니다.
      responses:
        '200':
          description: 규칙을 성공적으로 수신했습니다.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/user-attribute_personalized-catalog'
              examples:
                response:
                  value:
                    rule_id: 1
                    name: Ork race armor rule
                    is_enabled: true
                    is_satisfied_for_unauth: true
                    attribute_conditions:
                      - attribute: race
                        operator: eq
                        value: ork
                        type: string
                        can_be_missing: false
                    items:
                      - item_id: 1
                        sku: com.xsolla.ork_armor_1
                        name: Ork Armor
        '401':
          $ref: '#/components/responses/Common_401-complex'
    put:
      tags:
        - personalized-catalog
      security:
        - basicAuth: []
      operationId: update-filter-rule-by-id
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/personalized-catalog-rule_id-path-param'
      summary: 카탈로그 필터 규칙 업데이트
      description: 사용자 특성에 적용하는 특정 규칙을 업데이트합니다. 기본 값을 지정되지 않은 특성에 사용됩니다(특성이 필수가 아닌 경우).
      responses:
        '204':
          description: 성공적으로 업데이트했습니다.
        '401':
          $ref: '#/components/responses/Common_401-complex'
        '422':
          $ref: '#/components/responses/Common_422-body-validation'
      requestBody:
        $ref: '#/components/requestBodies/personalized-catalog_create-update-body'
    patch:
      tags:
        - personalized-catalog
      security:
        - basicAuth: []
      operationId: patch-filter-rule-by-id
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/personalized-catalog-rule_id-path-param'
      summary: 패치 카탈로그 필터 규칙
      description: 사용자 특성에 적용하는 특정 규칙을 업데이트합니다. 현재 값을 지정되지 않은 특성에 사용합니다.
      responses:
        '204':
          description: 성공적으로 업데이트했습니다.
        '401':
          $ref: '#/components/responses/Common_401-complex'
        '422':
          $ref: '#/components/responses/Common_422-body-validation'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/user-attribute_personalized-catalog-body'
            example:
              is_enabled: false
    delete:
      tags:
        - personalized-catalog
      security:
        - basicAuth: []
      operationId: delete-filter-rule-by-id
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/personalized-catalog-rule_id-path-param'
      summary: 카탈로그 필터 규칙 삭제
      description: 특정 규칙을 삭제합니다.
      responses:
        '204':
          description: 성공적으로 삭제했습니다.
        '401':
          $ref: '#/components/responses/Common_401-complex'
  /v2/project/{project_id}/admin/user/limit/promotion/all:
    delete:
      tags:
        - user-limits-admin
      security:
        - basicAuth: []
      operationId: reset-all-user-promotions-limit
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
      summary: 지정된 사용자의 모든 프로모션 제한 설정 새로고침
      description: >-
        지정된 사용자에 대한 모든 프로모션의 모든 제한 설정을 새로고침하여 해당 프로모션을 다시 사용할 수 있도록 합니다.


        사용자 제한 API를 사용하면 사용자가 프로모션을 사용할 수 있는 횟수를 제한할 수 있습니다. 사용자 제한 자체를 구성하려면
        원하는 프로모션 유형의 관리 섹션으로 이동합니다.

        * [할인
        프로모션](https://developers.xsolla.com/ko/api/shop-builder/tag/promotions-discounts/)

        * [보너스
        프로모션](https://developers.xsolla.com/ko/api/shop-builder/tag/promotions-bonuses/)
      responses:
        '200':
          description: 프로모션 제한 설정을 성공적으로 새로고침했습니다.
        '401':
          $ref: '#/components/responses/Common_401-invalid-basic-auth'
        '404':
          description: 아이템을 찾을 수 없습니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: integer
                  errorCode:
                    type: integer
                  errorMessage:
                    type: string
                  transactionId:
                    type: string
              examples:
                User not found:
                  $ref: '#/components/examples/404-user-not-found'
        '422':
          description: 잘못된 요청입니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: integer
                  errorCode:
                    type: integer
                  errorMessage:
                    type: string
                  errorMessageExtended:
                    type: array
                  transactionId:
                    type: string
              examples:
                Invalid user_external_id:
                  $ref: '#/components/examples/422-user_external_id_invalid'
      requestBody:
        $ref: '#/components/requestBodies/reset-user-limits'
  /v2/project/{project_id}/admin/user/limit/promotion/id/{promotion_id}/all:
    delete:
      tags:
        - user-limits-admin
      security:
        - basicAuth: []
      operationId: reset-user-promotion-limit
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/promotion_id-path-param'
      summary: 사용자에 대한 프로모션 제한 새로고침하기
      description: >-
        사용자가 이 프로모션을 다시 사용할 수 있도록 프로모션 제한을 새로고침합니다. *user* 매개변수가 `null`인 경우 이
        호출은 모든 사용자에 대해 이 제한을 새로고침합니다.


        사용자 제한 API를 사용하면 사용자가 프로모션을 사용할 수 있는 횟수를 제한할 수 있습니다. 사용자 제한 자체를 구성하려면
        원하는 프로모션 유형의 관리 섹션으로 이동합니다.

        * [할인
        프로모션](https://developers.xsolla.com/ko/api/shop-builder/tag/promotions-discounts/)

        * [보너스
        프로모션](https://developers.xsolla.com/ko/api/shop-builder/tag/promotions-bonuses/)
      responses:
        '200':
          description: 프로모션 제한 설정을 성공적으로 새로고침했습니다.
        '401':
          $ref: '#/components/responses/Common_401-invalid-basic-auth'
        '404':
          description: 아이템을 찾을 수 없습니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: integer
                  errorCode:
                    type: integer
                  errorMessage:
                    type: string
                  transactionId:
                    type: string
              examples:
                Item not found:
                  $ref: '#/components/examples/404-promotion-by-id-not-found'
                User not found:
                  $ref: '#/components/examples/404-user-not-found'
        '422':
          description: 잘못된 요청입니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: integer
                  errorCode:
                    type: integer
                  errorMessage:
                    type: string
                  errorMessageExtended:
                    type: array
                  transactionId:
                    type: string
              examples:
                Invalid user_external_id:
                  $ref: '#/components/examples/422-user_external_id_invalid'
                Promotion does not have configured user limits:
                  $ref: '#/components/examples/422-promotion-without-user-limit'
      requestBody:
        $ref: '#/components/requestBodies/reset-user-limits-flexible'
  /v2/project/{project_id}/admin/user/limit/promotion/id/{promotion_id}:
    get:
      tags:
        - user-limits-admin
      security:
        - basicAuth: []
      operationId: get-user-promotion-limit
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/promotion_id-path-param'
        - $ref: '#/components/parameters/user_external_id-query-param'
      summary: 지정된 사용자의 프로모션 제한 설정 가져오기
      description: >-
        적용된 제한 설정 내에서 지정된 사용자가 사용할 수 있는 남은 프로모션 횟수를 가져옵니다.


        사용자 제한 API를 사용하면 사용자가 프로모션을 사용할 수 있는 횟수를 제한할 수 있습니다. 사용자 제한 자체를 구성하려면
        원하는 프로모션 유형의 관리 섹션으로 이동합니다.

        * [할인
        프로모션](https://developers.xsolla.com/ko/api/shop-builder/tag/promotions-discounts/)

        * [보너스
        프로모션](https://developers.xsolla.com/ko/api/shop-builder/tag/promotions-bonuses/)
      responses:
        '200':
          $ref: '#/components/responses/200-admin-get-user-promotion-limits'
        '401':
          $ref: '#/components/responses/Common_401-invalid-basic-auth'
        '404':
          description: 아이템을 찾을 수 없습니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: integer
                  errorCode:
                    type: integer
                  errorMessage:
                    type: string
                  transactionId:
                    type: string
              examples:
                Item not found:
                  $ref: '#/components/examples/404-promotion-by-id-not-found'
                User not found:
                  $ref: '#/components/examples/404-user-not-found'
        '422':
          description: 잘못된 요청입니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: integer
                  errorCode:
                    type: integer
                  errorMessage:
                    type: string
                  errorMessageExtended:
                    type: array
                  transactionId:
                    type: string
              examples:
                Invalid user_external_id:
                  $ref: '#/components/examples/422-user_external_id_invalid'
                Promotion does not have configured user limits:
                  $ref: '#/components/examples/422-promotion-without-user-limit'
    post:
      tags:
        - user-limits-admin
      security:
        - basicAuth: []
      operationId: add-user-promotion-limit
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/promotion_id-path-param'
      summary: 지정된 사용자의 프로모션 제한 설정 늘리기
      description: >-
        적용된 제한 설정 내에서 지정된 사용자가 사용할 수 있는 남은 프로모션 횟수를 늘립니다.


        사용자 제한 API를 사용하면 사용자가 프로모션을 사용할 수 있는 횟수를 제한할 수 있습니다. 사용자 제한 자체를 구성하려면
        원하는 프로모션 유형의 관리 섹션으로 이동합니다.

        * [할인
        프로모션](https://developers.xsolla.com/ko/api/shop-builder/tag/promotions-discounts/)

        * [보너스
        프로모션](https://developers.xsolla.com/ko/api/shop-builder/tag/promotions-bonuses/)
      responses:
        '200':
          $ref: '#/components/responses/200-admin-get-user-promotion-limits'
        '401':
          $ref: '#/components/responses/Common_401-invalid-basic-auth'
        '404':
          description: 아이템을 찾을 수 없습니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: integer
                  errorCode:
                    type: integer
                  errorMessage:
                    type: string
                  transactionId:
                    type: string
              examples:
                Item not found:
                  $ref: '#/components/examples/404-promotion-by-id-not-found'
                User not found:
                  $ref: '#/components/examples/404-user-not-found'
        '422':
          description: 잘못된 요청입니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: integer
                  errorCode:
                    type: integer
                  errorMessage:
                    type: string
                  errorMessageExtended:
                    type: array
                  transactionId:
                    type: string
              examples:
                Invalid user_external_id:
                  $ref: '#/components/examples/422-user_external_id_invalid'
                Promotion does not have configured user limits:
                  $ref: '#/components/examples/422-promotion-without-user-limit'
                Available promotion limit is out of range:
                  $ref: >-
                    #/components/examples/422-promotion-out-of-range-available-user-limit
      requestBody:
        $ref: '#/components/requestBodies/update-user-limits-strict'
    put:
      tags:
        - user-limits-admin
      security:
        - basicAuth: []
      operationId: set-user-promotion-limit
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/promotion_id-path-param'
      summary: 지정된 사용자의 프로모션 제한 설정하기
      description: >-
        프로모션 횟수를 늘리거나 줄인 후 지정된 사용자가 적용된 제한 설정 내에서 사용할 수 있는 남은 프로모션 횟수를 설정합니다.


        사용자 제한 API를 사용하면 사용자가 프로모션을 사용할 수 있는 횟수를 제한할 수 있습니다. 사용자 제한 자체를 구성하려면
        원하는 프로모션 유형의 관리 섹션으로 이동합니다.

        * [할인
        프로모션](https://developers.xsolla.com/ko/api/shop-builder/tag/promotions-discounts/)

        * [보너스
        프로모션](https://developers.xsolla.com/ko/api/shop-builder/tag/promotions-bonuses/)
      responses:
        '200':
          $ref: '#/components/responses/200-admin-get-user-promotion-limits'
        '401':
          $ref: '#/components/responses/Common_401-invalid-basic-auth'
        '404':
          description: 아이템을 찾을 수 없습니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: integer
                  errorCode:
                    type: integer
                  errorMessage:
                    type: string
                  transactionId:
                    type: string
              examples:
                Item not found:
                  $ref: '#/components/examples/404-promotion-by-id-not-found'
                User not found:
                  $ref: '#/components/examples/404-user-not-found'
        '422':
          description: 잘못된 요청입니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: integer
                  errorCode:
                    type: integer
                  errorMessage:
                    type: string
                  errorMessageExtended:
                    type: array
                  transactionId:
                    type: string
              examples:
                Invalid user_external_id:
                  $ref: '#/components/examples/422-user_external_id_invalid'
                Promotion does not have configured user limits:
                  $ref: '#/components/examples/422-promotion-without-user-limit'
      requestBody:
        $ref: '#/components/requestBodies/update-user-limits-flexible'
    delete:
      tags:
        - user-limits-admin
      security:
        - basicAuth: []
      operationId: remove-user-promotion-limit
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/promotion_id-path-param'
      summary: 지정된 사용자의 프로모션 제한 설정 축소
      description: >-
        지정된 사용자가 적용된 제한 내에서 프로모션을 사용할 수 있는 남은 횟수를 줄입니다.


        사용자 제한 API를 사용하면 사용자가 프로모션을 사용할 수 있는 횟수를 제한할 수 있습니다. 사용자 제한 자체를 구성하려면
        원하는 프로모션 유형의 관리 섹션으로 이동합니다.

        * [할인
        프로모션](https://developers.xsolla.com/ko/api/shop-builder/tag/promotions-discounts/)

        * [보너스
        프로모션](https://developers.xsolla.com/ko/api/shop-builder/tag/promotions-bonuses/)
      responses:
        '200':
          $ref: '#/components/responses/200-admin-get-user-promotion-limits'
        '401':
          $ref: '#/components/responses/Common_401-invalid-basic-auth'
        '404':
          description: 아이템을 찾을 수 없습니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: integer
                  errorCode:
                    type: integer
                  errorMessage:
                    type: string
                  transactionId:
                    type: string
              examples:
                Item not found:
                  $ref: '#/components/examples/404-promotion-by-id-not-found'
                User not found:
                  $ref: '#/components/examples/404-user-not-found'
        '422':
          description: 잘못된 요청입니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: integer
                  errorCode:
                    type: integer
                  errorMessage:
                    type: string
                  errorMessageExtended:
                    type: array
                  transactionId:
                    type: string
              examples:
                Invalid user_external_id:
                  $ref: '#/components/examples/422-user_external_id_invalid'
                Promotion does not have configured user limits:
                  $ref: '#/components/examples/422-promotion-without-user-limit'
                Available promotion limit is out of range:
                  $ref: >-
                    #/components/examples/422-promotion-out-of-range-available-user-limit
      requestBody:
        $ref: '#/components/requestBodies/update-user-limits-strict'
  /v2/project/{project_id}/admin/items/value_points:
    get:
      summary: 가치 포인트 목록 가져오기
      description: 관리 대상 프로젝트에서 가치 포인트 목록을 가져옵니다.
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/limit-query-param'
        - $ref: '#/components/parameters/offset-query-param'
      tags:
        - reward-chain-value-points-admin
      operationId: admin-get-value-points-list
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      security:
        - basicAuth: []
      responses:
        '200':
          $ref: '#/components/responses/200-admin-get-value-points'
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
    post:
      summary: 가치 포인트 생성하기
      description: 가치 포인트를 생성합니다.
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
      tags:
        - reward-chain-value-points-admin
      operationId: admin-create-value-points
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      security:
        - basicAuth: []
      requestBody:
        $ref: '#/components/requestBodies/create-value-point'
      responses:
        '201':
          $ref: '#/components/responses/201-admin-create-value-point'
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
        '422':
          $ref: '#/components/responses/422-admin-create-update-rc-vp-invalid-request'
  /v2/project/{project_id}/admin/items/value_points/sku/{item_sku}:
    get:
      summary: 가치 포인트 가져오기
      description: 관리 대상 프로젝트에서 SKU별로 가치 포인트를 가져옵니다.
      operationId: admin-get-value-point
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      security:
        - basicAuth: []
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/item_sku-path-param'
      tags:
        - reward-chain-value-points-admin
      responses:
        '200':
          $ref: '#/components/responses/200-admin-get-value-point'
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
    put:
      summary: 가치 포인트 업데이트
      description: SKU로 식별되는 가치 포인트를 업데이트합니다.
      operationId: admin-update-value-point
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      security:
        - basicAuth: []
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/item_sku-path-param'
      tags:
        - reward-chain-value-points-admin
      requestBody:
        $ref: '#/components/requestBodies/create-value-point'
      responses:
        '204':
          description: 가치 포인트를 성공적으로 업데이트했습니다.
          content: {}
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
        '422':
          $ref: '#/components/responses/422-admin-create-update-rc-vp-invalid-request'
    delete:
      summary: 가치 포인트 삭제
      description: SKU로 식별되는 가치 포인트를 삭제합니다.
      operationId: admin-delete-value-point
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      security:
        - basicAuth: []
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/item_sku-path-param'
      tags:
        - reward-chain-value-points-admin
      responses:
        '204':
          description: 가치 포인트를 성공적으로 삭제했습니다.
          content: {}
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
  /v2/project/{project_id}/admin/items/{value_point_sku}/value_points/rewards:
    get:
      summary: 가치 포인트가 있는 아이템 목록 가져오기
      description: 관리 대상 프로젝트에서 가치 포인트가 있는 모든 아이템의 목록을 가져옵니다.
      operationId: admin-get-items-value-point-reward
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      security:
        - basicAuth: []
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/value_point_sku-path-param'
      tags:
        - reward-chain-value-points-admin
      responses:
        '200':
          $ref: '#/components/responses/200-admin-get-list-value-point-rewards'
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
    put:
      summary: 아이템에 대한 가치 포인트 설정
      description: >-
        하나 또는 여러 아이템에 SKU별로 가치 포인트를 할당합니다. 사용자가 이러한 아이템을 구매하면 가치 포인트를 받습니다.


        이 PUT 요청은 프로젝트에서 이전에 설정한 모든 아이템의 가치 포인트를 덮어씁니다.


        실수로 가치 포인트가 삭제되는 것을 방지하려면 각 PUT 요청에 모든 아이템과 해당 가치 포인트를 포함해야 합니다.


        다른 아이템의 가치 포인트는 그대로 유지하면서 특정 아이템의 가치 포인트만 업데이트하려면 GET 요청을 사용하여 현재 가치 포인트
        세트를 검색하고 원하는 아이템의 가치 포인트를 수정한 다음 수정된 가치 포인트 세트를 특정 아이템의 업데이트된 가치 포인트와 함께
        다시 보내야 합니다.
      operationId: admin-set-items-value-point-reward
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      security:
        - basicAuth: []
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/value_point_sku-path-param'
      tags:
        - reward-chain-value-points-admin
      requestBody:
        $ref: '#/components/requestBodies/set-item-value-point-reward'
      responses:
        '204':
          description: 아이템에 대한 가치 포인트 보상을 성공적으로 업데이트했습니다.
          content: {}
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/sellable-item-by-sku_404'
    patch:
      summary: 아이템에 대한 가치 포인트를 부분적으로 업데이트
      description: >-
        아이템의 SKU에 의해 하나 이상의 아이템에 대한 가치 포인트 수를 부분적으로 업데이트합니다. 사용자는 지정된 아이템을 구매한 후
        이러한 가치 포인트를 받게 됩니다.


        가치 포인트 업데이트의 원칙:
          * 아이템에 아직 가치 포인트가 없는 경우 `amount` 필드에 0이 아닌 값을 보내면 가치 포인트가 생성됩니다.
          * 아이템에 이미 가치 포인트가 있는 경우 `amount` 필드에 0이 아닌 값을 보내면 가치 포인트가 업데이트됩니다.
          * `amount`를 0으로 설정하면 해당 아이템에 대한 기존 가치 포인트가 삭제됩니다.

        `PUT` 메서드([아이템에 대한 가치 포인트
        설정](https://developers.xsolla.com/ko/api/shop-builder/operation/admin-set-items-value-point-reward/))와
        달리 이 `PATCH` 메서드는 프로젝트의 아이템에 대한 모든 기존 가치 포인트를 덮어쓰지 않고 지정된 아이템만 업데이트합니다.


        단일 요청으로 최대 100개의 아이템을 업데이트할 수 있습니다. 중복 아이템 SKU는 동일한 요청에 포함될 수 없습니다.
      operationId: admin-patch-items-value-point-reward
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      security:
        - basicAuth: []
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/value_point_sku-path-param'
      tags:
        - reward-chain-value-points-admin
      requestBody:
        $ref: '#/components/requestBodies/set-item-value-point-reward-for-patch'
      responses:
        '204':
          description: 아이템에 대한 가치 포인트 보상을 성공적으로 업데이트했습니다.
          content: {}
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/sellable-item-by-sku_404'
    delete:
      summary: 아이템에서 가치 포인트 삭제하기
      description: 모든 아이템에서 가치 포인트 보상을 제거합니다.
      operationId: admin-delete-items-value-point-reward
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      security:
        - basicAuth: []
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/value_point_sku-path-param'
      tags:
        - reward-chain-value-points-admin
      responses:
        '204':
          description: 아이템에 대한 가치 포인트 보상을 성공적으로 삭제했습니다.
          content: {}
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
  /v2/project/{project_id}/user/reward_chain:
    get:
      tags:
        - reward-chain-client
      operationId: get-reward-chains-list
      x-badges:
        - name: Client-side
          color: '#80eaff'
      summary: 현재 사용자의 보상 체인 가져오기
      description: |-
        클라이언트 엔드포인트. 현재 사용자의 보상 체인을 가져옵니다.

        <div class="notice">
          <strong>주의</strong><br><br>
            모든 프로젝트에는 응답에서 가져올 수 있는 항목 수에 제한이 있습니다. 기본 및 최대 값은 <strong>응답당 50개 항목</strong>입니다. 페이지별로 더 많은 데이터를 얻으려면 <b>limit</b> 및 <b>offset</b> 입력란을 사용하세요.
        </div>

        <br>

        <div class="note">
          <strong>참고</strong><br><br>
            이 API 호출은 인증을 위해 사용자 JWT를 사용합니다.<br><br>
            이 토큰은 <code>Authorization</code> 헤더에 다음 형식으로 포함해야 합니다: <code>Bearer &lt;user_JWT&gt;</code>. 사용자 JWT에 대한 자세한 내용은 이 호출의 <strong>보안</strong> 블록을 참조하십시오.
        </div>
      security:
        - XsollaLoginUserJWT: []
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/limit-query-param'
        - $ref: '#/components/parameters/offset-query-param'
      responses:
        '200':
          $ref: '#/components/responses/200-client-get-reward-chains-list'
  /v2/project/{project_id}/user/reward_chain/{reward_chain_id}/balance:
    get:
      tags:
        - reward-chain-client
      operationId: get-user-reward-chain-balance
      x-badges:
        - name: Client-side
          color: '#80eaff'
      summary: 현재 사용자의 가치 포인트 잔액 가져오기
      description: |-
        클라이언트 엔드포인트. 현재 사용자의 가치 포인트 잔액을 가져옵니다. <br>

        <div class="note">
          <strong>참고</strong><br><br>
            이 API 호출은 인증을 위해 사용자 JWT를 사용합니다.<br><br>
            이 토큰은 <code>Authorization</code> 헤더에 다음 형식으로 포함해야 합니다: <code>Bearer &lt;user_JWT&gt;</code>. 사용자 JWT에 대한 자세한 내용은 이 호출의 <strong>보안</strong> 블록을 참조하십시오.
        </div>
      security:
        - XsollaLoginUserJWT: []
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/reward_chain_id-path-param'
      responses:
        '200':
          $ref: '#/components/responses/200-client-get-user-reward-chain-balance'
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-client-auth'
  /v2/project/{project_id}/user/reward_chain/{reward_chain_id}/step/{step_id}/claim:
    post:
      tags:
        - reward-chain-client
      operationId: claim-user-reward-chain-step-reward
      x-badges:
        - name: Client-side
          color: '#80eaff'
      summary: 단계 보상 청구하기
      description: |-
        클라이언트 엔드포인트. 보상 체인에서 현재 사용자의 단계 보상을 청구합니다. <br>

        <div class="note">
          <strong>참고</strong><br><br>
            이 API 호출은 인증을 위해 사용자 JWT를 사용합니다.<br><br>
            이 토큰은 <code>Authorization</code> 헤더에 다음 형식으로 포함해야 합니다: <code>Bearer &lt;user_JWT&gt;</code>. 사용자 JWT에 대한 자세한 내용은 이 호출의 <strong>보안</strong> 블록을 참조하십시오.
        </div>
      security:
        - XsollaLoginUserJWT: []
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/reward_chain_id-path-param'
        - $ref: '#/components/parameters/reward_chain_step_id-path-param'
      responses:
        '204':
          description: 보상 체인에서 현재 사용자의 단계에 대한 보상을 성공적으로 청구했습니다.
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-client-auth'
        '404':
          $ref: '#/components/responses/404-reward-chain-step-not-found'
        '422':
          $ref: '#/components/responses/422-reward-chain-step-reward-can-not-claimed'
  /v2/project/{project_id}/user/clan/contributors/{reward_chain_id}/top:
    get:
      tags:
        - clan-reward-chain-client
      operationId: get-user-clan-top-contributors
      x-badges:
        - name: Client-side
          color: '#80eaff'
      responses:
        '200':
          description: 클랜 보상 체인에 가장 많이 기여한 상위 10명의 기여자 명단입니다.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    name:
                      type: string
                      example: Rocket
                      description: >-
                        User ID. This is the ID sending to Xsolla during
                        authorization and links the user to your Xsolla Login
                        project.
                    contributed_amount:
                      type: integer
                      example: 100
                      description: The amount of value points contributed by the user.
              examples:
                clan:
                  summary: User has a clan
                  value:
                    - name: winner
                      contributed_amount: 555
                    - name: Rocket
                      contributed_amount: 398
                    - name: MrJoe
                      contributed_amount: 201
                    - name: beginner
                      contributed_amount: 1
                without-clan:
                  summary: User doesn't belong to a clan
                  value: []
      security:
        - XsollaLoginUserJWT: []
      parameters:
        - name: project_id
          in: path
          required: true
          description: 프로젝트 ID입니다.
          schema:
            type: integer
            example: 44056
        - name: reward_chain_id
          in: path
          required: true
          description: 보상 체인 ID입니다.
          schema:
            type: integer
            example: 101
      summary: 클랜 보상 체인에 가장 많이 기여한 상위 10명의 기여자를 뽑으세요
      description: >-
        현재 사용자의 클랜 내 특정 보상 체인에 가장 많이 기여한 상위 10명의 기여자 목록을 가져옵니다. 사용자가 클랜에 속하지 않은
        경우, 호출은 빈 목록을 반환합니다. <br>


        <div class="note">
          <strong>참고</strong><br><br>
            이 API 호출은 인증을 위해 사용자 JWT를 사용합니다.<br><br>
            이 토큰은 <code>Authorization</code> 헤더에 다음 형식으로 포함해야 합니다: <code>Bearer &lt;user_JWT&gt;</code>. 사용자 JWT에 대한 자세한 내용은 이 호출의 <strong>보안</strong> 블록을 참조하십시오.
        </div>
  /v2/project/{project_id}/user/clan/update:
    put:
      tags:
        - clan-reward-chain-client
      operationId: user-clan-update
      x-badges:
        - name: Client-side
          color: '#80eaff'
      responses:
        '200':
          $ref: '#/components/responses/200-client-update-user-clan'
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-client-auth'
      security:
        - XsollaLoginUserJWT: []
      parameters:
        - name: project_id
          in: path
          required: true
          description: 프로젝트 ID입니다.
          schema:
            type: integer
            default: 44056
      summary: 현재 사용자의 클랜 업데이트
      description: >-
        사용자 특성을 통해 현재 사용자의 클랜을 업데이트합니다. 이전 클랜에서 수령하지 않은 모든 보상 체인 보상을 청구하고 응답에
        반환합니다. 사용자가 클랜에 속해 있었으나 이제 속하지 않은 경우, 클랜 포함이 취소됩니다. 사용자가 클랜을 변경한 경우, 클랜이
        변경됩니다. <br>


        <div class="note">
          <strong>참고</strong><br><br>
            이 API 호출은 인증을 위해 사용자 JWT를 사용합니다.<br><br>
            이 토큰은 <code>Authorization</code> 헤더에 다음 형식으로 포함해야 합니다: <code>Bearer &lt;user_JWT&gt;</code>. 사용자 JWT에 대한 자세한 내용은 이 호출의 <strong>보안</strong> 블록을 참조하십시오.
        </div>
  /v3/project/{project_id}/admin/reward_chain:
    get:
      summary: 보상 체인 목록 가져오기
      description: >-
        보상 체인 목록을 가져옵니다.


        <div class="notice"><strong>주의</strong><br><br>모든 프로젝트에는 응답에서 얻을 수 있는
        아이템 수에 제한이 있습니다. 기본값과 최대값은 <strong>응답당 10개 아이템입니다.</strong> 페이지별로 더 많은
        데이터 페이지를 가져오려면 <b>한계</b> 및 <b>오프셋</b> 필드를 사용합니다.</div>
      operationId: admin-get-reward-chains
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/limit-query-param'
        - $ref: '#/components/parameters/offset-query-param'
        - $ref: '#/components/parameters/enabled-query-param'
      tags:
        - reward-chain-value-points-admin
      security:
        - basicAuth: []
      responses:
        '200':
          $ref: '#/components/responses/200-admin-get-list-reward-chains'
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
    post:
      summary: 보상 체인 생성하기
      description: 보상 체인을 생성합니다.
      security:
        - basicAuth: []
      operationId: admin-create-reward-chain
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
      tags:
        - reward-chain-value-points-admin
      requestBody:
        $ref: '#/components/requestBodies/create-reward-chain'
      responses:
        '201':
          $ref: '#/components/responses/201-admin-create-reward-chain'
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
        '422':
          $ref: '#/components/responses/422-admin-create-update-rc-vp-invalid-request'
  /v3/project/{project_id}/admin/reward_chain/id/{reward_chain_id}:
    get:
      summary: 보상 체인 가져오기
      description: 특정 보상 체인을 가져옵니다.
      operationId: admin-get-reward-chain
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/reward_chain_id-path-param'
      tags:
        - reward-chain-value-points-admin
      security:
        - basicAuth: []
      responses:
        '200':
          $ref: '#/components/responses/200-admin-get-reward-chain'
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/404-admin-reward-chain-not-found'
    put:
      summary: 보상 체인 업데이트
      description: 특정 보상 체인을 업데이트합니다.
      security:
        - basicAuth: []
      operationId: admin-update-reward-chain
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/reward_chain_id-path-param'
      tags:
        - reward-chain-value-points-admin
      requestBody:
        $ref: '#/components/requestBodies/update-reward-chain'
      responses:
        '204':
          $ref: '#/components/responses/204-admin-update-reward-chain'
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/404-admin-reward-chain-not-found'
        '422':
          $ref: '#/components/responses/422-admin-create-update-rc-vp-invalid-request'
    delete:
      summary: 보상 체인 삭제
      description: 특정 보상 체인을 삭제합니다.
      security:
        - basicAuth: []
      operationId: admin-delete-reward-chain
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/reward_chain_id-path-param'
      tags:
        - reward-chain-value-points-admin
      responses:
        '204':
          $ref: '#/components/responses/204-admin-delete-reward-chain'
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
  /v3/project/{project_id}/admin/reward_chain/id/{reward_chain_id}/toggle:
    put:
      summary: 보상 체인 토글
      description: 보상 체인을 활성화/비활성화합니다.
      security:
        - basicAuth: []
      operationId: admin-toggle-reward-chain
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/reward_chain_id-path-param'
      tags:
        - reward-chain-value-points-admin
      responses:
        '204':
          $ref: '#/components/responses/204-admin-toggle-reward-chain'
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
  /v3/project/{project_id}/admin/reward_chain/id/{reward_chain_id}/reset:
    post:
      summary: 보상 체인 재설정
      description: >-
        리워드 체인에 속한 모든 사용자의 가치 포인트 잔액과 진행 상황을 재설정합니다.<br>잔액은 가치 포인트 유형에 연동됩니다. 특정
        리워드 체인에 연동되지 않습니다. 해당 가치 포인트가 다른 체인에서 사용 중인 경우, 해당 가치 포인트를 사용하는 모든 체인의
        잔액이 재설정됩니다.<br>재설정 후에는 리워드 체인의 유효 기간을 업데이트할 수 있으며, 사용자는 다시 진행 상황을 쌓아갈 수
        있습니다.<br>클랜 잔액은 구성원의 잔액을 모두 합산하여 계산됩니다. 따라서 재설정 후에는 클랜 잔액도 재설정됩니다.<br> 이
        요청은 되돌릴 수 없으며 프로젝트의 모든 사용자에게 적용됩니다.


        <div class="notice"><strong>참고</strong>
         <br><br>
        유효 기간 중에는 보상 체인을 재설정하면 안 됩니다. 재설정한 사용자는 보상을 받기 전에 적립된 가치 포인트를 잃을 수도
        있습니다.

        </div>
      security:
        - basicAuth: []
      operationId: admin-reset-reward-chain
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/reward_chain_id-path-param'
      tags:
        - reward-chain-value-points-admin
      responses:
        '204':
          $ref: '#/components/responses/204-admin-reset-reward-chain'
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
  /v2/project/{project_id}/admin/daily_chain:
    get:
      summary: 일일 보상 목록 가져오기
      description: >-
        관리용 일일 보상 목록을 가져옵니다.


        <div class="notice"><strong>알림</strong><br><br>메서드는 항목의 페이지 매김된 목록을
        반환합니다. 최대 및 기본 값은 <strong>응답당 50개 항목입니다.</strong> 목록에서 더 많은 항목을 가져오려면
        `limit` 및 `offset` 매개변수를 사용하여 더 많은 페이지를 가져오십시오. 예를 들어, `limit = 25` 및
        `offset = 100`으로 메서드를 호출하면, 전체 목록에서 101번째 항목부터 시작하여 25개의 항목을
        반환합니다.</div>
      operationId: admin-get-daily-chains
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/limit-query-param'
        - $ref: '#/components/parameters/offset-query-param'
        - $ref: '#/components/parameters/enabled-query-param'
        - $ref: '#/components/parameters/is_expired-daily-chain-query-param'
        - $ref: '#/components/parameters/type-daily-chain-query-param'
      tags:
        - daily-chain-admin
      security:
        - basicAuth: []
      responses:
        '200':
          $ref: '#/components/responses/200-admin-get-list-daily-chains'
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
    post:
      summary: 일일 보상 생성
      description: 일일 보상을 생성합니다.
      security:
        - basicAuth: []
      operationId: admin-create-daily-chain
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
      tags:
        - daily-chain-admin
      requestBody:
        $ref: '#/components/requestBodies/create-daily-chain'
      responses:
        '201':
          $ref: '#/components/responses/201-admin-create-daily-chain'
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
        '422':
          $ref: '#/components/responses/422-admin-create-error-list'
  /v2/project/{project_id}/admin/daily_chain/id/{daily_chain_id}:
    get:
      summary: 일일 보상 받기
      description: 관리 작업을 수행하면 매일 특정 보상을 받습니다.
      operationId: admin-get-daily-chain
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/daily_chain_id-path-param'
      tags:
        - daily-chain-admin
      security:
        - basicAuth: []
      responses:
        '200':
          $ref: '#/components/responses/200-admin-get-daily-chain'
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/404-daily-chain-not-found'
    put:
      summary: 일일 보상을 업데이트합니다
      description: 특정 일일 보상을 업데이트합니다.
      security:
        - basicAuth: []
      operationId: admin-update-daily-chain
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/daily_chain_id-path-param'
      tags:
        - daily-chain-admin
      requestBody:
        $ref: '#/components/requestBodies/update-daily-chain'
      responses:
        '204':
          description: 일일 보상을 성공적으로 업데이트했습니다.
          content: {}
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/404-daily-chain-not-found'
        '422':
          $ref: '#/components/responses/422-admin-update-error-list'
    delete:
      summary: 일일 보상 삭제
      description: 특정 일일 보상을 삭제합니다.
      security:
        - basicAuth: []
      operationId: admin-delete-daily-chain
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/daily_chain_id-path-param'
      tags:
        - daily-chain-admin
      responses:
        '204':
          description: 일일 보상을 성공적으로 삭제했습니다.
          content: {}
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/404-daily-chain-not-found'
  /v2/project/{project_id}/admin/daily_chain/id/{daily_chain_id}/toggle:
    put:
      summary: 일일 보상 토글 설정
      description: 일일 보상을 활성화하거나 비활성화합니다.
      security:
        - basicAuth: []
      operationId: admin-toggle-daily-chain
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/daily_chain_id-path-param'
      tags:
        - daily-chain-admin
      responses:
        '204':
          description: 일일 보상이 비활성화되거나 활성화되었습니다.
          content: {}
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/404-daily-chain-not-found'
  /v2/project/{project_id}/admin/daily_chain/id/{daily_chain_id}/reset:
    post:
      summary: 일일 보상 초기화
      description: 모든 사용자의 일일 보상 진행도를 초기화합니다. `rolling` 유형의 일일 보상에만 적용됩니다.
      security:
        - basicAuth: []
      operationId: admin-reset-daily-chain
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/daily_chain_id-path-param'
      tags:
        - daily-chain-admin
      responses:
        '204':
          description: 일일 보상이 초기화되었습니다.
          content: {}
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/404-daily-chain-not-found'
  /v2/project/{project_id}/user/daily_chain:
    get:
      tags:
        - daily-chain-client
      operationId: get-daily-chains-list
      x-badges:
        - name: Client-side
          color: '#80eaff'
      summary: 현재 사용자의 일일 보상 가져오기
      description: >-
        클라이언트 엔드포인트. 현재 사용자의 일일 보상을 가져옵니다.


        <div class="notice"><strong>알림</strong><br><br>메서드는 항목의 페이지 매김된 목록을
        반환합니다. 최대 및 기본 값은 <strong>응답당 50개 항목입니다.</strong> 목록에서 더 많은 항목을 가져오려면
        <code>limit</code> 및 <code>offset</code> 매개변수를 사용하여 더 많은 페이지를 가져오십시오. 예를
        들어, <code>limit = 25</code> 및 <code>offset = 100</code>으로 메서드를 호출하면, 전체
        목록에서 101번째 항목부터 시작하여 25개의 항목을 반환합니다.</div>


        <br>


        <div class="note">
          <strong>참고</strong><br><br>
            이 API 호출은 인증을 위해 사용자 JWT를 사용합니다.<br><br>
            이 토큰은 <code>Authorization</code> 헤더에 다음 형식으로 포함해야 합니다: <code>Bearer &lt;user_JWT&gt;</code>. 사용자 JWT에 대한 자세한 내용은 이 호출의 <strong>보안</strong> 블록을 참조하십시오.
        </div>
      security:
        - XsollaLoginUserJWT: []
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/limit-query-param'
        - $ref: '#/components/parameters/offset-query-param'
      responses:
        '200':
          $ref: '#/components/responses/200-client-get-daily-chains-list'
        '401':
          $ref: '#/components/responses/401-client-auth-error'
  /v2/project/{project_id}/user/daily_chain/{daily_chain_id}:
    get:
      tags:
        - daily-chain-client
      operationId: get-user-daily-chain-by-id
      x-badges:
        - name: Client-side
          color: '#80eaff'
      summary: 현재 사용자의 ID로 일일 보상을 가져옵니다
      description: |-
        클라이언트 엔드포인트. ID로 현재 사용자의 일일 보상을 가져옵니다. <br>

        <div class="note">
          <strong>참고</strong><br><br>
            이 API 호출은 인증을 위해 사용자 JWT를 사용합니다.<br><br>
            이 토큰은 <code>Authorization</code> 헤더에 다음 형식으로 포함해야 합니다: <code>Bearer &lt;user_JWT&gt;</code>. 사용자 JWT에 대한 자세한 내용은 이 호출의 <strong>보안</strong> 블록을 참조하십시오.
        </div>
      security:
        - XsollaLoginUserJWT: []
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/daily_chain_id-path-param'
      responses:
        '200':
          description: 사용자의 일일 보상을 성공적으로 검색했습니다.
          content:
            application/json:
              examples:
                response:
                  $ref: '#/components/examples/200-client-daily-chain'
              schema:
                $ref: '#/components/schemas/client-daily-chain-model'
        '404':
          $ref: '#/components/responses/404-daily-chain-not-found'
  /v2/project/{project_id}/user/daily_chain/{daily_chain_id}/step/number/{step_number}/claim:
    post:
      tags:
        - daily-chain-client
      operationId: claim-user-daily-chain-step-reward
      x-badges:
        - name: Client-side
          color: '#80eaff'
      summary: 일일 단계 보상 청구하기
      description: >-
        클라이언트 엔드포인트. 현재 사용자의 일일 보상에서 단계 보상을 청구합니다. 모든 단계는 순차적으로만 청구할 수 있습니다. 누락된
        단계의 보상은 가상 또는 실제 통화로, 또는 광고 시청으로 얻을 수 없습니다. <br>


        <div class="note">
          <strong>참고</strong><br><br>
            이 API 호출은 인증을 위해 사용자 JWT를 사용합니다.<br><br>
            이 토큰은 <code>Authorization</code> 헤더에 다음 형식으로 포함해야 합니다: <code>Bearer &lt;user_JWT&gt;</code>. 사용자 JWT에 대한 자세한 내용은 이 호출의 <strong>보안</strong> 블록을 참조하십시오.
        </div>
      security:
        - XsollaLoginUserJWT: []
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/daily_chain_id-path-param'
        - $ref: '#/components/parameters/daily_chain_step_number-path-param'
      responses:
        '204':
          description: 현재 사용자의 일일 보상 단계에 대한 단계 보상을 성공적으로 청구했습니다.
        '401':
          $ref: '#/components/responses/401-client-auth-error'
        '404':
          $ref: '#/components/responses/404-daily-chain-step-not-found'
        '422':
          description: 청구할 수 없는 단계입니다.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/daily-chain-error-model'
              examples:
                invalid-step:
                  $ref: >-
                    #/components/examples/422-daily-chain-claim-error-invalid-step
  /v2/project/{project_id}/user/offer_chain:
    get:
      tags:
        - offer-chain-client
      operationId: get-offer-chains-list
      x-badges:
        - name: Client-side
          color: '#80eaff'
      summary: 현재 사용자의 혜택 체인 가져오기
      description: >-
        현재 사용자의 혜택 체인을 가져옵니다.


        <div class="notice"><strong>참고</strong><br><br>모든 프로젝트에서 단일 응답에 반환할 수 있는
        아이템 수는 제한되어 있습니다. 기본값 및 최대값은 <strong>응답당 30개 아이템</strong>입니다. 더 많은 데이터를
        가져오려면 페이지 설정에서 <code>limit</code> 및 <code>offset</code> 쿼리 매개 변수를
        사용하세요.</div>


        <br>


        <div class="note">
          <strong>참고</strong><br><br>
            이 API 호출은 인증을 위해 사용자 JWT를 사용합니다.<br><br>
            이 토큰은 <code>Authorization</code> 헤더에 다음 형식으로 포함해야 합니다: <code>Bearer &lt;user_JWT&gt;</code>. 사용자 JWT에 대한 자세한 내용은 이 호출의 <strong>보안</strong> 블록을 참조하십시오.
        </div>
      security:
        - XsollaLoginUserJWT: []
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/limit-query-param'
        - $ref: '#/components/parameters/offset-query-param'
      responses:
        '200':
          $ref: '#/components/responses/200-client-get-offer-chains-list'
  /v2/project/{project_id}/user/offer_chain/{offer_chain_id}:
    get:
      tags:
        - offer-chain-client
      operationId: get-user-offer-chain-by-id
      x-badges:
        - name: Client-side
          color: '#80eaff'
      summary: ID로 현재 사용자의 혜택 체인 가져오기
      description: |-
        현재 사용자의 혜택 체인을 혜택 체인의 ID로 가져옵니다. <br>

        <div class="note">
          <strong>참고</strong><br><br>
            이 API 호출은 인증을 위해 사용자 JWT를 사용합니다.<br><br>
            이 토큰은 <code>Authorization</code> 헤더에 다음 형식으로 포함해야 합니다: <code>Bearer &lt;user_JWT&gt;</code>. 사용자 JWT에 대한 자세한 내용은 이 호출의 <strong>보안</strong> 블록을 참조하십시오.
        </div>
      security:
        - XsollaLoginUserJWT: []
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/offer_chain_id-path-param'
      responses:
        '200':
          description: 사용자의 혜택 체인을 성공적으로 검색했습니다.
          content:
            application/json:
              examples:
                response:
                  $ref: '#/components/examples/200-client-offer-chain'
              schema:
                $ref: '#/components/schemas/client-offer-chain-model'
        '404':
          $ref: '#/components/responses/404-offer-chain-not-found'
  /v2/project/{project_id}/user/offer_chain/{offer_chain_id}/step/number/{step_number}/claim:
    post:
      tags:
        - offer-chain-client
      operationId: claim-user-offer-chain-step-reward
      x-badges:
        - name: Client-side
          color: '#80eaff'
      summary: 무료 혜택 체인 단계
      description: |-
        현재 사용자의 혜택 체인 단계 진행을 완료하고 관련 리워드를 지급합니다.

        <div class="notice">
          <strong>알림</strong><br><br>
         혜택 체인의 무료 단계에서만 이 호출을 사용해 주세요.
         실제 통화로 결제해야 하는 단계의 경우, <a href="/ko/api/shop-builder/operation/order-user-offer-chain-step-reward">유료 오퍼 체인 단계 주문 생성</a> 호출을 대신 사용해 주세요.
        </div>

        <br>

        <div class="note">
          <strong>참고</strong><br><br>
            이 API 호출은 인증을 위해 사용자 JWT를 사용합니다.<br><br>
            이 토큰은 <code>Authorization</code> 헤더에 다음 형식으로 포함해야 합니다: <code>Bearer &lt;user_JWT&gt;</code>. 사용자 JWT에 대한 자세한 내용은 이 호출의 <strong>보안</strong> 블록을 참조하십시오.
        </div>
      security:
        - XsollaLoginUserJWT: []
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/offer_chain_id-path-param'
        - $ref: '#/components/parameters/offer_chain_step_number-path-param'
      responses:
        '200':
          description: 무료 단계가 성공적으로 완료되어 보상이 지급되었습니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  order_id:
                    type: integer
                    description: 주문 ID입니다.
              examples:
                response:
                  value:
                    order_id: 641
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-client-auth'
        '404':
          $ref: '#/components/responses/404-offer-chain-step-not-found'
        '422':
          description: 이 단계는 신청할 수 없습니다. 이전 단계가 모두 완료되었고 해당 단계가 무료 단계로 표시되어 있는지 확인해 주세요.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/offer-chain-error-model'
              examples:
                invalid-step:
                  $ref: >-
                    #/components/examples/422-offer-chain-claim-error-invalid-step
  /v2/project/{project_id}/user/offer_chain/{offer_chain_id}/step/number/{step_number}/order:
    post:
      tags:
        - offer-chain-client
        - payment-client-side
      operationId: order-user-offer-chain-step-reward
      x-badges:
        - name: Client-side
          color: '#80eaff'
      summary: 유료 혜택 체인 단계 주문 생성
      description: >-
        지정된 유료 혜택 체인 단계와 연결된 아이템의 주문을 생성합니다. 생성된 주문은 `new` 주문 상태를 가져옵니다.


        결제 UI를 새 창에서 열려면 `https://secure.xsolla.com/paystation4/?token={token}`
        링크를 사용합니다. 여기서 `{token}`은 수신한 토큰입니다.


        테스트를 진행할 때에는
        `https://sandbox-secure.xsolla.com/paystation4/?token={token}` URL을
        사용합니다.


        <div class="notice">
          <strong>알림</strong> <br><br>
         이 메서드는 클라이언트 측에서 사용해야 합니다. 사용자의 IP 주소는 통화 및 사용 가능한 결제 방법에 영향을 미치는 국가를 결정하는 데 사용됩니다. 서버 측에서 이 메서드를 사용하면 통화가 잘못 감지되어 <a href="https://developers.xsolla.com/ko/doc/pay-station/">페이 스테이션</a>의 결제 방식에 영향을 줄 수 있습니다.
        </div>


        <br>


        <div class="notice">
          <strong>알림</strong><br><br>
         유료 혜택 체인 단계에서만 이 호출을 사용하세요.
         무료 단계의 경우 <a href="/ko/api/shop-builder/operation/claim-user-offer-chain-step-reward">무료 혜택 체인 단계 신청</a> 호출을 대신 사용해 주세요.
        </div>


        <br>


        <div class="note">
          <strong>참고</strong><br><br>
            이 API 호출은 인증을 위해 사용자 JWT를 사용합니다.<br><br>
            이 토큰은 <code>Authorization</code> 헤더에 다음 형식으로 포함해야 합니다: <code>Bearer &lt;user_JWT&gt;</code>. 사용자 JWT에 대한 자세한 내용은 이 호출의 <strong>보안</strong> 블록을 참조하십시오.
        </div>
      security:
        - XsollaLoginUserJWT: []
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/offer_chain_id-path-param'
        - $ref: '#/components/parameters/offer_chain_step_number-path-param'
      responses:
        '200':
          $ref: '#/components/responses/Cart-Payment_200-order-created'
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-client-auth'
        '404':
          $ref: '#/components/responses/404-offer-chain-step-not-found'
        '422':
          description: 이 단계는 구매할 수 없습니다.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/offer-chain-error-model'
              examples:
                invalid-step:
                  $ref: >-
                    #/components/examples/422-offer-chain-claim-error-invalid-step
  /v2/project/{project_id}/admin/offer_chain:
    get:
      summary: 혜택 체인 목록 가져오기
      description: >-
        관리할 혜택 체인 목록을 가져옵니다.


        <div class="notice"><strong>참고</strong><br><br>모든 프로젝트에서 단일 응답에 반환할 수 있는
        아이템 수는 제한되어 있습니다. 기본값 및 최댓값은 <strong>응답당 10개 아이템</strong>입니다. 더 많은 데이터를
        얻으려면 페이지 설정에서 <code>limit</code> 및 <code>offset</code> 쿼리 매개 변수를 사용해
        주세요.</div>
      operationId: admin-get-offer-chains
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/limit-query-param'
        - $ref: '#/components/parameters/offset-query-param'
        - $ref: '#/components/parameters/enabled-query-param'
      tags:
        - offer-chain-admin
      security:
        - basicAuth: []
      responses:
        '200':
          $ref: '#/components/responses/200-admin-get-list-offer-chains'
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
    post:
      summary: 혜택 체인 생성
      description: 혜택 체인을 생성합니다.
      security:
        - basicAuth: []
      operationId: admin-create-offer-chain
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
      tags:
        - offer-chain-admin
      requestBody:
        $ref: '#/components/requestBodies/create-offer-chain'
      responses:
        '201':
          $ref: '#/components/responses/201-admin-create-offer-chain'
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
        '422':
          $ref: '#/components/responses/422-create-error-list'
  /v2/project/{project_id}/admin/offer_chain/id/{offer_chain_id}:
    get:
      summary: 혜택 체인 가져오기
      description: 관리할 특정 혜택 체인을 가져옵니다.
      operationId: admin-get-offer-chain
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/offer_chain_id-path-param'
      tags:
        - offer-chain-admin
      security:
        - basicAuth: []
      responses:
        '200':
          $ref: '#/components/responses/200-admin-get-offer-chain'
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/404-offer-chain-not-found'
    put:
      summary: 혜택 체인 업데이트
      description: 특정 혜택 체인을 업데이트합니다.
      security:
        - basicAuth: []
      operationId: admin-update-offer-chain
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/offer_chain_id-path-param'
      tags:
        - offer-chain-admin
      requestBody:
        $ref: '#/components/requestBodies/update-offer-chain'
      responses:
        '204':
          description: 혜택 체인을 성공적으로 업데이트했습니다.
          content: {}
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/404-offer-chain-not-found'
        '422':
          $ref: '#/components/responses/422-update-error-list'
    delete:
      summary: 혜택 체인 삭제
      description: >-
        특정 혜택 체인을 삭제합니다.


        삭제 후:<ul><li>사용자가 이미 받은 모든 리워드는 유지됩니다.</li><li>완료되지 않은 단계는 사용할 수 없게 되며
        해당 리워드는 더 이상 받을 수 없습니다.</li></ul>


        <a href="/ko/api/shop-builder/operation/admin-toggle-offer-chain">혜택 체인
        토글 전환</a> 호출을 통해 혜택 체인을 비활성화하는 것과 달리, 삭제는 취소할 수 없으며 사용자 진행 상황은 보존되지
        않습니다.
      security:
        - basicAuth: []
      operationId: admin-delete-offer-chain
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/offer_chain_id-path-param'
      tags:
        - offer-chain-admin
      responses:
        '204':
          description: 혜택 체인을 성공적으로 삭제했습니다.
          content: {}
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/404-offer-chain-not-found'
  /v2/project/{project_id}/admin/offer_chain/id/{offer_chain_id}/toggle:
    put:
      summary: 혜택 체인 토글 전환
      description: |-
        혜택 체인을 활성화 또는 비활성화합니다.

        혜택 체인을 비활성화하면 사용자는 일시적으로 액세스 권한을 잃지만 진행 상황은 유지됩니다.

        혜택 체인을 다시 활성화하면 사용자는 중단한 단계부터 계속 진행할 수 있습니다.
      security:
        - basicAuth: []
      operationId: admin-toggle-offer-chain
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/offer_chain_id-path-param'
      tags:
        - offer-chain-admin
      responses:
        '204':
          description: 혜택 체인이 비활성화/활성화되었습니다.
          content: {}
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/404-offer-chain-not-found'
  /v2/project/{project_id}/admin/items/upsell:
    get:
      tags:
        - upsell-admin
      operationId: get-upsell-configurations-for-project-admin
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      responses:
        '200':
          description: 프로젝트에서 상향 판매에 사용되는 구성 세부 정보 및 아이템 목록.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    is_enabled:
                      type: boolean
                      example: true
                      description: Whether upsell is enabled for the project.
                    type:
                      type: string
                      enum:
                        - fixed_list
                        - most_sellable
                        - only_promotions
                      example: fixed_list
                      description: The type of upsell.
                    items:
                      type: array
                      example:
                        - item_id: 1
                          sku: com.xsolla.booster_mega_1
                          name:
                            en: Item's name
                            de: Name des Artikels
                          type: virtual_good
                      description: >-
                        The list of items SKU that are a part of the upsell in
                        the project.
                      items:
                        type: object
                        properties:
                          item_id:
                            $ref: '#/components/schemas/item_id'
                          sku:
                            $ref: '#/components/schemas/sku'
                          type:
                            $ref: '#/components/schemas/item_type'
                          name:
                            $ref: '#/components/schemas/name-localization-object'
                          bundle_type:
                            $ref: '#/components/schemas/bundle_type'
                          unit_type:
                            $ref: '#/components/schemas/unit_type'
                          unit_items:
                            type: array
                            description: Game keys for different DRMs.
                            items:
                              type: object
                              description: >-
                                Game key item. It represents game on a certain
                                platform (steam, gog, etc.).
                              properties:
                                item_id:
                                  $ref: '#/components/schemas/item_id'
                                sku:
                                  $ref: '#/components/schemas/sku'
                                type:
                                  $ref: '#/components/schemas/item_type'
                                name:
                                  $ref: >-
                                    #/components/schemas/name-localization-object
                                drm_name:
                                  $ref: '#/components/schemas/drm_name'
                                drm_sku:
                                  $ref: '#/components/schemas/drm_sku'
              examples:
                upsell:
                  summary: Project has upsell
                  value:
                    - is_enabled: true
                      type: fixed_list
                      items:
                        - item_id: 1
                          sku: com.xsolla.booster_mega_1
                          name:
                            en: Item's name
                            de: Name des Artikels
                          type: virtual_good
                        - item_id: 2
                          sku: com.xsolla.booster_mega_2
                          name:
                            en: Item's name
                            de: Name des Artikels
                          type: bundle
                          bundle_type: standard
                        - item_id: 3
                          sku: com.xsolla.mega_game_1
                          name:
                            en: Mega game
                          type: unit
                          unit_type: game
                          unit_items:
                            - item_id: 4
                              sku: com.xsolla.mega_game_steam_1
                              name:
                                en: Mega game steam
                              drm_name: Steam
                              drm_sku: steam_key_1
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-client-auth'
      security:
        - XsollaLoginUserJWT: []
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
      summary: 프로젝트의 상향 판매에 대한 정보 얻기
      description: 프로젝트의 상향 판매에 대한 정보(사용 여부, 상향 판매 유형 및 이 상향 판매의 일부인 아이템의 SKU 목록)를 검색합니다.
    post:
      tags:
        - upsell-admin
      operationId: post-upsell
      summary: 상향 판매 생성
      description: |-
        프로젝트에 대한 상향 판매를 생성합니다. <br>

        <div class="notice">
          <strong>Notice</strong><br><br>
            이 API 호출은 인증을 위해 사용자 JWT를 사용합니다.<br><br>
            <code>Authorization</code> 헤더에 <code>Bearer &lt;user_JWT&gt;</code> 형식으로 토큰을 포함하세요. 사용자 JWT에 대한 자세한 내용은 이 호출의 <strong>보안</strong> 블록을 참조하세요.
        </div>
      security:
        - XsollaLoginUserJWT: []
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
      requestBody:
        $ref: '#/components/requestBodies/create-upsell'
      responses:
        '202':
          description: 프로젝트를 위해 상향 판매가 생성되었습니다.
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-client-auth'
        '404':
          $ref: '#/components/responses/Upsell-404-item-not-found'
        '422':
          $ref: '#/components/responses/Upsell-422-invalid-request'
    put:
      tags:
        - upsell-admin
      operationId: put-upsell
      summary: 상향 판매 업데이트
      description: |-
        프로젝트에 대한 상향 판매를 업데이트합니다. <br>

        <div class="notice">
          <strong>Notice</strong><br><br>
            이 API 호출은 인증을 위해 사용자 JWT를 사용합니다.<br><br>
            <code>Authorization</code> 헤더에 <code>Bearer &lt;user_JWT&gt;</code> 형식으로 토큰을 포함하세요. 사용자 JWT에 대한 자세한 내용은 이 호출의 <strong>보안</strong> 블록을 참조하세요.
        </div>
      security:
        - XsollaLoginUserJWT: []
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
      requestBody:
        $ref: '#/components/requestBodies/update-upsell'
      responses:
        '202':
          description: 프로젝트에 대한 상향 판매가 업데이트되었습니다.
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-client-auth'
        '404':
          $ref: '#/components/responses/Upsell-404-item-not-found'
        '422':
          $ref: '#/components/responses/Upsell-422-invalid-request'
  /v2/project/{project_id}/admin/items/upsell/{toggle}:
    put:
      tags:
        - upsell-admin
      operationId: put-upsell-toggle-active-inactive
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      responses:
        '202':
          description: 프로젝트의 상향 판매가 활성화되거나 비활성화되었습니다.
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-client-auth'
      security:
        - XsollaLoginUserJWT: []
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - name: toggle
          in: path
          required: true
          description: 활성화 상태.
          schema:
            type: string
            example: activate
      summary: 프로젝트의 상향 판매 활성화/비활성화
      description: |-
        프로젝트에서 상향 판매의 상태를 활성 또는 비활성으로 변경합니다. <br>

        <div class="notice">
          <strong>Notice</strong><br><br>
            이 API 호출은 인증을 위해 사용자 JWT를 사용합니다.<br><br>
            <code>Authorization</code> 헤더에 <code>Bearer &lt;user_JWT&gt;</code> 형식으로 토큰을 포함하세요. 사용자 JWT에 대한 자세한 내용은 이 호출의 <strong>보안</strong> 블록을 참조하세요.
        </div>
  /v2/project/{project_id}/items/upsell:
    get:
      tags:
        - upsell-client
      operationId: get-upsell-for-project-client
      x-badges:
        - name: Client-side
          color: '#80eaff'
      responses:
        '200':
          $ref: '#/components/responses/Upsell-200-get-client-list'
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-client-auth'
      security:
        - XsollaLoginUserJWT: []
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
      summary: 프로젝트에서 상향 판매 아이템 목록 가져 오기
      description: |-
        이미 설정된 경우 프로젝트의 상향 판매 아이템 목록을 가져옵니다. <br>

        <div class="note">
          <strong>참고</strong><br><br>
            이 API 호출은 인증을 위해 사용자 JWT를 사용합니다.<br><br>
            이 토큰은 <code>Authorization</code> 헤더에 다음 형식으로 포함해야 합니다: <code>Bearer &lt;user_JWT&gt;</code>. 사용자 JWT에 대한 자세한 내용은 이 호출의 <strong>보안</strong> 블록을 참조하십시오.
        </div>
  /projects/{project_id}/users/{user_id}/points/{point_id}/balance:
    servers:
      - url: https://loyalty-points.xsolla.com
    get:
      summary: 사용자의 로열티 포인트 잔액 조회
      description: 지정된 로열티 포인트의 현재 잔액을 반환합니다.
      tags:
        - loyalty-program-admin
      operationId: loyalty-get-user-point-balance
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      security:
        - basicAuth: []
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/user_id-path-param'
        - $ref: '#/components/parameters/point_id-path-param'
      responses:
        '200':
          $ref: '#/components/responses/200-get-point-balance'
        '401':
          $ref: '#/components/responses/ItemGroup_401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/404-user-or-point-not-found'
  /projects/{project_id}/users/{user_id}/points/{point_id}/balance/debit:
    servers:
      - url: https://loyalty-points.xsolla.com
    post:
      summary: 사용자의 로열티 포인트 잔액 차감
      description: 지정된 금액만큼 사용자의 로열티 포인트 잔액을 차감합니다.
      tags:
        - loyalty-program-admin
      operationId: loyalty-debit-user-point-balance
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      security:
        - basicAuth: []
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/user_id-path-param'
        - $ref: '#/components/parameters/point_id-path-param'
      requestBody:
        $ref: '#/components/requestBodies/debit-point-balance'
      responses:
        '200':
          $ref: '#/components/responses/200-debit-point-balance'
        '400':
          $ref: '#/components/responses/400-bad-request'
        '401':
          $ref: '#/components/responses/ItemGroup_401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/404-user-or-point-not-found'
        '422':
          $ref: '#/components/responses/422-insufficient-balance'
  /projects/{project_id}/users/{user_id}/points/{point_id}/balance/credit:
    servers:
      - url: https://loyalty-points.xsolla.com
    post:
      summary: 사용자의 로열티 포인트 잔액 적립
      description: 지정된 금액만큼 사용자의 로열티 포인트 잔액을 적립합니다.
      tags:
        - loyalty-program-admin
      operationId: loyalty-credit-user-point-balance
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      security:
        - basicAuth: []
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/user_id-path-param'
        - $ref: '#/components/parameters/point_id-path-param'
      requestBody:
        $ref: '#/components/requestBodies/credit-point-balance'
      responses:
        '200':
          $ref: '#/components/responses/200-credit-point-balance'
        '400':
          $ref: '#/components/responses/400-bad-request'
        '401':
          $ref: '#/components/responses/ItemGroup_401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/404-user-or-point-not-found'
components:
  securitySchemes:
    basicAuth:
      type: http
      description: >-
        서버 측 호출은 `basicAuth` 인증 체계를 사용합니다. API에 대한 모든 요청은 `Authorization: Basic
        <your_authorization_basic_key>` 헤더를 포함해야 하며, 여기에서
        `your_authorization_basic_key`는 Base64 표준에 따라 인코딩된 `project_id:api_key`
        쌍입니다.


        필요한 경우 `project_id` 대신 `merchant_id`를 사용할 수 있습니다. 기능에는 영향을 미치지 않습니다.


        다음과 같이 매개 변수 값을 확인하려면 [관리자 페이지](https://publisher.xsolla.com/)로 이동합니다.


        * `merchant_id`는 다음 위치에 표시됩니다:
          * **Company settings > Company** 섹션
          * 관리자 페이지의 모든 페이지에서 브라우저 주소 표시줄의 URL. URL 형식은 다음과 같습니다: `https://publisher.xsolla.com/<merchant_id>`.
        * `api_key`는 생성 시 관리자 페이지에서 한 번만 표시되며, 귀하의 측에서 저장해야 합니다. 새 키는 다음 섹션에서
        생성할 수 있습니다:
          * [Company settings > API keys](https://publisher.xsolla.com/0/settings/api_key)
          * [Project settings > API keys](https://publisher.xsolla.com/0/projects/0/edit/api_key)

        {% html name="div" attrs={"class": "notice"} %}

        **Notice**


        필수 API 호출에 `project_id` 경로 매개 변수가 포함되어 있지 않으면, 모든 회사 프로젝트에 대해 유효한 API 키를
        사용하여 인증하세요.

        {% /html %}


        * `project_id`는 다음 위치에 표시됩니다:
          * 프로젝트 이름 옆의 관리자 페이지.
          * 관리자 페이지에서 프로젝트 작업 시 브라우저 주소 표시줄의 URL. URL 형식은 다음과 같습니다: `https://publisher.xsolla.com/<merchant_id>/projects/<project_id>`.

        API 키 작업에 대한 자세한 정보는 [API
        레퍼런스](https://developers.xsolla.com/ko/api/getting-started/#api_keys_overview)를
        참조하세요.
      scheme: basic
    XsollaLoginUserJWT:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        클라이언트 측 호출은 `XsollaLoginUserJWT` 인증 체계를 사용합니다. 요청에는 Bearer `<user_JWT>`
        형식으로 `Authorization` 헤더에 사용자의 JWT를 포함해야 합니다. 이 토큰은 사용자를 식별하고 개인화된 데이터에
        대한 액세스 를 제공합니다. 토큰 생성 방법에 대한 자세한 내용은 [엑솔라 로그인 API
        문서](/ko/api/login/authentication-schemes#getting-user-token)를 참조하십시오.


        또는 [결제 UI를 여는 토큰](/ko/api/pay-station/token/create-token)을 사용할 수 있습니다.
    AuthForCart:
      type: http
      scheme: bearer
      description: >-
        이 `AuthForCart` 인증 체계는 장바구니 구매에 사용되며 두 가지 모드를 지원합니다.


        1. 사용자의 JWT로 인증합니다. 토큰은 인증 헤더에 `Authorization: Bearer <user_JWT>` 형식으로
        전달되며, `<user_JWT>`는 사용자 토큰입니다. 이 토큰은 사용자를 식별하고 사용자 맞춤 설정된 데이터에 대한 액세스를
        제공합니다.


        또는 [결제 UI를 여는 토큰](/ko/api/pay-station/token/create-token)을 사용할 수 있습니다.


        2. `Authorization` 헤더가 없는 간소화된 모드. 이 모드는 인증되지 않은 사용자만 사용하며, [게임 키
        판매](/ko/doc/buy-button/how-to/set-up-authentication/#guides_buy_button_selling_items_not_authenticated_users)에만
        적용할 수 있습니다. 토큰 대신 요청에 다음 헤더를 포함해야 합니다.

        * 요청 ID와 `x-unauthorized-id`

        * Base64로 인코딩된 사용자의 이메일 주소와 `x-user`.
    basicMerchantAuth:
      type: http
      description: >-
        서버 측 호출은 `basicMerchantAuth` 인증 체계를 사용합니다. 모든 API 요청에는 `Authorization:
        Basic <your_authorization_basic_key>` 헤더가 포함되어야 하며, 여기서
        `your_authorization_basic_key`는 Base64 표준에 따라 인코딩된 `merchant_id:api_key`
        쌍입니다.


        다음과 같이 매개 변수 값을 확인하려면 [관리자 페이지](https://publisher.xsolla.com/)로 이동합니다.


        * `merchant_id`는 다음 위치에 표시됩니다:
          * **Company settings > Company** 섹션
          * 관리자 페이지의 모든 페이지에서 브라우저 주소 표시줄의 URL에 표시됩니다. URL 형식은 다음과 같습니다: `https://publisher.xsolla.com/<merchant_id>`
        * `api_key`는 생성 시 관리자 페이지에 한 번만 표시되며, 귀하의 측에서 저장해야 합니다. 새로운 키는 [Company
        settings > API keys](https://publisher.xsolla.com/0/settings/api_key)
        섹션에서 생성할 수 있습니다.


        API 키 작업에 대한 자세한 정보는 [API
        레퍼런스](https://developers.xsolla.com/ko/api/getting-started/#api_keys_overview)를
        참조하세요.
      scheme: basic
  parameters:
    project_id-path-param:
      name: project_id
      in: path
      required: true
      description: >-
        프로젝트 ID. 이 매개 변수는 프로젝트 이름 옆의 [관리자
        페이지](https://publisher.xsolla.com/0/projects/0/)에서 또는 프로젝트 작업 시 브라우저 주소
        표시줄에서 확인할 수 있습니다. URL 형식은 다음과 같습니다:
        `https://publisher.xsolla.com/<merchant_id>/projects/<project_id>`.
      schema:
        type: integer
        example: 44056
    limit-query-param:
      name: limit
      in: query
      example: 50
      required: false
      description: 페이지 요소 개수 제한입니다.
      schema:
        type: integer
        example: 50
        minimum: 1
    offset-query-param:
      name: offset
      in: query
      required: false
      example: 0
      description: 목록이 생성된 요소의 개수입니다(개수는 0부터 시작함).
      schema:
        type: integer
        example: 0
        minimum: 0
    enabled-query-param:
      name: enabled
      in: query
      required: false
      description: '`is_enabled` 플래그로 요소를 필터링합니다.'
      schema:
        type: integer
    promotion_id-path-param:
      name: promotion_id
      in: path
      required: true
      description: 프로모션 ID입니다. 프로젝트 내부의 고유 프로모션 식별자입니다.
      schema:
        type: integer
        example: 111425
    code-path-param:
      name: code
      in: path
      required: true
      description: 대/소문자를 구분하는 고유한 코드입니다. 문자와 숫자를 포함합니다.
      schema:
        type: string
        example: WINTER2021
        minLength: 1
        maxLength: 128
    coupon_code-path-param:
      name: coupon_code
      in: path
      required: true
      description: 고유한 대/소문자 구분 코드입니다. 문자와 숫자를 포함합니다.
      schema:
        type: string
        example: WINTER2021
        minLength: 1
        maxLength: 128
    external_id-promotion-path-param:
      name: external_id
      in: path
      required: true
      description: 프로모션 외부 ID입니다. 프로젝트 내부의 고유 프로모션 식별자입니다.
      schema:
        type: integer
        example: coupon_44056_1
    promocode_code-path-param:
      name: promocode_code
      in: path
      required: true
      description: 고유한 대/소문자 구분 코드입니다. 문자와 숫자를 포함합니다.
      schema:
        type: string
        example: SO6rew99j9
        minLength: 1
        maxLength: 128
    user_external_id-query-param:
      name: user_external_id
      in: query
      required: true
      description: 사용자 외부 ID
      schema:
        type: string
        example: d342dad2-9d59-11e9-a384-42010aa8003f
    codes-query-param:
      name: codes[]
      in: query
      description: 고유한 대/소문자 구분 코드입니다. 문자와 숫자만 포함합니다.
      schema:
        type: array
        items:
          type: string
          minLength: 1
          maxLength: 128
    is_enabled-query-param:
      name: is_enabled
      in: query
      required: false
      description: '`is_enabled` 플래그로 요소를 필터링합니다.'
      schema:
        type: integer
    personalized-catalog-rule_id-path-param:
      name: rule_id
      in: path
      required: true
      description: 규칙 ID입니다.
      schema:
        type: number
        example: 1
    item_sku-path-param:
      name: item_sku
      in: path
      required: true
      description: 아이템 SKU입니다.
      schema:
        type: string
        example: booster_mega_1
    value_point_sku-path-param:
      name: value_point_sku
      in: path
      required: true
      description: 가치 포인트 SKU입니다.
      schema:
        type: string
        example: value_point_3
    reward_chain_id-path-param:
      name: reward_chain_id
      in: path
      required: true
      description: 보상 체인 ID입니다.
      schema:
        type: integer
        example: 101
    reward_chain_step_id-path-param:
      name: step_id
      in: path
      required: true
      description: 보상 체인의 단계 ID입니다.
      schema:
        type: integer
        example: 120
    is_expired-daily-chain-query-param:
      name: is_expired
      in: query
      required: false
      description: 만료된 보상만 표시하도록 일일 보상을 필터링합니다.
      schema:
        type: integer
    type-daily-chain-query-param:
      name: type
      in: query
      required: false
      description: 필터를 통해 일일 보상을 필터링하여 지정된 유형만 반환합니다.
      schema:
        type: string
        enum:
          - calendar_hard
          - rolling_skippable
          - rolling_unskippable
    daily_chain_id-path-param:
      name: daily_chain_id
      in: path
      required: true
      description: 일일 보상 ID입니다.
      schema:
        type: integer
        example: 101
    daily_chain_step_number-path-param:
      name: step_number
      in: path
      required: true
      description: 일일 보상 단계 번호입니다.
      schema:
        type: integer
        example: 1
    offer_chain_id-path-param:
      name: offer_chain_id
      in: path
      required: true
      description: 혜택 체인 ID입니다.
      schema:
        type: integer
        example: 101
    offer_chain_step_number-path-param:
      name: step_number
      in: path
      required: true
      description: 혜택 체인 단계 번호입니다.
      schema:
        type: integer
        example: 1
    user_id-path-param:
      name: user_id
      in: path
      required: true
      description: >-
        시스템의 사용자 ID입니다. 이 ID는 `user.id` 매개 변수 전달하는 값과 일치해야 합니다. 이 매개 변수는 [결제 토큰
        생성](https://developers.xsolla.com/ko/api/pay-station/token/create-token)
        시 사용되며, 로열티 포인트는 이 사용자 ID와 연결됩니다.
      schema:
        type: string
        example: d342dad2-9d59-11e9-a384-42010aa8003f
    point_id-path-param:
      name: point_id
      in: path
      required: true
      description: >-
        로열티 포인트 ID입니다. 로열티 포인트는 관리자 페이지의 [LiveOps > 로열티
        프로그램](https://publisher.xsolla.com/0/projects/0/storefront/loyalty-program)
        섹션에서 구성합니다. ID를 가져오려면 [카탈로그 조회 API
        호출](https://developers.xsolla.com/ko/api/catalog/virtual-items-currency-catalog/get-virtual-items)을
        사용합니다. ID는 `loyalty_rewards[].sku` 매개 변수로 반환됩니다.
      schema:
        type: string
        format: uuid
        example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
  schemas:
    Promotions_promotion_id:
      type: integer
      description: 프로모션 ID입니다. 프로젝트 내부의 고유 프로모션 식별자입니다.
      example: 1
    promotion_periods:
      type: array
      nullable: false
      description: 프로모션의 유효 기간. 기간이 여러 개 지정된 경우 `date_from`와 `date_until`가 모두 필요합니다.
      items:
        type: object
        properties:
          date_from:
            type: string
            format: date-time
            nullable: false
            example: '2020-08-11T10:00:00+03:00'
            description: 지정된 프로모션의 시작 날짜.
          date_until:
            type:
              - string
              - 'null'
            format: date-time
            example: '2020-08-11T20:00:00+03:00'
            description: >-
              지정된 프로모션의 종료 날짜. `null`로 설정된 경우 프로모션은 무기한입니다. 단일 유효 기간이 지정된 경우에만
              `null`로 설정할 수 있습니다.
        required:
          - date_from
    Promotions_coupon_name:
      type: object
      description: |-
        프로모션의 이름입니다. 키가 "^[a-z]{2}-[A-Z]{2}$" 형식의 로케일인
        키/값 쌍을 포함해야 하며 값은 문자열입니다.
      additionalProperties:
        type: string
      example:
        en-US: Coupon title
        de-DE: Gutscheintitel
      default:
        en-US: Coupon title
        de-DE: Gutscheintitel
    unit_items:
      type: array
      description: >-
        플랫폼별 게임 키 모음. 아이템 유형이 `unit`(`bonus.item.type = 'unit'`)인 경우에만 사용됩니다. 게임
        키 패키지에 플랫폼별 키가 포함되어 있는 경우, 사용자는 그중 하나를 보너스로 선택할 수 있습니다.
      items:
        type: object
        properties:
          sku:
            type: string
            example: cool_game_steam
            pattern: ^[a-zA-Z0-9_\-.]*$
            description: >-
              고유한 플랫폼별 게임 키 패키지 ID. 허용된 문자: a–z, A–Z, 0–9, 맞침표(`.`), 하이픈(`-`),
              밑줄(`_`). `bonus.item.​sku` 및 `bonus.item.unit_items.drm_sku` 값을
              결합합니다. 예를 들어, `bonus.item.​sku = 'cool_game'` 및
              `bonus.item.unit_items.drm_sku = 'steam'`인 경우, 값은
              `cool_game_steam`이 됩니다.
          is_free:
            type: boolean
          type:
            type: string
            enum:
              - game_key
            description: 아이템이 게임 키인지 여부를 나타냅니다.
          name:
            type: string
            example: Awesome Game
            description: 게임 타이틀입니다.
          drm_name:
            type: string
            example: Steam
            description: DRM 이름입니다.
          drm_sku:
            type: string
            pattern: ^[a-zA-Z0-9_\-.]*$
            example: steam
            description: >-
              플랫폼별 게임 키를 나타내기 위해 접미사로 사용되는 고유한 DRM ID. 허용되는 문자: a–z, A–Z, 0–9,
              맞침표(`.`), 하이픈(`-`), 밑줄(`_`).
    Promotions_200-coupon-bonus-reward:
      type: object
      properties:
        item:
          type: object
          properties:
            sku:
              type: string
              example: game_01
              description: 고유 아이템 ID입니다. SKU는 소문자 및 대문자 라틴 영숫자, 마침표, 대시 및 밑줄만 포함할 수 있습니다.
            name:
              type: object
              example:
                en: Game name
              description: 아이템 이름입니다.
            type:
              type: string
              example: unit
              description: >-
                아이템 유형. 가능한 값:<ul><li><code>virtual_good</code> - 가상
                아이템</li><li><code>virtual_currency</code> - 가상
                통화</li><li><code>bundle</code> - 번들</li><li><code>unit</code> -
                게임 키 패키지</li></ul>
            bundle_type:
              type: string
              description: 번들 유형입니다. 아이템 유형이 번들인 경우 반환됩니다.
              enum:
                - standard
                - virtual_currency_package
            description:
              type:
                - string
                - 'null'
              example: Game description
              description: 아이템 설명입니다.
            image_url:
              type:
                - string
                - 'null'
              example: >-
                https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png
              description: 이미지 URL입니다.
            content:
              type: array
            unit_items:
              $ref: '#/components/schemas/unit_items'
        quantity:
          type: number
          description: 아이템 수량입니다.
          default: 1
    Promotions_sku:
      type: string
      example: booster_mega_1
      description: 고유 아이템 ID입니다. SKU는 소문자 및 대문자 라틴 영숫자, 마침표, 대시 및 밑줄만 포함할 수 있습니다.
    Promotions_name:
      type: object
      description: |-
        아이템의 이름입니다. 키가 "^[a-z]{2}-[A-Z]{2}$" 형식의 로케일인
        키/값 쌍을 포함해야 하며 값은 문자열입니다.
      additionalProperties:
        type: string
      example:
        en-US: Item title
        de-DE: Artikeltitel
      default:
        en-US: Item title
        de-DE: Artikeltitel
    Promotions_type:
      type: string
      description: >-
        아이템의 유형:
        `virtual_good`/`virtual_currency`/`bundle`/`physical_good`/`unit`.
    Promotions_redeem_code_limit:
      type:
        - integer
        - 'null'
      description: 코드당 사용 횟수입니다.
      example: 10
      default: 10
    Promotions_promotion_condition:
      type:
        - array
        - 'null'
      items:
        description: 사용자가 보너스로 받은 아이템의 목록입니다.
        type: object
        properties:
          item:
            type: object
            properties:
              sku:
                $ref: '#/components/schemas/Promotions_sku'
              name:
                $ref: '#/components/schemas/Promotions_name'
              type:
                $ref: '#/components/schemas/Promotions_type'
              description:
                type:
                  - string
                  - 'null'
                example: Game description
                description: 아이템 설명입니다.
              image_url:
                type:
                  - string
                  - 'null'
                example: >-
                  https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png
                description: 이미지 URL입니다.
              external_id:
                type: string
                description: 프로모션 외부 ID입니다. 프로젝트 내부의 고유 프로모션 식별자입니다.
                minLength: 1
                maxLength: 255
                pattern: ^[-_.\d\w]+$
              is_enabled:
                type: boolean
              redeem_total_limit:
                type:
                  - integer
                  - 'null'
              redeem_user_limit:
                type:
                  - integer
                  - 'null'
              redeem_code_limit:
                $ref: '#/components/schemas/Promotions_redeem_code_limit'
    Promotions_coupon-is_enabled:
      type: boolean
      default: true
    Promotions_promotion_type:
      type: string
      description: 프로모션 유형입니다.
      example: item_discount
    Promotions_promotion_discount_percent:
      type:
        - string
        - 'null'
      description: |-
        퍼센트 할인입니다.
        이 퍼센트를 사용하여 계산한 값을 사용하여 장바구니 항목의 가격을 낮추어 계산한 다음 소수점 이하 2자리로 반올림합니다.
      default: '10.00'
      example: '10.00'
    promotion_recurrent_schedule_response:
      type:
        - object
        - 'null'
      description: 새로고침 기간을 제한합니다.
      properties:
        per_user:
          type:
            - object
            - 'null'
          description: 사용자 제한 새로고침 기간입니다.
          oneOf:
            - type: object
              title: interval_type = 일일
              description: 일일 사용자 유형 제한 설정을 새로고침합니다.
              properties:
                interval_type:
                  type: string
                  description: 반복 새로고침 기간 유형입니다.
                  enum:
                    - daily
                time:
                  type: string
                  description: 원하는 시간대의 제한 시간 새로고침 시간입니다(시간 단위로 반올림).
                  format: full-time
                  example: 11:00:00+03:00
                reset_next_date:
                  type: integer
                  description: 새로고침 제한 설정이 적용되는 날짜 및 시간입니다(Unix 타임스탬프)
                  example: 1677553200
                displayable_reset_start_date:
                  description: 첫 번째 제한 설정을 새로고침하는 날짜 및 시간입니다(ISO 8601).
                  type: string
                  format: date-time
                  example: '2023-02-28T11:00:00+08:00'
                displayable_reset_next_date:
                  description: 제한 설정을 재설정해야 하는 날짜 및 시간입니다(ISO 8601).
                  type: string
                  format: date-time
                  example: '2023-02-28T11:00:00+08:00'
            - type: object
              title: interval_type = 주간
              description: 주간 사용자 유형 제한 설정을 새로고침합니다.
              properties:
                interval_type:
                  type: string
                  description: 반복 새로고침 기간 유형입니다.
                  enum:
                    - weekly
                day_of_week:
                  type:
                    - integer
                    - 'null'
                  description: >-
                    제한을 새로고침하는 요일입니다. 여기서 1은 월요일이고 7은 일요일입니다. `weekly` 제한 설정
                    새로고침 기간 유형만 `null`이 아닙니다.
                  minimum: 1
                  maximum: 7
                time:
                  type: string
                  description: 원하는 시간대의 제한 시간 새로고침 시간입니다(시간 단위로 반올림).
                  format: full-time
                  example: 11:00:00+03:00
                reset_next_date:
                  type: integer
                  description: 새로고침 제한 설정이 적용되는 날짜 및 시간입니다(Unix 타임스탬프)
                  example: 1677553200
                displayable_reset_start_date:
                  description: 첫 번째 제한 설정을 새로고침하는 날짜 및 시간입니다(ISO 8601).
                  type: string
                  format: date-time
                  example: '2023-02-28T11:00:00+08:00'
                displayable_reset_next_date:
                  description: 제한 설정을 재설정해야 하는 날짜 및 시간입니다(ISO 8601).
                  type: string
                  format: date-time
                  example: '2023-02-28T11:00:00+08:00'
            - type: object
              title: interval_type = 월간
              description: 월간 사용자 제한 설정 새로고침 유형입니다.
              properties:
                interval_type:
                  type: string
                  description: 반복 새로고침 기간 유형입니다.
                  enum:
                    - monthly
                day_of_month:
                  type:
                    - integer
                    - 'null'
                  description: >-
                    제한 설정을 새로고침하는 날짜입니다. 해당 월의 일수가 짧아 선택한 날짜가 없으면 해당 월의 마지막 날에
                    새로고침합니다. `monthly` 제한 설정 새로고침 기간 유형만 `null`이 아닙니다.
                  minimum: 1
                  maximum: 31
                time:
                  type: string
                  description: 원하는 시간대의 제한 시간 새로고침 시간입니다(시간 단위로 반올림).
                  format: full-time
                  example: 11:00:00+03:00
                reset_next_date:
                  type: integer
                  description: 새로고침 제한 설정이 적용되는 날짜 및 시간입니다(Unix 타임스탬프)
                  example: 1677553200
                displayable_reset_start_date:
                  description: 첫 번째 제한 설정을 새로고침하는 날짜 및 시간입니다(ISO 8601).
                  type: string
                  format: date-time
                  example: '2023-02-28T11:00:00+08:00'
                displayable_reset_next_date:
                  description: 제한 설정을 재설정해야 하는 날짜 및 시간입니다(ISO 8601).
                  type: string
                  format: date-time
                  example: '2023-02-28T11:00:00+08:00'
    Promotions_promotion_limits_response:
      type: object
      description: 프로모션 제한입니다.
      properties:
        per_user:
          type:
            - object
            - 'null'
          description: 개별 사용자에 대한 프로모션 제한입니다.
          properties:
            total:
              type: integer
              description: >-
                사용자 한 명이 구매할 수 있는 총 아이템 개수입니다. 관리자 페이지에서 개수를 설정하거나 스토어 엔터티(제한
                개체)에 관리 엔드포인트를 사용할 수 있습니다.
              example: 5
        per_item:
          type:
            - integer
            - 'null'
          description: 전역 항목 제한 사항입니다.
          example: 10
        recurrent_schedule:
          $ref: '#/components/schemas/promotion_recurrent_schedule_response'
    Promotions_200-get-promotion-model:
      type: object
      properties:
        id:
          $ref: '#/components/schemas/Promotions_promotion_id'
        promotion_periods:
          $ref: '#/components/schemas/promotion_periods'
        name:
          $ref: '#/components/schemas/Promotions_coupon_name'
        bonus:
          type: array
          items:
            $ref: '#/components/schemas/Promotions_200-coupon-bonus-reward'
        condition:
          $ref: '#/components/schemas/Promotions_promotion_condition'
        is_enabled:
          $ref: '#/components/schemas/Promotions_coupon-is_enabled'
        type:
          $ref: '#/components/schemas/Promotions_promotion_type'
        discount:
          type:
            - object
            - 'null'
          properties:
            percent:
              $ref: '#/components/schemas/Promotions_promotion_discount_percent'
          example:
            discount:
              percent: '10.99'
        limits:
          $ref: '#/components/schemas/Promotions_promotion_limits_response'
    total_promotions_count:
      type: integer
      description: 총 프로모션 개수입니다.
    active_promotions_count:
      type: integer
      description: 활성 프로모션의 수입니다.
    inactive_promotions_count:
      type: integer
      description: 비활성 프로모션의 수입니다.
    Promotions_coupon-external_id:
      type: string
      example: coupon_external_id
      default: coupon_external_id
      description: >-
        고유 프로모션 ID입니다. `external_id`는 소문자 및 대문자 라틴 영숫자, 마침표, 대시 및 밑줄만 포함할 수
        있습니다.
    Promotions_coupon_bonus:
      type:
        - array
        - 'null'
      items:
        description: 사용자의 구매 항목에 보너스로 추가될 아이템의 목록입니다.
        type: object
        properties:
          sku:
            type: string
            description: 아이템 SKU입니다.
            default: elven_shield
          quantity:
            type: number
            description: 아이템 수량입니다.
            default: 1
    Promotions_coupon-redeem_total_limit:
      type:
        - integer
        - 'null'
      description: 총 쿠폰 수를 제한합니다.
      example: 10
      default: 10
    Promotions_coupon-redeem_user_limit:
      type:
        - integer
        - 'null'
      description: 단일 사용자가 사용한 총 쿠폰 수를 제한합니다.
      example: 10
      default: 10
    Promotions_coupon_total_limit_state:
      type:
        - object
        - 'null'
      description: 각 쿠폰 코드별 사용 제한입니다.
      properties:
        available:
          type: integer
          description: 쿠폰을 사용할 수 있는 남은 횟수입니다.
          example: 3
        reserved:
          type: integer
          description: 쿠폰의 예약 횟수입니다.
          example: 3
        used:
          type: integer
          description: 쿠폰이 사용된 횟수입니다.
          example: 5
    Promotions_cart_item_discount:
      type: string
      nullable: false
      description: |-
        퍼센트 할인입니다.

        이 퍼센트를 사용하여 계산한 값을 사용하여
        장바구니 아이템의 가격이 낮아지게 한 다음
        소수점 이하 2자리로 반올림합니다.
      default: '10.00'
      example: '10.00'
    admin-promotions_200-get-redeemable-coupon-promotion-model:
      type: object
      properties:
        external_id:
          $ref: '#/components/schemas/Promotions_coupon-external_id'
        promotion_periods:
          $ref: '#/components/schemas/promotion_periods'
        name:
          $ref: '#/components/schemas/Promotions_coupon_name'
        bonus:
          $ref: '#/components/schemas/Promotions_coupon_bonus'
        is_enabled:
          $ref: '#/components/schemas/Promotions_coupon-is_enabled'
        redeem_total_limit:
          $ref: '#/components/schemas/Promotions_coupon-redeem_total_limit'
        redeem_user_limit:
          $ref: '#/components/schemas/Promotions_coupon-redeem_user_limit'
        redeem_code_limit:
          $ref: '#/components/schemas/Promotions_redeem_code_limit'
        total_limit_state:
          $ref: '#/components/schemas/Promotions_coupon_total_limit_state'
        discount:
          type:
            - object
            - 'null'
          description: 프로모션 코드에만 해당됩니다.
          properties:
            percent:
              type:
                - string
                - 'null'
              description: >-
                퍼센트 할인입니다.

                이 퍼센트를 사용하여 계산한 값을 사용하여 장바구니 항목의 가격을 낮추어 계산한 다음 소수점 이하 2자리로
                반올림합니다.
              default: '10.00'
              example: '10.00'
          example:
            discount:
              percent: '10.99'
        discounted_items:
          type:
            - array
            - 'null'
          description: 프로모션 코드로 할인한 아이템의 목록입니다. 프로모션 코드에만 해당됩니다.
          items:
            description: 장바구니의 특정 아이템에 대한 할인입니다.
            type: object
            properties:
              sku:
                type: string
                description: 아이템 SKU입니다.
                default: elven_shield
              discount:
                type: object
                nullable: false
                properties:
                  percent:
                    $ref: '#/components/schemas/Promotions_cart_item_discount'
                required:
                  - percent
            required:
              - sku
              - discount
            minItems: 1
    Promotions_selected_unit_items:
      type: object
      description: >-
        사용자가 보너스로 선택한 플랫폼 전용 게임 키. 키로
        [received](/ko/api/liveops/promotions-coupons/get-coupon-rewards-by-code#promotions-coupons/get-coupon-rewards-by-code/t=response&c=200&path=bonus/item)
        `bonus.item.sku`를 전달학고 값으로 선택된 `bonus.item.unit_items.sku`를 전달합니다.
      additionalProperties:
        type: string
      example:
        game_1: game_1_steam
        game_2: game_2_playstation
    Promotions_200-coupon-discount-reward:
      type:
        - object
        - 'null'
      description: |-
        퍼센트 할인입니다.
        이 퍼센트를 사용하여 계산한 값을 사용하여 장바구니 항목의 가격을 낮추어 계산한 다음 소수점 이하 2자리로 반올림합니다.
      properties:
        percent:
          type: string
          example: '10.00'
    Promotions_422_limit_error:
      description: 사용 한도에 도달했습니다.
      type: object
      properties:
        statusCode:
          type: integer
          example: 422
        errorCode:
          type: integer
          example: 9804
        errorMessage:
          type: string
          example: '[0401-9804]: You have reached the coupon redemption limit.'
        transactionId:
          type: string
          example: x-x-x-x-transactionId-mock-x-x-x
      example:
        statusCode: 422
        errorCode: 9804
        errorMessage: '[0401-9804]: You have reached the coupon redemption limit.'
    Promotions_422_reglock_error:
      description: 쿠폰을 사용자의 지역에서 사용할 수 없습니다.
      type: object
      properties:
        statusCode:
          type: integer
          example: 422
        errorCode:
          type: integer
          example: 9808
        errorMessage:
          type: string
          example: '[0401-9808]: Coupon is not available in your region.'
        transactionId:
          type: string
          example: x-x-x-x-transactionId-mock-x-x-x
      example:
        statusCode: 422
        errorCode: 9804
        errorMessage: '[0401-9804]: You have reached the coupon redemption limit.'
    user-attribute_conditions_properties_attribute:
      type: string
      description: 사용자 특성 코드입니다.
      minLength: 1
      maxLength: 255
      pattern: ^[-_.\d\w]+$
    user-attribute_conditions_properties_type-string:
      type: string
      enum:
        - string
      description: 사용자 특성 유형입니다.
    user-attribute_conditions_properties_operator_string:
      type: string
      enum:
        - eq
        - ne
      description: |-
        조건에 따라 수행하는 작업 유형입니다. <code>string</code> 특성 유형에 해당합니다.

        가능한 값:
        - `eq` - 동일
        - `ne` - 동일하지 않음
    user-attribute_conditions_properties_value:
      type: string
      description: 사용자 특성 값을 비교할 조건 값입니다. 유형은 특성 유형에 따라 다릅니다.
      maxLength: 255
    user-attribute_conditions_properties_can_be_missing:
      type: boolean
      description: >-
        사용자 특성에서 특성이 누락된 경우에도 조건이 충족됨을 나타냅니다. 이 특성이 없는 사용자에게 항목을 표시하려면 `true`를
        전달하십시오. 특성이 있지만 값이 조건에 지정된 값과 일치하지 않는 사용자는 항목을 볼 수 없습니다. `false` - 특성이
        있지만 값이 조건에 지정된 값과 일치하지 않거나 특성이 누락된 사용자는 항목을 볼 수 없습니다.
    user-attribute_condition_string_model-get:
      type: object
      title: type = string
      properties:
        attribute:
          $ref: '#/components/schemas/user-attribute_conditions_properties_attribute'
        type:
          $ref: >-
            #/components/schemas/user-attribute_conditions_properties_type-string
        operator:
          $ref: >-
            #/components/schemas/user-attribute_conditions_properties_operator_string
        value:
          $ref: '#/components/schemas/user-attribute_conditions_properties_value'
        can_be_missing:
          $ref: >-
            #/components/schemas/user-attribute_conditions_properties_can_be_missing
    user-attribute_conditions_properties_type-number:
      type: string
      enum:
        - number
      description: 사용자 특성 유형입니다.
    user-attribute_conditions_properties_operator_number:
      type: string
      enum:
        - eq
        - ne
        - gt
        - ge
        - lt
        - le
      description: |-
        조건에 따라 수행하는 작업 유형입니다. <code>number</code> 특성 유형에 해당합니다.

        가능한 값:
        - `eq` - 동일
        - `ne` - 동일하지 않음
        - `gt` - 초과
        - `ge` - 이상
        - `lt` - 미만
        - `le` - 이하
    user-attribute_condition_number_model-get:
      type: object
      title: type = number
      properties:
        attribute:
          $ref: '#/components/schemas/user-attribute_conditions_properties_attribute'
        type:
          $ref: >-
            #/components/schemas/user-attribute_conditions_properties_type-number
        operator:
          $ref: >-
            #/components/schemas/user-attribute_conditions_properties_operator_number
        value:
          $ref: '#/components/schemas/user-attribute_conditions_properties_value'
        can_be_missing:
          $ref: >-
            #/components/schemas/user-attribute_conditions_properties_can_be_missing
    user-attribute_conditions_properties_type-date:
      type: string
      enum:
        - date
      description: 사용자 특성 유형입니다.
    user-attribute_conditions_properties_operator_date:
      type: string
      enum:
        - eq
        - ne
        - lt
        - gt
        - le
        - ge
      description: |-
        조건에 따라 수행하는 작업 유형입니다. <code>date</code> 특성 유형에 해당합니다.

        가능한 값:
        - `eq` - 동일
        - `ne` - 동일하지 않음
        - `lt` - 보다 작음
        - `gt` - 보다 큼
        - `le` - 보다 작거나 동일
        - `ge` - 보다 크거나 동일
    user-attribute_condition_date_model-get:
      type: object
      title: type = date
      properties:
        attribute:
          $ref: '#/components/schemas/user-attribute_conditions_properties_attribute'
        type:
          $ref: '#/components/schemas/user-attribute_conditions_properties_type-date'
        operator:
          $ref: >-
            #/components/schemas/user-attribute_conditions_properties_operator_date
        value:
          $ref: '#/components/schemas/user-attribute_conditions_properties_value'
        can_be_missing:
          $ref: >-
            #/components/schemas/user-attribute_conditions_properties_can_be_missing
    user-attribute_conditions_model-get:
      type: array
      minItems: 1
      maxItems: 100
      items:
        oneOf:
          - $ref: '#/components/schemas/user-attribute_condition_string_model-get'
          - $ref: '#/components/schemas/user-attribute_condition_number_model-get'
          - $ref: '#/components/schemas/user-attribute_condition_date_model-get'
    promotion_user-attribute_conditions_model-get:
      allOf:
        - $ref: '#/components/schemas/user-attribute_conditions_model-get'
        - description: 사용자 특성 검증 조건. 사용자 특성이 지정된 모든 조건과 일치하는지 여부에 따라 프로모션의 가용성을 결정합니다.
    admin-promotions_200-get-coupon-promotion-model:
      type: object
      properties:
        external_id:
          $ref: '#/components/schemas/Promotions_coupon-external_id'
        promotion_periods:
          $ref: '#/components/schemas/promotion_periods'
        name:
          $ref: '#/components/schemas/Promotions_coupon_name'
        bonus:
          $ref: '#/components/schemas/Promotions_coupon_bonus'
        is_enabled:
          $ref: '#/components/schemas/Promotions_coupon-is_enabled'
        redeem_total_limit:
          $ref: '#/components/schemas/Promotions_coupon-redeem_total_limit'
        redeem_user_limit:
          $ref: '#/components/schemas/Promotions_coupon-redeem_user_limit'
        redeem_code_limit:
          $ref: '#/components/schemas/Promotions_redeem_code_limit'
        total_limit_state:
          $ref: '#/components/schemas/Promotions_coupon_total_limit_state'
        attribute_conditions:
          $ref: '#/components/schemas/promotion_user-attribute_conditions_model-get'
    user-attribute_condition_string_model-post:
      type: object
      title: type = string
      properties:
        attribute:
          $ref: '#/components/schemas/user-attribute_conditions_properties_attribute'
        type:
          $ref: >-
            #/components/schemas/user-attribute_conditions_properties_type-string
        operator:
          $ref: >-
            #/components/schemas/user-attribute_conditions_properties_operator_string
        value:
          $ref: '#/components/schemas/user-attribute_conditions_properties_value'
        can_be_missing:
          $ref: >-
            #/components/schemas/user-attribute_conditions_properties_can_be_missing
      required:
        - attribute
        - operator
        - value
        - type
    user-attribute_condition_number_model-post:
      type: object
      title: type = number
      properties:
        attribute:
          $ref: '#/components/schemas/user-attribute_conditions_properties_attribute'
        type:
          $ref: >-
            #/components/schemas/user-attribute_conditions_properties_type-number
        operator:
          $ref: >-
            #/components/schemas/user-attribute_conditions_properties_operator_number
        value:
          $ref: '#/components/schemas/user-attribute_conditions_properties_value'
        can_be_missing:
          $ref: >-
            #/components/schemas/user-attribute_conditions_properties_can_be_missing
      required:
        - attribute
        - operator
        - value
        - type
    user-attribute_condition_date_model-post:
      type: object
      title: type = date
      properties:
        attribute:
          $ref: '#/components/schemas/user-attribute_conditions_properties_attribute'
        type:
          $ref: '#/components/schemas/user-attribute_conditions_properties_type-date'
        operator:
          $ref: >-
            #/components/schemas/user-attribute_conditions_properties_operator_date
        value:
          $ref: '#/components/schemas/user-attribute_conditions_properties_value'
        can_be_missing:
          $ref: >-
            #/components/schemas/user-attribute_conditions_properties_can_be_missing
      required:
        - attribute
        - operator
        - value
        - type
    user-attribute_conditions_model-post:
      type: array
      minItems: 1
      maxItems: 100
      items:
        oneOf:
          - $ref: '#/components/schemas/user-attribute_condition_string_model-post'
          - $ref: '#/components/schemas/user-attribute_condition_number_model-post'
          - $ref: '#/components/schemas/user-attribute_condition_date_model-post'
    promotion_user-attribute_conditions_model-post:
      allOf:
        - $ref: '#/components/schemas/user-attribute_conditions_model-post'
        - description: 사용자 특성 검증 조건. 사용자 특성이 지정된 모든 조건과 일치하는지 여부에 따라 프로모션의 가용성을 결정합니다.
    Promotions_coupon_code:
      type: string
      description: 고유한 대/소문자 구분 코드입니다. 문자와 숫자를 포함합니다.
      minLength: 1
      maxLength: 128
      example: WINTER2021
      default: WINTER2021
      pattern: ^[a-zA-Z0-9]+$
    Promotions_coupon-generate-count:
      type: integer
      minimum: 1
      maximum: 50000
      example: 10
    value-is_free:
      type: boolean
      example: false
      default: false
      description: 아이템이 무료인지 여부입니다.
    Catalog_item_promotions:
      type: array
      description: |-
        장바구니의 특정 아이템에 적용된 프로모션. 다음의 경우 배열이 반환됩니다.

        * 특정 아이템에 대한 할인 프로모션이 구성된 경우

        * **선택한 아이템 할인** 설정이 있는 프로모션 코드가 적용된 경우

        적용된 아이템 수준 프로모션이 없는 경우 빈 배열이 반환됩니다.
      items:
        type: object
        properties:
          name:
            type: string
          date_start:
            type:
              - string
              - 'null'
            format: date-time
          date_end:
            type:
              - string
              - 'null'
            format: date-time
          discount:
            type:
              - object
              - 'null'
            properties:
              percent:
                type:
                  - string
                  - 'null'
              value:
                type:
                  - string
                  - 'null'
          bonus:
            type: array
            items:
              type: object
              properties:
                sku:
                  type: string
                quantity:
                  type: integer
                type:
                  type: string
                  description: 보너스 아이템 유형입니다.
                  enum:
                    - virtual_good
                    - virtual_currency
                    - bundle
                    - physical_good
                    - game_key
                    - nft
                name:
                  type: string
                  description: 보너스 아이템 이름입니다. `physical_good` 보너스 아이템 유형에는 사용할 수 없습니다.
                image_url:
                  type: string
                  description: 보너스 아이템 이미지 URL입니다. `physical_good` 보너스 아이템 유형에는 사용할 수 없습니다.
                bundle_type:
                  type: string
                  description: 보너스 번들 아이템 유형입니다. `bundle` 보너스 아이템 유형에서만 사용할 수 있습니다.
                  enum:
                    - standard
                    - virtual_currency_package
          limits:
            type: object
            properties:
              per_user:
                type: object
                properties:
                  available:
                    type: integer
                  total:
                    type: integer
    Can_be_bought:
      type: boolean
      example: true
      description: '`true`일 경우 사용자는 아이템을 구매할 수 있습니다.'
    item_id:
      type: integer
      example: 1
      description: 내부 고유 아이템 ID입니다.
    value-point-sku:
      type: string
      description: 고유 가치 포인트 ID입니다.
    value-point-amount:
      type: integer
      description: 가치 포인트의 금액입니다.
    value-point-name:
      type: string
      description: 가치 포인트 이름입니다.
    Common_admin-image_url:
      type: string
      example: https://image.example.com
      description: 이미지 URL입니다.
    is_clan:
      type: boolean
      description: 값 포인트가 클랜 보상 체인에서 사용되는지 여부입니다.
      example: true
    client-item-value-point-reward:
      type: array
      description: 아이템의 가치 포인트 리워드 목록입니다.
      items:
        type: object
        properties:
          item_id:
            $ref: '#/components/schemas/item_id'
          sku:
            $ref: '#/components/schemas/value-point-sku'
          amount:
            $ref: '#/components/schemas/value-point-amount'
          name:
            $ref: '#/components/schemas/value-point-name'
          image_url:
            $ref: '#/components/schemas/Common_admin-image_url'
          is_clan:
            $ref: '#/components/schemas/is_clan'
    catalog_recurrent_schedule_client_response:
      type:
        - object
        - 'null'
      description: 아이템이 사용자의 반복 새로고침 기간을 제한합니다.
      oneOf:
        - type: object
          title: interval_type = 일일
          description: 일일 사용자 유형 제한 설정을 새로고침합니다.
          properties:
            interval_type:
              type: string
              description: 반복 새로고침 기간 유형입니다.
              enum:
                - daily
            reset_next_date:
              type: integer
              description: 재설정 제한이 적용되는 날짜 및 시간입니다(Unix 타임스탬프)
              example: 1677553200
        - type: object
          title: interval_type = 주간
          description: 주간 사용자 유형 제한 설정을 새로고침합니다.
          properties:
            interval_type:
              type: string
              description: 반복 새로고침 기간 유형입니다.
              enum:
                - weekly
            reset_next_date:
              type: integer
              description: 재설정 제한이 적용되는 날짜 및 시간입니다(Unix 타임스탬프)
              example: 1677553200
        - type: object
          title: interval_type = 월간
          description: 월간 사용자 제한 설정 새로고침 유형입니다.
          properties:
            interval_type:
              type: string
              description: 반복 새로고침 기간 유형입니다.
              enum:
                - monthly
            reset_next_date:
              type: integer
              description: 재설정 제한이 적용되는 날짜 및 시간입니다(Unix 타임스탬프)
              example: 1677553200
        - type: object
          title: interval_type = 시간
          description: 사용자 제한이 지정된 시간 간격(시간 단위)으로 재설정됩니다.
          properties:
            interval_type:
              type: string
              description: 반복 새로고침 기간 유형입니다.
              enum:
                - hourly
            reset_next_date:
              type: integer
              description: 재설정 제한이 적용되는 날짜 및 시간입니다(Unix 타임스탬프)
              example: 1677553200
    limit_exceeded_visibility:
      type: string
      example: show
      enum:
        - show
        - hide
      description: >-
        구매 한도에 도달한 후 다음 한도 재설정 때까지 카탈로그 내 아이템의 표시 여부를 결정합니다.


        `recurrent_schedule` 배열에서 반복 한도 재설정이 구성된 아이템에 적용됩니다.


        구매 한도에 도달한 후, 한도 초기화를 구성하지 않았다면`limit_exceeded_visibility` 값과 관계없이 해당
        아이템은 카탈로그에 표시되지 않습니다.


        사용 가능한 값: - `show` - 구매 한도에 도달한 이후에도 카탈로그 검색 API 호출 시 해당 아이템이 반환됩니다.
        클라이언트 측 카탈로그 검색 API 호출에서 한도에 도달하면, 해당 아이템은 `can_be_bought: false` 플래그와
        함께 반환됩니다. 다음 재설정 날짜는 `reset_next_date`에 반환됩니다. - `hide` - 구매 한도에 도달한 후,
        한도가 재설정될 때까지 해당 아이템은 카탈로그 검색 API 호출에서 반환되지 않습니다.
      default: show
    Catalog_item_limits:
      description: 아이템 제한 사항입니다.
      properties:
        per_user:
          type:
            - object
            - 'null'
          description: 사용자 한 명에 대한 아이템 제한 사항입니다.
          properties:
            total:
              type: integer
              description: 사용자 한 명이 구매할 수 있는 최대 아이템 수량입니다.
              example: 5
            available:
              type: integer
              description: 현재 사용자가 구매할 수 있는 남은 아이템 수량.
              example: 3
            recurrent_schedule:
              $ref: '#/components/schemas/catalog_recurrent_schedule_client_response'
            limit_exceeded_visibility:
              $ref: '#/components/schemas/limit_exceeded_visibility'
        per_item:
          type:
            - object
            - 'null'
          description: 한 개 아이템에 대한 아이템 제한 사항입니다.
          properties:
            total:
              type: integer
              description: 모든 사용자가 구매할 수 있는 최대 아이템 수량.
              example: 5
            available:
              type: integer
              description: 모든 사용자가 구매할 수 있는 남은 아이템 수량.
              example: 3
      type:
        - object
        - 'null'
    item-periods:
      type:
        - array
        - 'null'
      description: 아이템 판매 기간입니다.
      items:
        type: object
        properties:
          date_from:
            type: string
            format: date-time
            example: '2020-08-11T10:00:00+03:00'
            description: 지정된 아이템을 판매할 수 있는 날짜입니다.
          date_until:
            type:
              - string
              - 'null'
            format: date-time
            example: '2020-08-11T20:00:00+03:00'
            description: 지정된 아이템을 판매할 수 없게 되는 날짜입니다. `null`일 수 있습니다.
    Promotions_200-promo-code-bonus-reward:
      type: object
      properties:
        item:
          type: object
          properties:
            sku:
              type: string
              example: game_01
              description: 고유 아이템 ID입니다. SKU는 소문자 및 대문자 라틴 영숫자, 마침표, 대시 및 밑줄만 포함할 수 있습니다.
            name:
              type: string
              example: Game name
              description: 아이템 이름입니다.
            type:
              type: string
              example: unit
              description: >-
                아이템 유형. 가능한 값:<ul><li><code>virtual_good</code> - 가상
                아이템</li><li><code>virtual_currency</code> - 가상
                통화</li><li><code>bundle</code> - 번들</li><li><code>unit</code> -
                게임 키 패키지</li></ul>
            description:
              type: string
              example: Game description
              description: 아이템 설명입니다.
            image_url:
              type: string
              example: >-
                https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png
              description: 이미지 URL입니다.
            unit_items:
              $ref: '#/components/schemas/unit_items'
        quantity:
          type: number
          description: 아이템 수량입니다.
          default: 1
    Promotions_discounted_items:
      type:
        - array
        - 'null'
      description: 프로모션 코드로 할인한 아이템의 목록입니다.
      items:
        description: 장바구니의 특정 아이템에 대한 할인입니다.
        type: object
        properties:
          sku:
            type: string
            description: 아이템 SKU입니다.
            default: elven_shield
          discount:
            type: object
            nullable: false
            properties:
              percent:
                $ref: '#/components/schemas/Promotions_cart_item_discount'
            required:
              - percent
        required:
          - sku
          - discount
        minItems: 1
    Promo_code_rewards:
      type: object
      properties:
        bonus:
          type: array
          items:
            $ref: '#/components/schemas/Promotions_200-promo-code-bonus-reward'
        discount:
          $ref: '#/components/schemas/Promotions_200-coupon-discount-reward'
        discounted_items:
          $ref: '#/components/schemas/Promotions_discounted_items'
        is_selectable:
          type: boolean
          description: '`true`인 경우 사용자는 프로모션 코드를 사용하기 전에 보너스를 선택해야 합니다.'
    admin-attribute-external_id:
      type: string
      minLength: 1
      maxLength: 255
      pattern: ^[a-zA-Z0-9-_]+$
      example: attribute_1
      description: 고유 특성 ID입니다. `external_id`는 소문자 및 대문자 라틴 영숫자, 대시 및 밑줄만 포함할 수 있습니다.
    value-external_id:
      type: string
      minLength: 1
      maxLength: 255
      pattern: ^[-_.\d\w]+$
      example: attribute_value
      description: 특성의 고유한 값 ID입니다. `external_id`에는 소문자 라틴어 영숫자, 대시, 밑줄만 사용할 수 있습니다.
    client-attributes:
      type: array
      description: 아이템에 해당하는 특성 및 해당 값의 목록입니다. 카탈로그 필터링에 사용할 수 있습니다.
      example:
        value:
          external_id: genre
          name: Жанр
          values:
            - external_id: genre_e3364991f92e751689a68b96598a5a5a84010b85
              value: Casual
            - external_id: genre_eba07bfd0f982940773cba3744d97264dd58acd7
              value: Strategy
            - external_id: genre_b8d0c6d8f0524c2b2d79ebb93aa3cd0e8b5199a8
              value: Mobile
      default: []
      items:
        type: object
        properties:
          external_id:
            $ref: '#/components/schemas/admin-attribute-external_id'
          name:
            type: string
            description: 특성의 이름입니다.
            example: Genre
          values:
            type: array
            items:
              type: object
              properties:
                external_id:
                  $ref: '#/components/schemas/value-external_id'
                value:
                  type: string
                  description: 특성의 값입니다.
                  example: Strategy
    Promotions_promocode_total_limit_state:
      type:
        - object
        - 'null'
      description: 각 고유 프로모션 코드별 사용 제한입니다.
      properties:
        available:
          type: integer
          description: 프로모션 코드를 사용할 수 있는 남은 횟수입니다.
          example: 3
        reserved:
          type: integer
          description: 프로모션 코드가 예약된 횟수입니다.
          example: 3
        used:
          type: integer
          description: 프로모션 코드가 사용된 횟수입니다.
          example: 5
    price_conditions_items:
      description: 각 개체는 가격에 적용되는 규칙을 설명합니다.
      type: object
      properties:
        operator:
          type: string
          description: |-
            프로모션을 적용하기 위한 가격 범위를 설정하기 위한 비교 연산자입니다.

            가능한 값:
            - `ge` - 이상
            - `gt` - 초과
            - `le` - 이하
            - `lt` - 미만
            - `eq` - 동일
            - `ne` - 동일하지 않음
          enum:
            - ge
            - gt
            - le
            - lt
            - eq
            - ne
        value:
          type: string
          description: 프로모션을 적용하기 위한 가격 범위를 결정하기 위한 값입니다.
          pattern: ^\d+(\.\d{1,4})?$
      required:
        - operator
        - value
    price_conditions_promocode:
      type:
        - array
        - 'null'
      description: >-
        프로모션을 전체 카트에 적용하기 위한 가격 범위를 설정하는 조건을 가진 개체 배열입니다.<br>
         사용자 장바구니에 있는 모든 아이템의 총 가격을 조건에 지정된 가격 범위와 비교합니다.[보너스](/ko/api/shop-builder/operation/create-promo-code/#!path=bonus&t=request) 및 [할인](/ko/api/shop-builder/operation/create-promo-code/#!path=discount&t=request)은 장바구니의 가격이 지정된 조건을 충족할 경우 장바구니의 모든 아이템에 적용됩니다.<br>
        이 배열을 전달할 경우
        [discounted_items](/ko/api/shop-builder/operation/create-promo-code/#!path=discounted_items&t=request)
        배열의 값이 `null`로 설정됩니다.
      items:
        $ref: '#/components/schemas/price_conditions_items'
    item_price_conditions_promocode:
      type:
        - array
        - 'null'
      description: >-
        장바구니의 특정 아이템에 프로모션을 적용하기 위한 가격 범위를 설정하는 조건을 가진 개체 배열입니다.<br>

        사용자 장바구니에 있는 각 아이템의 가격은 조건에 지정된 가격 범위와
        비교됩니다.[보너스](/ko/api/shop-builder/operation/create-promo-code/#!path=bonus&t=request)
        및
        [할인](/ko/api/shop-builder/operation/create-promo-code/#!path=discount&t=request)은
        가격이 조건을 충족하는 장바구니에 있는 아이템에만 적용됩니다.<br>

        이 배열을 전달하면
        [discounted_items](/ko/api/shop-builder/operation/create-promo-code/#!path=discounted_items&t=request)
        배열의 값이 `null`로 설정됩니다.
      items:
        $ref: '#/components/schemas/price_conditions_items'
    excluded_promotions:
      type: array
      items:
        type: integer
      example:
        - 12
        - 789
      description: '이 프로모션을 적용할 때 제외할 프로모션 ID 목록입니다. <br>Example: `[12, 789]`'
    Promotions_200-get-promocode-promotion-model:
      type: object
      properties:
        external_id:
          $ref: '#/components/schemas/Promotions_coupon-external_id'
        promotion_periods:
          $ref: '#/components/schemas/promotion_periods'
        name:
          $ref: '#/components/schemas/Promotions_coupon_name'
        bonus:
          $ref: '#/components/schemas/Promotions_coupon_bonus'
        is_enabled:
          $ref: '#/components/schemas/Promotions_coupon-is_enabled'
        redeem_total_limit:
          $ref: '#/components/schemas/Promotions_coupon-redeem_total_limit'
        redeem_user_limit:
          $ref: '#/components/schemas/Promotions_coupon-redeem_user_limit'
        redeem_code_limit:
          $ref: '#/components/schemas/Promotions_redeem_code_limit'
        discount:
          type:
            - object
            - 'null'
          properties:
            percent:
              $ref: '#/components/schemas/Promotions_promotion_discount_percent'
          example:
            discount:
              percent: '10.99'
        discounted_items:
          $ref: '#/components/schemas/Promotions_discounted_items'
        total_limit_state:
          $ref: '#/components/schemas/Promotions_promocode_total_limit_state'
        attribute_conditions:
          $ref: '#/components/schemas/promotion_user-attribute_conditions_model-get'
        price_conditions:
          $ref: '#/components/schemas/price_conditions_promocode'
        item_price_conditions:
          $ref: '#/components/schemas/item_price_conditions_promocode'
        excluded_promotions:
          $ref: '#/components/schemas/excluded_promotions'
    Promotions_is_enabled:
      type: boolean
      example: true
      description: 프로모션 활성화 여부.
    price_conditions_discount:
      type:
        - array
        - 'null'
      description: >-
        프로모션을 적용하기 위한 가격 범위를 설정하는 조건을 가진 개체 배열입니다.<br> 프로모션은 가격이 배열의 모든 조건을 충족하는
        아이템에만 적용됩니다. 이 배열을 전달하는 경우
        [아이템](/ko/api/shop-builder/operation/create-item-promotion/#!path=items&t=request)
        개체의 값이 `null`로 설정됩니다.
      items:
        $ref: '#/components/schemas/price_conditions_items'
    Promotions_promotion_limits:
      type: object
      description: 프로모션 제한입니다.
      properties:
        per_user:
          type:
            - integer
            - 'null'
          description: 개별 사용자에 대한 프로모션 제한입니다.
        recurrent_schedule:
          $ref: '#/components/schemas/promotion_recurrent_schedule_response'
    price_conditions_bonus:
      type:
        - array
        - 'null'
      description: >-
        프로모션을 적용하기 위한 가격 범위를 설정하는 조건을 가진 개체 배열입니다.<br> 프로모션은 가격이 배열의 모든 조건을 충족하는
        아이템에만 적용됩니다. 이 배열을 전달하는 경우
        [조건](/ko/api/shop-builder/operation/create-bonus-promotion/#!path=condition&t=request)
        개체의 값이 `null`로 설정됩니다.
      items:
        $ref: '#/components/schemas/price_conditions_items'
    Promotions_200-get-bonus-promotion-model:
      type: object
      properties:
        id:
          type: integer
          description: 프로모션 ID입니다. 프로젝트 내부의 고유 프로모션 식별자입니다.
        promotion_periods:
          $ref: '#/components/schemas/promotion_periods'
        name:
          type: object
          description: |-
            프로모션의 이름입니다. 키가 "^[a-z]{2}-[A-Z]{2}$" 형식의 로케일인
            키/값 쌍을 포함해야 하며 값은 문자열입니다.
          additionalProperties:
            type: string
          example:
            en-US: Summer season bonus
            de-DE: Sommersaison Bonus
        is_enabled:
          type: boolean
          default: true
        condition:
          type:
            - array
            - 'null'
          description: >-
            프로모션을 적용하기 위해 구매 항목에 포함되어야 하는 아이템 세트입니다. 이 매개 변수가 `null`이면 프로젝트 내의
            모든 구매 항목에 프로모션이 적용됩니다.
          items:
            type: object
            properties:
              sku:
                type: string
                description: 아이템 SKU입니다.
                default: elven_sword
        bonus:
          type:
            - array
            - 'null'
          items:
            description: 사용자의 구매 항목에 보너스로 추가될 아이템의 목록입니다.
            type: object
            properties:
              sku:
                type: string
                description: 아이템 SKU입니다.
                default: elven_shield
              quantity:
                type: number
                description: 아이템 수량입니다.
                default: 1
        attribute_conditions:
          $ref: '#/components/schemas/promotion_user-attribute_conditions_model-get'
        limits:
          $ref: '#/components/schemas/Promotions_promotion_limits_response'
        excluded_promotions:
          $ref: '#/components/schemas/excluded_promotions'
        price_conditions:
          $ref: '#/components/schemas/price_conditions_bonus'
    Coupon_rewards:
      type: object
      properties:
        bonus:
          type: array
          items:
            $ref: '#/components/schemas/Promotions_200-coupon-bonus-reward'
        is_selectable:
          type: boolean
          description: '`true`인 경우 사용자는 쿠폰을 사용하기 전에 보너스를 선택해야 합니다.'
    Promotions_discounted_items_verify:
      type:
        - array
        - 'null'
      description: 프로모션 코드로 할인한 아이템의 목록입니다.
      items:
        description: 특정 아이템에 대한 할인입니다.
        type: object
        properties:
          sku:
            type: string
            example: game_01
            description: 고유 아이템 ID입니다. SKU는 소문자 및 대문자 라틴 영숫자, 마침표, 대시 및 밑줄만 포함할 수 있습니다.
          name:
            type: string
            example: Game name
            description: 아이템 이름입니다.
          type:
            type: string
            example: unit
            description: >-
              아이템 유형. 가능한 값:<ul><li><code>virtual_good</code> - 가상
              아이템</li><li><code>virtual_currency</code> - 가상
              통화</li><li><code>bundle</code> - 번들</li><li><code>unit</code> - 게임
              키 패키지</li></ul>
          description:
            type: string
            example: Game description
            description: 아이템 설명입니다.
          image_url:
            type: string
            example: >-
              https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png
            description: 이미지 URL입니다.
          unit_items:
            $ref: '#/components/schemas/unit_items'
          discount:
            type: object
            nullable: false
            properties:
              percent:
                $ref: '#/components/schemas/Promotions_cart_item_discount'
    Promo_code_rewards_verify:
      type: object
      properties:
        bonus:
          type: array
          items:
            $ref: '#/components/schemas/Promotions_200-promo-code-bonus-reward'
        discount:
          $ref: '#/components/schemas/Promotions_200-coupon-discount-reward'
        discounted_items:
          $ref: '#/components/schemas/Promotions_discounted_items_verify'
        is_selectable:
          type: boolean
          description: '`true`인 경우 사용자는 프로모션 코드를 사용하기 전에 보너스를 선택해야 합니다.'
    sku:
      type: string
      minLength: 1
      maxLength: 255
      pattern: ^[a-zA-Z0-9_\-–.]*$
      example: booster_mega_1
      description: 고유 아이템 ID입니다. SKU는 소문자 및 대문자 라틴 영숫자, 마침표, 대시 및 밑줄만 포함할 수 있습니다.
    Promotions_unique_catalog_offer_items:
      type: array
      description: 고유 카탈로그 혜택을 이용한 후 사용할 수 있는 아이템 SKU 목록입니다.
      items:
        $ref: '#/components/schemas/sku'
    Promotions_200-get-unique-catalog-offer-promotion-model:
      type: object
      properties:
        external_id:
          $ref: '#/components/schemas/Promotions_coupon-external_id'
        promotion_periods:
          $ref: '#/components/schemas/promotion_periods'
        name:
          $ref: '#/components/schemas/Promotions_coupon_name'
        items:
          $ref: '#/components/schemas/Promotions_unique_catalog_offer_items'
        is_enabled:
          $ref: '#/components/schemas/Promotions_coupon-is_enabled'
        redeem_total_limit:
          $ref: '#/components/schemas/Promotions_coupon-redeem_total_limit'
        redeem_user_limit:
          $ref: '#/components/schemas/Promotions_coupon-redeem_user_limit'
        redeem_code_limit:
          $ref: '#/components/schemas/Promotions_redeem_code_limit'
        total_limit_state:
          $ref: '#/components/schemas/Promotions_coupon_total_limit_state'
    Promotions_coupon_date_start:
      type:
        - string
        - 'null'
      format: date-time
      default: '2020-04-15T18:16:00+05:00'
      description: 프로모션이 시작되는 날짜입니다.
    Promotions_coupon_date_end:
      type:
        - string
        - 'null'
      format: date-time
      default: '2020-04-15T18:16:00+05:00'
      description: >-
        프로모션이 완료되는 날짜입니다. `null`일 수 있습니다. `date_end`가 `null`이면 프로모션이 시간 제한을 받지
        않습니다.
    User-limit-promo-code:
      type: object
      properties:
        per_user:
          type: object
          properties:
            total:
              type: integer
              example: 10
              description: 사용자가 프로모션 코드를 사용할 수 있는 최대 횟수입니다.
            available:
              type: integer
              example: 9
              description: 사용자가 프로모션 코드를 사용할 수 있는 남은 횟수입니다.
    User-limit-coupon:
      type: object
      properties:
        per_user:
          type: object
          properties:
            total:
              type: integer
              example: 10
              description: 사용자가 쿠폰을 사용할 수 있는 최대 횟수입니다.
            available:
              type: integer
              example: 9
              description: 사용자가 쿠폰을 사용할 수 있는 남은 횟수입니다.
    Code-limit-promo-code:
      type: object
      properties:
        code:
          $ref: '#/components/schemas/Promotions_coupon_code'
        per_code:
          type: object
          properties:
            total:
              type: integer
              description: 프로모션 코드를 사용할 수 있는 최대 횟수입니다.
            available:
              type: integer
              description: 프로모션 코드를 사용할 수 있는 남은 횟수입니다.
            used:
              type: integer
              description: 프로모션 코드가 사용된 횟수입니다.
            reserved:
              type: integer
              description: 프로모션 코드가 예약된 횟수입니다.
    personalized-catalog_user-attribute_conditions_model-get:
      allOf:
        - $ref: '#/components/schemas/user-attribute_conditions_model-get'
        - description: 사용자 특성 검증 조건. 사용자 특성이 지정된 모든 조건과 일치하는지 여부에 따라 카탈로그의 아이템 가용성을 결정합니다.
    user-attribute_personalized-catalog:
      type: object
      properties:
        rule_id:
          type: number
          description: 규칙 ID입니다.
        name:
          type: string
          description: 규칙의 읽을 수 있는 이름입니다. 관리자 페이지에서 규칙을 표시할 때 사용합니다.
        is_enabled:
          type: boolean
          description: 규칙을 사용할 수 있는 경우.
        is_satisfied_for_unauth:
          type: boolean
          description: >-
            인증되지 않은 사용자에게 아이템이 표시되는지 여부입니다. `true`이면 카탈로그 표시 규칙에 관계없이 인증되지 않은
            사용자에게 아이템이 표시됩니다. 기본값은 `false`입니다.
        attribute_conditions:
          $ref: >-
            #/components/schemas/personalized-catalog_user-attribute_conditions_model-get
        items:
          type: array
          items:
            type: object
            description: 특성 값이 조건을 충족하는 경우 사용자에게 표시되는 아이템입니다.
            properties:
              item_id:
                type: number
                description: 아이템 ID입니다.
              sku:
                type: string
                description: 아이템 SKU입니다.
              name:
                type: string
                description: 아이템 이름입니다.
              type:
                type: string
                description: 아이템 유형입니다.
                enum:
                  - virtual_good
                  - virtual_currency
                  - bundle
                  - physical_good
                  - unit
              bundle_type:
                type: string
                description: 번들 유형입니다. 아이템 유형이 번들인 경우 반환됩니다.
                enum:
                  - standard
                  - virtual_currency_package
      required:
        - rule_id
        - name
        - is_enabled
        - attribute_conditions
        - items
    personalized-catalog_user-attribute_conditions_model-post:
      allOf:
        - $ref: '#/components/schemas/user-attribute_conditions_model-post'
        - description: 사용자 특성 검증 조건. 사용자 특성이 지정된 모든 조건과 일치하는지 여부에 따라 카탈로그의 아이템 가용성을 결정합니다.
    user-attribute_personalized-catalog-body-required:
      type: object
      properties:
        name:
          type: string
          description: 규칙의 읽을 수 있는 이름입니다. 관리자 페이지에서 규칙을 표시할 때 사용합니다.
          minLength: 1
          maxLength: 255
          pattern: ^\S
        is_enabled:
          type: boolean
          description: 규칙을 사용할 수 있는 경우.
        is_satisfied_for_unauth:
          type: boolean
          description: >-
            인증되지 않은 사용자에게 아이템이 표시되는지 여부입니다. `true`이면 카탈로그 표시 규칙에 관계없이 인증되지 않은
            사용자에게 아이템이 표시됩니다. 기본값은 `false`입니다.
        attribute_conditions:
          $ref: >-
            #/components/schemas/personalized-catalog_user-attribute_conditions_model-post
        items:
          type: array
          minItems: 1
          maxItems: 100
          items:
            oneOf:
              - type: object
                description: 특성 값이 조건을 충족하는 경우 사용자에게 표시되는 아이템입니다.
                properties:
                  item_id:
                    type: number
                    description: 아이템 ID입니다.
                required:
                  - item_id
              - type: object
                description: 특성 값이 조건을 충족하는 경우 사용자에게 표시되는 아이템입니다.
                properties:
                  sku:
                    type: string
                    description: 아이템 SKU입니다.
                required:
                  - sku
      required:
        - name
        - is_enabled
        - attribute_conditions
        - items
    422-invalid-request:
      type: object
      properties:
        statusCode:
          type: number
          description: 응답 상태 코드입니다.
          example: 422
        errorCode:
          type: number
          description: 오류 코드.
          example: 1102
        errorMessage:
          type: string
          description: 읽을 수 있는 오류 메시지입니다.
          example: >-
            [0401-1102]: Unprocessable Entity. The property `external_id` is
            required
        transactionId:
          type: string
          description: 요청의 고유 ID입니다.
          example: da145238620011eb8e24fe6913ff226a
    user-attribute_personalized-catalog_all:
      type: object
      properties:
        rule_id:
          type: number
          description: 규칙 ID입니다.
        name:
          type: string
          description: 규칙의 읽을 수 있는 이름입니다. 관리자 페이지에서 규칙을 표시할 때 사용합니다.
        is_enabled:
          type: boolean
          description: 규칙을 사용할 수 있는 경우.
        is_satisfied_for_unauth:
          type: boolean
          description: >-
            인증되지 않은 사용자에게 아이템이 표시되는지 여부입니다. `true`이면 카탈로그 표시 규칙에 관계없이 인증되지 않은
            사용자에게 아이템이 표시됩니다. 기본값은 `false`입니다.
      required:
        - rule_id
        - name
        - is_enabled
    user-attribute_personalized-catalog-body:
      type: object
      properties:
        name:
          type: string
          description: 규칙의 읽을 수 있는 이름입니다. 관리자 페이지에서 규칙을 표시할 때 사용합니다.
          minLength: 1
          maxLength: 255
          pattern: ^\S
        is_enabled:
          type: boolean
          description: 규칙을 사용할 수 있는 경우.
        is_satisfied_for_unauth:
          type: boolean
          description: >-
            인증되지 않은 사용자에게 아이템이 표시되는지 여부입니다. `true`이면 카탈로그 표시 규칙에 관계없이 인증되지 않은
            사용자에게 아이템이 표시됩니다. 기본값은 `false`입니다.
        attribute_conditions:
          $ref: >-
            #/components/schemas/personalized-catalog_user-attribute_conditions_model-post
        items:
          type: array
          minItems: 1
          maxItems: 100
          items:
            oneOf:
              - type: object
                description: 특성 값이 조건을 충족하는 경우 사용자에게 표시되는 아이템입니다.
                properties:
                  item_id:
                    type: number
                    description: 아이템 ID입니다.
                required:
                  - item_id
              - type: object
                description: 특성 값이 조건을 충족하는 경우 사용자에게 표시되는 아이템입니다.
                properties:
                  sku:
                    type: string
                    description: 아이템 SKU입니다.
                required:
                  - sku
    User-limit_user-external-id:
      description: 사용자 외부 ID입니다.
      type: string
      minLength: 1
      pattern: ^\S+$
    User-limit_user:
      type: object
      properties:
        user_external_id:
          $ref: '#/components/schemas/User-limit_user-external-id'
      required:
        - user_external_id
    User-limit_user_flexible:
      type:
        - object
        - 'null'
      properties:
        user_external_id:
          $ref: '#/components/schemas/User-limit_user-external-id'
    User-limit-promotion:
      type: object
      properties:
        per_user:
          type: object
          properties:
            total:
              type: integer
              example: 10
              description: 사용자가 프로모션을 사용할 수 있는 최대 횟수입니다.
            available:
              type: integer
              example: 9
              description: 사용자가 프로모션을 사용할 수 있는 남은 횟수입니다.
    User-limit_available_flexible:
      type: integer
      minimum: 0
      description: 적용된 제한 설정 내에서 사용자가 사용할 수 있는 남은 아이템 또는 프로모션 사용 수량입니다.
    User-limit_available:
      type: integer
      minimum: 1
      description: 적용된 제한 설정 내에서 사용자가 사용할 수 있는 남은 아이템 또는 프로모션 사용 수량입니다.
    two-letter-locale:
      type:
        - object
        - 'null'
      description: 두 글자 소문자 언어 코드입니다.
      title: 두 글자
      properties:
        en:
          type:
            - string
            - 'null'
          description: 영어
        ar:
          type:
            - string
            - 'null'
          description: 아랍어
        bg:
          type:
            - string
            - 'null'
          description: 불가리아어
        cn:
          type:
            - string
            - 'null'
          description: 중국어(간체)
        cs:
          type:
            - string
            - 'null'
          description: 체코어
        de:
          type:
            - string
            - 'null'
          description: 독일어
        es:
          type:
            - string
            - 'null'
          description: 스페인어(스페인)
        fr:
          type:
            - string
            - 'null'
          description: 프랑스어
        he:
          type:
            - string
            - 'null'
          description: 히브리어
        it:
          type:
            - string
            - 'null'
          description: 이탈리아어
        ja:
          type:
            - string
            - 'null'
          description: 일본어
        ko:
          type:
            - string
            - 'null'
          description: 한국어
        pl:
          type:
            - string
            - 'null'
          description: 폴란드어
        pt:
          type:
            - string
            - 'null'
          description: 포르투칼어
        ro:
          type:
            - string
            - 'null'
          description: 로마니아어
        ru:
          type:
            - string
            - 'null'
          description: 러시아어
        th:
          type:
            - string
            - 'null'
          description: 태국어
        tr:
          type:
            - string
            - 'null'
          description: 터키어
        tw:
          type:
            - string
            - 'null'
          description: 중국어(번체)
        vi:
          type:
            - string
            - 'null'
          description: 베트남어
        km:
          type:
            - string
            - 'null'
          description: 크메르어
        id:
          type:
            - string
            - 'null'
          description: 인도네시아어
        lo:
          type:
            - string
            - 'null'
          description: 라오스어
        my:
          type:
            - string
            - 'null'
          description: 버마어
        ph:
          type:
            - string
            - 'null'
          description: 필리핀어
        ne:
          type:
            - string
            - 'null'
          description: 네팔어
    five-letter-locale:
      type:
        - object
        - 'null'
      description: 다섯 글자 로케일 코드.
      title: 다섯 글자
      properties:
        en-US:
          type:
            - string
            - 'null'
          description: 영어
        ar-AE:
          type:
            - string
            - 'null'
          description: 아랍어
        bg-BG:
          type:
            - string
            - 'null'
          description: 불가리아어
        zh-CN:
          type:
            - string
            - 'null'
          description: 중국어(간체)
        cs-CZ:
          type:
            - string
            - 'null'
          description: 체코어
        de-DE:
          type:
            - string
            - 'null'
          description: 독일어
        es-ES:
          type:
            - string
            - 'null'
          description: 스페인어(스페인)
        fr-FR:
          type:
            - string
            - 'null'
          description: 프랑스어
        he-IL:
          type:
            - string
            - 'null'
          description: 히브리어
        it-IT:
          type:
            - string
            - 'null'
          description: 이탈리아어
        ja-JP:
          type:
            - string
            - 'null'
          description: 일본어
        ko-KR:
          type:
            - string
            - 'null'
          description: 한국어
        pl-PL:
          type:
            - string
            - 'null'
          description: 폴란드어
        pt-BR:
          type:
            - string
            - 'null'
          description: 포르투갈어(브라질)
        ro-RO:
          type:
            - string
            - 'null'
          description: 로마니아어
        ru-RU:
          type:
            - string
            - 'null'
          description: 러시아어
        th-TH:
          type:
            - string
            - 'null'
          description: 태국어
        tr-TR:
          type:
            - string
            - 'null'
          description: 터키어
        zh-TW:
          type:
            - string
            - 'null'
          description: 중국어(번체)
        vi-VN:
          type:
            - string
            - 'null'
          description: 베트남어
        km-KH:
          type:
            - string
            - 'null'
          description: 크메르어
        id-ID:
          type:
            - string
            - 'null'
          description: 인도네시아어
        lo-LA:
          type:
            - string
            - 'null'
          description: 라오스어
        my-MM:
          type:
            - string
            - 'null'
          description: 버마어
        ph-PH:
          type:
            - string
            - 'null'
          description: 필리핀어
        ne-NP:
          type:
            - string
            - 'null'
          description: 네팔어
    name-localization-object:
      type:
        - object
        - 'null'
      description: >-
        아이템 이름에 대한 현지화가 있는 개체입니다. 두 글자 소문자 언어 코드(예: `en`) 또는 다섯 글자 언어 코드(예:
        `en-US`) 두 가지 형식 중 하나로 되어 있는 값을 허용합니다. 두 형식 모두 입력으로 허용되지만 응답은 두 글자 소문자
        언어 코드를 반환합니다. 동일한 언어에 대한 두 옵션(예: `en` 및 `en-US`)이 모두 제공되면 마지막으로 제공된 값이
        저장됩니다. 지원되는 언어의 전체 목록은
        [문서](/ko/doc/shop-builder/references/supported-languages/)에서 확인할 수 있습니다.
      anyOf:
        - $ref: '#/components/schemas/two-letter-locale'
        - $ref: '#/components/schemas/five-letter-locale'
    description-localization-object:
      type:
        - object
        - 'null'
      description: >-
        아이템 설명에 대한 현지화가 있는 개체입니다. 두 글자 소문자 언어 코드(예: `en`) 또는 다섯 글자 로케일 코드(예:
        `en-US`) 두 가지 형식 중 하나로 되어 있는 값을 허용합니다. 두 형식 모두 입력으로 허용되지만 응답은 두 글자 소문자
        언어 코드를 반환합니다. 동일한 언어에 대한 두 옵션(예: `en` 및 `en-US`)이 모두 제공되면 마지막으로 제공된 값이
        저장됩니다. 지원되는 언어의 전체 목록은
        [문서](/ko/doc/shop-builder/references/supported-languages/)에서 확인할 수 있습니다.
      anyOf:
        - $ref: '#/components/schemas/two-letter-locale'
        - $ref: '#/components/schemas/five-letter-locale'
    long-description-localization-object:
      type:
        - object
        - 'null'
      description: >-
        아이템의 긴 설명에 대한 현지화가 있는 개체입니다. 두 글자 소문자 언어 코드(예: `en`) 또는 5자 로케일 코드(예
        `en-US`: ) 두 가지 형식 중 하나로 값을 허용합니다. 두 형식 모두 입력으로 허용되지만 응답은 두 글자 소문자 언어
        코드를 반환합니다. 동일한 언어에 대한 두 변수(예: `en` 및 `en-US`)가 모두 제공되면 마지막으로 제공된 값이
        저장됩니다. 지원되는 언어의 전체 목록은
        [문서](/ko/doc/shop-builder/references/supported-languages/)에서 확인할 수 있습니다.
      anyOf:
        - $ref: '#/components/schemas/two-letter-locale'
        - $ref: '#/components/schemas/five-letter-locale'
    Value-points-item-model:
      type: object
      properties:
        sku:
          type: string
          minLength: 1
          maxLength: 255
          pattern: ^[a-zA-Z0-9_\-–.]*$
          example: booster_mega_1
          description: 고유 아이템 ID입니다. SKU는 소문자 및 대문자 라틴 영숫자, 마침표, 대시 및 밑줄만 포함할 수 있습니다.
        name:
          $ref: '#/components/schemas/name-localization-object'
        description:
          $ref: '#/components/schemas/description-localization-object'
        long_description:
          $ref: '#/components/schemas/long-description-localization-object'
        media_list:
          type: array
          example:
            - type: image
              url: >-
                https://cdn3.xsolla.com/img/misc/images/71ab1e12126f2103e1868076f0acb21a.jpg
          description: 스크린샷, 게임 플레이 동영상 등과 같은 아이템의 추가 자산입니다.
          items:
            type: object
            properties:
              type:
                type: string
                enum:
                  - image
                  - video
                example: image
                description: '미디어 유형: `image`/`video`.'
              url:
                type: string
                example: >-
                  https://cdn3.xsolla.com/img/misc/images/71ab1e12126f2103e1868076f0acb21a.jpg
                description: 리소스 파일입니다.
        type:
          type: string
          description: 아이템 유형입니다.
        image_url:
          type: string
        is_enabled:
          type: boolean
        order:
          type: integer
          example: 1
          description: 배열 순서를 정의합니다.
        is_clan:
          $ref: '#/components/schemas/is_clan'
    is_enabled:
      type: boolean
      example: true
    media_list:
      type: array
      example:
        - type: image
          url: >-
            https://cdn3.xsolla.com/img/misc/images/71ab1e12126f2103e1868076f0acb21a.jpg
      description: 스크린샷, 게임 플레이 동영상 등과 같은 아이템의 추가 자산입니다.
      items:
        type: object
        properties:
          type:
            type: string
            enum:
              - image
              - video
            example: image
            description: '미디어 유형: `image`/`video`.'
          url:
            type: string
            example: >-
              https://cdn3.xsolla.com/img/misc/images/71ab1e12126f2103e1868076f0acb21a.jpg
            description: 리소스 파일입니다.
    order:
      type: integer
      example: 1
      description: 배열 순서를 정의합니다.
    admin_value_points-create:
      properties:
        description:
          $ref: '#/components/schemas/description-localization-object'
        image_url:
          $ref: '#/components/schemas/Common_admin-image_url'
        is_enabled:
          $ref: '#/components/schemas/is_enabled'
        long_description:
          $ref: '#/components/schemas/long-description-localization-object'
        media_list:
          $ref: '#/components/schemas/media_list'
        name:
          $ref: '#/components/schemas/name-localization-object'
        order:
          $ref: '#/components/schemas/order'
        sku:
          $ref: '#/components/schemas/sku'
        is_clan:
          $ref: '#/components/schemas/is_clan'
      type: object
      required:
        - sku
        - name
    422-rc-vp-invalid-request:
      type: object
      properties:
        statusCode:
          type: integer
          example: 422
        errorCode:
          type: integer
          example: 1102
        errorMessage:
          type: string
          example: >-
            [0401-1102]: Unprocessable Entity. The property `property_name` is
            required
        transactionId:
          type: string
          example: x-x-x-x-transactionId-mock-x-x-x
    Value-point-item-model:
      type: object
      properties:
        sku:
          type: string
          minLength: 1
          maxLength: 255
          pattern: ^[a-zA-Z0-9_\-–.]*$
          example: booster_mega_1
          description: 고유 아이템 ID입니다. SKU는 소문자 및 대문자 라틴 영숫자, 마침표, 대시 및 밑줄만 포함할 수 있습니다.
        name:
          $ref: '#/components/schemas/name-localization-object'
        description:
          $ref: '#/components/schemas/description-localization-object'
        long_description:
          $ref: '#/components/schemas/long-description-localization-object'
        media_list:
          type: array
          example:
            - type: image
              url: >-
                https://cdn3.xsolla.com/img/misc/images/71ab1e12126f2103e1868076f0acb21a.jpg
          description: 스크린샷, 게임 플레이 동영상 등과 같은 아이템의 추가 자산입니다.
          items:
            type: object
            properties:
              type:
                type: string
                enum:
                  - image
                  - video
                example: image
                description: '미디어 유형: `image`/`video`.'
              url:
                type: string
                example: >-
                  https://cdn3.xsolla.com/img/misc/images/71ab1e12126f2103e1868076f0acb21a.jpg
                description: 리소스 파일입니다.
        type:
          type: string
          description: 아이템 유형입니다.
        image_url:
          type: string
        is_enabled:
          type: boolean
        order:
          type: integer
          example: 1
          description: 배열 순서를 정의합니다.
        can_delete:
          type: boolean
          description: >-
            가치 포인트를 삭제할 수 있는지 여부입니다. `false`인 경우, 가치 포인트가 사용되는 보상 체인이 하나 이상 있기
            때문에 삭제할 수 없습니다. 가치 포인트를 삭제하려면 우선 가치 포인트를 포함하고 있는 모든 보상 체인을
            [삭제](https://developers.xsolla.com/ko/api/shop-builder/operation/admin-delete-reward-chain/)하십시오.


            `true`인 경우, 가치 포인트가 어떠한 보상 체인에도 사용되지 않으므로 이를
            [삭제](https://developers.xsolla.com/ko/api/shop-builder/operation/admin-delete-value-point/)할
            수 있습니다.
        is_clan:
          $ref: '#/components/schemas/is_clan'
    admin-item-value-point-reward:
      type: object
      properties:
        item_id:
          $ref: '#/components/schemas/item_id'
        sku:
          $ref: '#/components/schemas/sku'
        amount:
          type: integer
          description: 가치 포인트의 금액입니다.
        name:
          $ref: '#/components/schemas/name-localization-object'
        image_url:
          $ref: '#/components/schemas/Common_admin-image_url'
    item-value-point-reward-set:
      type: array
      items:
        type: object
        properties:
          sku:
            $ref: '#/components/schemas/sku'
          amount:
            type: integer
            description: 가치 포인트의 금액입니다.
        required:
          - sku
          - amount
    item-value-point-reward-set-for-patch:
      type: array
      items:
        type: object
        properties:
          sku:
            $ref: '#/components/schemas/sku'
          amount:
            type: integer
            description: 가치 포인트의 금액입니다.
            minimum: 0
        required:
          - sku
          - amount
        maxItems: 100
    image_url:
      type:
        - string
        - 'null'
      example: https://image.example.com
      description: 이미지 URL입니다.
    date_start:
      type: string
      format: date-time
      example: '2020-04-15T18:16:00+05:00'
      description: 보상 체인이 시작되는 날짜입니다.
    date_end:
      type:
        - string
        - 'null'
      format: date-time
      example: '2020-04-15T18:16:00+05:00'
      description: >-
        보상 체인 프로모션이 종료되는 날짜입니다. `null`일 수 있습니다. `date_end`가 `null`이면 보상 체인이 시간
        제한을 받지 않습니다.
    clan_type:
      type:
        - string
        - 'null'
      description: 클랜 유형.
      enum:
        - clan
        - guild
        - faction
        - community
        - team
        - squad
        - alliance
        - association
        - coalition
        - union
        - group
        - civilizations
        - dynasty
        - order
        - league
        - brotherhood
        - kingdom
        - organization
        - house
        - empire
        - tribe
        - cartel
        - null
    top_contributors:
      type:
        - object
        - 'null'
      properties:
        name:
          type: string
          example: Rocket
          description: >-
            인증 프로세스 중에 엑솔라로 전송되는 사용자 ID입니다. 사용자 ID는 사용자를 엑솔라 로그인 프로젝트와 연결하는 데
            사용되며 별명으로 표시됩니다. [ 사용자
            ID](https://developers.xsolla.com/ko/solutions/web-shop/create-web-shop/set-up-authentication/?tabs=100-UserIDAuth&link=100-UserIDAuth)에
            따라 인증을 사용하는 경우, [ 웹훅
            응답](https://developers.xsolla.com/ko/webhooks/operation/user-validation-in-webshop/)에
            <code>name</code> 매개 변수를 전달하는 것이 좋습니다. 이 매개 변수에는 별명으로 사용될 사용자 이름이
            포함되어 있습니다.
        contributed_amount:
          type: integer
          example: 100
          description: 사용자가 획득한 가치 포인트의 금액입니다.
    value-point-description:
      type:
        - string
        - 'null'
      description: 가치 포인트 설명입니다.
    value-point-long-description:
      type:
        - string
        - 'null'
      description: 가치 포인트에 대한 긴 설명입니다.
    interval_type_weekly:
      type: string
      description: 보상 체인의 반복 재설정 빈도입니다.
      enum:
        - weekly
    interval_type_monthly:
      type: string
      description: 보상 체인의 반복 재설정 빈도입니다.
      enum:
        - monthly
    interval_type_hourly_rc:
      type: string
      description: 보상 체인의 반복 재설정 빈도입니다.
      enum:
        - hourly
    reset_next_date:
      type: integer
      description: >-
        다음에 보상 체인이 재설정되는 날짜와 시간의 계산 결과 <a
        href="https://en.wikipedia.org/wiki/Unix_time" target="_blank">(유닉스 타임
        스탬프)</a>. <br><br> 예를 들어 보상 체인은 2024년 3월 1일부터 쿠알라룸푸르 시간(GMT+8)을 기준으로
        01:00에 매월 초기화됩니다. 다음 보상 체인 재설정 날짜 및 시간은 쿠알라룸푸르 시간(GMT+8)으로 2024년 4월 1일
        01:00이며, 이는 2024년 3월 31일 17:00 GMT+0 또는 유닉스 타임 스탬프 형식으로 `1711904400000`에
        해당합니다. <br><br> 예: `1711904400000`
    recurrent_schedule_client_side:
      type:
        - object
        - 'null'
      description: 보상 체인의 반복 재설정 기간입니다.
      properties:
        interval_type:
          oneOf:
            - title: interval_type = 주간
              $ref: '#/components/schemas/interval_type_weekly'
            - title: interval_type = 월간
              $ref: '#/components/schemas/interval_type_monthly'
            - title: interval_type = 시간
              $ref: '#/components/schemas/interval_type_hourly_rc'
        reset_next_date:
          $ref: '#/components/schemas/reset_next_date'
    popup_header-two-letter-locale:
      type:
        - object
        - 'null'
      description: >-
        클랜 보상 체인 툴팁 팝업 창의 헤더에 대한 현지화가 있는 개체입니다. 2자리 소문자 [언어
        코드](https://developers.xsolla.com/ko/doc/pay-station/features/localization/)입니다.
      properties:
        en:
          type:
            - string
            - 'null'
          example: How to unlock rewards
        ar:
          type:
            - string
            - 'null'
          example: null
        bg:
          type:
            - string
            - 'null'
          example: null
        cn:
          type:
            - string
            - 'null'
          example: null
        cs:
          type:
            - string
            - 'null'
          example: null
        de:
          type:
            - string
            - 'null'
          example: Wie man Belohnungen freischaltet
        es:
          type:
            - string
            - 'null'
          example: Cómo desbloquear recompensas
        fr:
          type:
            - string
            - 'null'
          example: Comment débloquer des récompenses
        he:
          type:
            - string
            - 'null'
          example: null
        it:
          type:
            - string
            - 'null'
          example: Come sbloccare ricompense
        ja:
          type:
            - string
            - 'null'
          example: 報酬をアンロックする方法
        ko:
          type:
            - string
            - 'null'
          example: null
        pl:
          type:
            - string
            - 'null'
          example: null
        pt:
          type:
            - string
            - 'null'
          example: null
        ro:
          type:
            - string
            - 'null'
          example: null
        ru:
          type:
            - string
            - 'null'
          example: null
        th:
          type:
            - string
            - 'null'
          example: null
        tr:
          type:
            - string
            - 'null'
          example: null
        tw:
          type:
            - string
            - 'null'
          example: null
        vi:
          type:
            - string
            - 'null'
          example: null
    popup_instruction-two-letter-locale:
      type:
        - object
        - 'null'
      description: >-
        클랜 보상 체인 툴팁 팝업 창의 지시를 위한 현지화가 있는 개체입니다. 2자리 소문자 [언어
        코드](https://developers.xsolla.com/ko/doc/pay-station/features/localization/)입니다.
      properties:
        en:
          type:
            - string
            - 'null'
          example: >-
            You must be a clan member to get clan rewards. You join a clan when
            a clan member invites you to the clan, and you accept the invite.
            You can also create your own clan.
        ar:
          type:
            - string
            - 'null'
          example: null
        bg:
          type:
            - string
            - 'null'
          example: null
        cn:
          type:
            - string
            - 'null'
          example: null
        cs:
          type:
            - string
            - 'null'
          example: null
        de:
          type:
            - string
            - 'null'
          example: >-
            Du musst ein Clanmitglied sein, um Clananreize zu erhalten. Du
            trittst einem Clan bei, wenn ein Clanmitglied dich einlädt, und du
            die Einladung annimmst. Du kannst auch deinen eigenen Clan
            erstellen.
        es:
          type:
            - string
            - 'null'
          example: >-
            Debes ser miembro de un clan para obtener las recompensas del clan.
            Te unes a un clan cuando un miembro del clan te invita al clan y
            aceptas la invitación. También puedes crear tu propio clan.
        fr:
          type:
            - string
            - 'null'
          example: >-
            Vous devez être membre d'un clan pour obtenir les récompenses du
            clan. Vous rejoignez un clan lorsque qu'un membre du clan vous
            invite au clan et que vous acceptez l'invitation. Vous pouvez
            également créer votre propre clan.
        he:
          type:
            - string
            - 'null'
          example: null
        it:
          type:
            - string
            - 'null'
          example: >-
            Devi essere un membro del clan per ottenere le ricompense del clan.
            Ti unisci a un clan quando un membro del clan ti invita al clan e
            accetti l'invito. Puoi anche creare il tuo clan.
        ja:
          type:
            - string
            - 'null'
          example: >-
            クランリワードを受け取るには、クランメンバーでなければなりません。
            クランメンバーがあなたをクランに招待し、招待を受け入れると、クランに参加できます。 あなた自身のクランを作成することもできます。
        ko:
          type:
            - string
            - 'null'
          example: null
        pl:
          type:
            - string
            - 'null'
          example: null
        pt:
          type:
            - string
            - 'null'
          example: null
        ro:
          type:
            - string
            - 'null'
          example: null
        ru:
          type:
            - string
            - 'null'
          example: null
        th:
          type:
            - string
            - 'null'
          example: null
        tr:
          type:
            - string
            - 'null'
          example: null
        tw:
          type:
            - string
            - 'null'
          example: null
        vi:
          type:
            - string
            - 'null'
          example: null
    popup_image_url:
      type:
        - string
        - 'null'
      example: https://image.example.com
      description: 클랜 보상 체인 툴팁 팝업 창 이미지입니다.
      format: uri
    client-reward-chain-item-model:
      type: object
      properties:
        reward_chain_id:
          type: integer
          example: 9
          description: 보상 체인 ID입니다.
        name:
          type: string
          example: Weekly quest
          description: 보상 체인의 이름입니다.
        description:
          type:
            - string
            - 'null'
          example: Major weekly quest
          description: 리워드 체인에 대한 설명입니다.
        long_description:
          type:
            - string
            - 'null'
          example: >-
            You can get a lot of additional items just by shopping during the
            week
          description: 보상 체인에 대한 긴 설명입니다.
        image_url:
          $ref: '#/components/schemas/image_url'
        order:
          $ref: '#/components/schemas/order'
        date_start:
          $ref: '#/components/schemas/date_start'
        date_end:
          $ref: '#/components/schemas/date_end'
        clan_type:
          $ref: '#/components/schemas/clan_type'
        top_contributors:
          type: array
          items:
            $ref: '#/components/schemas/top_contributors'
        value_point:
          type: object
          properties:
            sku:
              $ref: '#/components/schemas/value-point-sku'
            name:
              $ref: '#/components/schemas/value-point-name'
            image_url:
              $ref: '#/components/schemas/Common_admin-image_url'
            description:
              $ref: '#/components/schemas/value-point-description'
            long_description:
              $ref: '#/components/schemas/value-point-long-description'
            amount:
              $ref: '#/components/schemas/value-point-amount'
            is_clan:
              $ref: '#/components/schemas/is_clan'
        steps:
          type: array
          items:
            type: object
            description: 보상 체인의 단계입니다.
            properties:
              step_id:
                type: integer
                example: 10
                description: 단계 ID입니다.
              name:
                type: string
                example: Level 1
                description: 단계 이름.
              is_claimed:
                type: boolean
                example: false
                description: 단계 보상이 청구되는지 여부입니다.
              image_url:
                $ref: '#/components/schemas/Common_admin-image_url'
              price:
                type: object
                properties:
                  amount:
                    type: integer
                    example: 100
                    description: 사용자가 단계에 대해 청구하는 값 포인트의 수입니다.
              reward:
                type: array
                items:
                  type: object
                  properties:
                    sku:
                      $ref: '#/components/schemas/sku'
                    name:
                      type: string
                      example: Super box
                      description: 아이템 이름입니다.
                    type:
                      type: string
                      example: bundle
                      description: 아이템 유형입니다.
                    description:
                      type: string
                      example: Super box with items
                      description: 아이템 설명입니다.
                    image_url:
                      $ref: '#/components/schemas/Common_admin-image_url'
                    quantity:
                      type: integer
                      example: 2
                      description: 아이템 수량입니다.
        recurrent_schedule:
          $ref: '#/components/schemas/recurrent_schedule_client_side'
        popup_header:
          $ref: '#/components/schemas/popup_header-two-letter-locale'
        popup_instruction:
          $ref: '#/components/schemas/popup_instruction-two-letter-locale'
        popup_image_url:
          $ref: '#/components/schemas/popup_image_url'
    Pagination_has-more:
      type: boolean
      example: true
      description: 페이지가 더 있다는 표시로 사용됩니다.
    reward_chain_id:
      type: integer
      example: 9
      description: 고유한 보상 체인 ID입니다.
    periods:
      type: array
      nullable: false
      description: 리워드 체인의 유효 기간. 기간이 여러 개 지정된 경우 `date_from`와 `date_until`가 모두 필요합니다.
      items:
        type: object
        properties:
          date_from:
            type: string
            format: date-time
            nullable: false
            example: '2020-08-11T10:00:00+03:00'
            description: 지정된 리워드 체인의 시작 날짜.
          date_until:
            type:
              - string
              - 'null'
            format: date-time
            example: '2020-08-11T20:00:00+03:00'
            description: 지정된 리워드 체인의 종료 날짜. 단일 유효 기간이 지정된 경우에만 `null`일 수 있습니다.
        required:
          - date_from
    day_of_week:
      type: integer
      description: 보상 체인이 초기화되는 요일. 여기서 `1`은 월요일, `7`은 일요일입니다.
      minimum: 1
      maximum: 7
    time:
      type: string
      description: >-
        원하는 시간대에서 보상 체인이 재설정되는 시간입니다(시간 단위로 반올림). <br><br> 예를 들어, 쿠알라룸푸르
        시간대(GMT+8)의 경우 보상 체인 재설정 시간은 01:00입니다. 이 경우 `time` 매개 변수의 값은
        `01:00:00+08:00`입니다.
      pattern: ((0[0-9]|1[0-9]|2[0-3]):00:00)(\+|-)(0[0-9]|1[0-9]|2[0-3]):([0-5][0-9])
      example: 01:00:00+08:00
    displayable_reset_start_date:
      description: >-
        보상 체인의 첫 번째 재설정 날짜 및 시간. <br><br> 예를 들어 보상 체인의 첫 번째 재설정 날짜 및 시간은 쿠알라룸푸르
        시간으로 2024년 3월 1일 01:00이며 이는 <a
        href="https://en.wikipedia.org/wiki/ISO_8601" target="_blank">ISO
        8601</a> 형식으로 `2024-03-01T01:00:00+08:00`입니다. <br><br> 예:
        `2024-03-01T01:00:00+08:00`
      type: string
      format: date-time
    displayable_reset_next_date:
      description: >-
        다음에 보상 체인이 재설정되는 날짜와 시간 계산 결과 <a
        href="https://en.wikipedia.org/wiki/ISO_8601" target="_blank">(ISO
        8601)</a>. <br><br> 예를 들어, 보상 체인은 2024년 3월 1일부터 쿠알라룸푸르 시간으로 01:00에 매월
        초기화됩니다. 다음 보상 체인 재설정 날짜와 시간은 쿠알라룸푸르 시간으로 2024년 4월 1일 01:00이며, 이는 <a
        href="https://en.wikipedia.org/wiki/ISO_8601" target="_blank">ISO
        8601</a> 형식으로 `2024-04-01T01:00:00+08:00`에 해당합니다. <br><br> 예:
        `2024-04-01T01:00:00+08:00`
      type: string
      format: date-time
    day_of_month:
      type: integer
      description: >-
        보상 체인이 초기화되는 월의 날짜입니다. 해당 월의 일수가 지정된 날짜의 서수보다 작으면 해당 월의 마지막 날에 보상 체인이
        초기화됩니다.
      minimum: 1
      maximum: 31
    reward_chain_hours_interval:
      type: integer
      description: >-
        리워드 체인이 재설정되는 시간 간격(시간). <br><br> 카운트다운은 <a
        href="https://developers.xsolla.com/ko/api/shop-builder/operation/admin-create-offer-chain/#!path=date_start&t=request">date_start</a>
        매개 변수에서 시작됩니다. <br><br> 예를 들어, `date_start =
        "2025-11-15T18:15:00+05:00"`이고 `hours_interval = 2`인 경우, 오퍼 체인은
        `"2025-11-15T20:15:00+05:00"`부터 2시간마다 재설정됩니다.
      minimum: 1
      maximum: 10000
    admin_recurrent_schedule:
      type:
        - object
        - 'null'
      description: 보상 체인의 반복 재설정 기간입니다.
      oneOf:
        - type: object
          title: interval_type = 주간
          description: 보상 체인의 주간 재설정입니다.
          properties:
            interval_type:
              $ref: '#/components/schemas/interval_type_weekly'
            day_of_week:
              $ref: '#/components/schemas/day_of_week'
            time:
              $ref: '#/components/schemas/time'
            reset_next_date:
              $ref: '#/components/schemas/reset_next_date'
            displayable_reset_start_date:
              $ref: '#/components/schemas/displayable_reset_start_date'
            displayable_reset_next_date:
              $ref: '#/components/schemas/displayable_reset_next_date'
        - type: object
          title: interval_type = 월간
          description: 보상 체인의 월간 재설정입니다.
          properties:
            interval_type:
              $ref: '#/components/schemas/interval_type_monthly'
            day_of_month:
              $ref: '#/components/schemas/day_of_month'
            time:
              $ref: '#/components/schemas/time'
            reset_next_date:
              $ref: '#/components/schemas/reset_next_date'
            displayable_reset_start_date:
              $ref: '#/components/schemas/displayable_reset_start_date'
            displayable_reset_next_date:
              $ref: '#/components/schemas/displayable_reset_next_date'
        - type: object
          title: interval_type = 시간
          description: 보상 체인이 지정된 시간 간격(시간 단위)으로 재설정됩니다.
          properties:
            interval_type:
              $ref: '#/components/schemas/interval_type_hourly_rc'
            hours_interval:
              $ref: '#/components/schemas/reward_chain_hours_interval'
            time:
              $ref: '#/components/schemas/time'
            reset_next_date:
              $ref: '#/components/schemas/reset_next_date'
            displayable_reset_start_date:
              $ref: '#/components/schemas/displayable_reset_start_date'
            displayable_reset_next_date:
              $ref: '#/components/schemas/displayable_reset_next_date'
    chain_user-attribute_conditions_model-get:
      allOf:
        - $ref: '#/components/schemas/user-attribute_conditions_model-get'
        - description: 사용자 특성 검증 조건. 사용자 특성이 지정된 모든 조건과 일치하는지 여부에 따라 체인의 가용성을 결정합니다.
    chain_is_always_visible:
      description: >-
        해당 체인이 모든 사용자에게 표시되는지 여부입니다. `true`인 경우, 사용자의 인증 상태나 특성과 관계없이 체인이 항상
        표시됩니다.


        사용자 맞춤 설정을 구성하려면 `false`를 전달해야 합니다. 체인 표시 로직은 다음과 같습니다:
          * `false`가 전달되고 `attribute_conditions` 배열에 표시 조건이 지정된 경우, 해당 체인은 사용자 맞춤 설정된 것으로 간주되어 지정된 조건을 충족하는 승인된 사용자에게만 표시됩니다.
          * `false`가 전달되었으나 `attribute_conditions` 목록이 전달되지 않았거나 비어 있는 경우, 체인은 권한이 없는 사용자에게 표시되며, 권한이 있는 사용자에게도 일치하는 체인이 발견되지 않은 경우에도 표시됩니다.
      type: boolean
      default: true
      example: true
    is_reset_after_end:
      description: |-
        종료 날짜 이후 리워드 체인 재설정 여부(모든 사용자의 밸류 포인트 및 진행 사항)
        * `true`인 경우, 리워드 체인은 종료 날짜 이후 재설정됩니다.
        * `false`인 경우, 리워드 체인은 종료 날짜 이후 재설정되지 않습니다.

        <br>

        <div class="notice"><strong>주의</strong><br><br>
        다음의 경우 <code>true</code>일 수 없음:<br>
        <ul>
          <li><code>recurrent_schedule</code>으로 재설정 기간이 설정된 경우.</li>
          <li><code>periods.date_until</code>에 <code>null</code> 값이 전달된 경우.</li>
        </ul>
        </div>
      type: boolean
      default: false
      example: false
    admin-get-reward-chain-item-basic-model:
      type: object
      description: 보상 체인입니다.
      properties:
        reward_chain_id:
          $ref: '#/components/schemas/reward_chain_id'
        name:
          $ref: '#/components/schemas/name-localization-object'
        order:
          $ref: '#/components/schemas/order'
        description:
          $ref: '#/components/schemas/description-localization-object'
        long_description:
          $ref: '#/components/schemas/long-description-localization-object'
        image_url:
          $ref: '#/components/schemas/image_url'
        periods:
          $ref: '#/components/schemas/periods'
        is_enabled:
          $ref: '#/components/schemas/is_enabled'
        value_point:
          type: object
          properties:
            sku:
              $ref: '#/components/schemas/value-point-sku'
            name:
              $ref: '#/components/schemas/value-point-name'
            type:
              type: string
              example: value_point
            image_url:
              $ref: '#/components/schemas/Common_admin-image_url'
            description:
              $ref: '#/components/schemas/value-point-description'
            long_description:
              $ref: '#/components/schemas/value-point-long-description'
            amount:
              $ref: '#/components/schemas/value-point-amount'
            is_clan:
              $ref: '#/components/schemas/is_clan'
            is_enabled:
              $ref: '#/components/schemas/is_enabled'
            media_list:
              $ref: '#/components/schemas/media_list'
            order:
              $ref: '#/components/schemas/order'
        recurrent_schedule:
          $ref: '#/components/schemas/admin_recurrent_schedule'
        attribute_conditions:
          $ref: '#/components/schemas/chain_user-attribute_conditions_model-get'
        is_always_visible:
          $ref: '#/components/schemas/chain_is_always_visible'
        is_reset_after_end:
          $ref: '#/components/schemas/is_reset_after_end'
    admin-get-reward-chain-item-clan-basic-model:
      allOf:
        - $ref: '#/components/schemas/admin-get-reward-chain-item-basic-model'
        - type: object
          description: 클랜 보상 체인입니다.
          properties:
            value_point:
              type: object
              description: 클랜 보상 체인에 대해 설정된 가치 포인트입니다.
              properties:
                sku:
                  $ref: '#/components/schemas/value-point-sku'
                name:
                  $ref: '#/components/schemas/value-point-name'
                type:
                  type: string
                  example: value_point
                image_url:
                  $ref: '#/components/schemas/Common_admin-image_url'
                description:
                  $ref: '#/components/schemas/value-point-description'
                long_description:
                  $ref: '#/components/schemas/value-point-long-description'
                amount:
                  $ref: '#/components/schemas/value-point-amount'
                is_clan:
                  $ref: '#/components/schemas/is_clan'
                is_enabled:
                  $ref: '#/components/schemas/is_enabled'
                media_list:
                  $ref: '#/components/schemas/media_list'
                order:
                  $ref: '#/components/schemas/order'
              required:
                - sku
            popup_header:
              $ref: '#/components/schemas/popup_header-two-letter-locale'
            popup_instruction:
              $ref: '#/components/schemas/popup_instruction-two-letter-locale'
            popup_image_url:
              $ref: '#/components/schemas/popup_image_url'
            clan_type:
              $ref: '#/components/schemas/clan_type'
    step_price_amount:
      type: integer
      example: 100
      description: 가치 포인트의 단계 가격입니다.
    reward_step_price:
      type: object
      properties:
        amount:
          $ref: '#/components/schemas/step_price_amount'
      required:
        - amount
    reward_item_quantity:
      type: integer
      example: 2
      description: 아이템 수량입니다.
    reward-chain-step-reward_user-attribute_conditions_model-post:
      allOf:
        - $ref: '#/components/schemas/user-attribute_conditions_model-post'
        - description: >-
            사용자 특성 검증 조건. 사용자 특성이 지정된 모든 조건과 일치하는지 여부에 따라 리워드 체인 단계의 리워드 가용성을
            결정합니다.
    create_reward_step:
      type: object
      description: 보상 체인의 단계입니다.
      properties:
        name:
          $ref: '#/components/schemas/name-localization-object'
        price:
          $ref: '#/components/schemas/reward_step_price'
        image_url:
          $ref: '#/components/schemas/image_url'
        reward:
          type: array
          items:
            type: object
            properties:
              sku:
                $ref: '#/components/schemas/sku'
              quantity:
                $ref: '#/components/schemas/reward_item_quantity'
              attribute_conditions:
                $ref: >-
                  #/components/schemas/reward-chain-step-reward_user-attribute_conditions_model-post
            required:
              - sku
              - quantity
      required:
        - name
        - price
        - reward
    recurrent_schedule_create_update:
      type:
        - object
        - 'null'
      description: 보상 체인의 반복 재설정 기간입니다.
      oneOf:
        - type: object
          title: interval_type = 주간
          description: 보상 체인의 주간 새로고침 유형입니다.
          properties:
            interval_type:
              $ref: '#/components/schemas/interval_type_weekly'
            day_of_week:
              $ref: '#/components/schemas/day_of_week'
            time:
              $ref: '#/components/schemas/time'
          required:
            - interval_type
            - time
            - day_of_week
        - type: object
          title: interval_type = 월간
          description: 보상 체인의 월간 새로고침 유형입니다.
          properties:
            interval_type:
              $ref: '#/components/schemas/interval_type_monthly'
            day_of_month:
              $ref: '#/components/schemas/day_of_month'
            time:
              $ref: '#/components/schemas/time'
          required:
            - interval_type
            - time
            - day_of_month
        - type: object
          title: interval_type = 시간
          description: 보상 체인이 지정된 시간 간격(시간 단위)으로 재설정됩니다.
          properties:
            interval_type:
              $ref: '#/components/schemas/interval_type_hourly_rc'
            hours_interval:
              $ref: '#/components/schemas/reward_chain_hours_interval'
          required:
            - interval_type
            - hours_interval
    chain_user-attribute_conditions_model-post:
      allOf:
        - $ref: '#/components/schemas/user-attribute_conditions_model-post'
        - description: 사용자 특성 검증 조건. 사용자 특성이 지정된 모든 조건과 일치하는지 여부에 따라 체인의 가용성을 결정합니다.
    create-reward-chain-model:
      type: object
      description: 보상 체인입니다.
      properties:
        name:
          $ref: '#/components/schemas/name-localization-object'
        description:
          $ref: '#/components/schemas/description-localization-object'
        long_description:
          $ref: '#/components/schemas/long-description-localization-object'
        image_url:
          $ref: '#/components/schemas/image_url'
        order:
          $ref: '#/components/schemas/order'
        periods:
          $ref: '#/components/schemas/periods'
        is_enabled:
          $ref: '#/components/schemas/is_enabled'
        value_point:
          type: object
          properties:
            sku:
              $ref: '#/components/schemas/sku'
          required:
            - sku
        steps:
          type: array
          items:
            $ref: '#/components/schemas/create_reward_step'
        recurrent_schedule:
          $ref: '#/components/schemas/recurrent_schedule_create_update'
        attribute_conditions:
          $ref: '#/components/schemas/chain_user-attribute_conditions_model-post'
        is_always_visible:
          $ref: '#/components/schemas/chain_is_always_visible'
        is_reset_after_end:
          $ref: '#/components/schemas/is_reset_after_end'
      required:
        - name
        - value_point
        - periods
        - steps
        - is_enabled
    create-clan-reward-chain-model:
      allOf:
        - $ref: '#/components/schemas/create-reward-chain-model'
        - type: object
          description: 클랜 보상 체인입니다.
          properties:
            value_point:
              type: object
              description: 클랜 보상 체인에 대해 설정된 가치 포인트입니다.
              properties:
                sku:
                  $ref: '#/components/schemas/sku'
              required:
                - sku
            popup_header:
              $ref: '#/components/schemas/popup_header-two-letter-locale'
            popup_instruction:
              $ref: '#/components/schemas/popup_instruction-two-letter-locale'
            popup_image_url:
              $ref: '#/components/schemas/popup_image_url'
            clan_type:
              $ref: '#/components/schemas/clan_type'
          required:
            - name
            - value_point
            - periods
            - steps
            - is_enabled
            - popup_header
            - popup_instruction
    step_id:
      type:
        - integer
        - 'null'
      example: 10
      description: 고유 단계 ID입니다.
    reward-chain-step-reward_user-attribute_conditions_model-get:
      allOf:
        - $ref: '#/components/schemas/user-attribute_conditions_model-get'
        - description: >-
            사용자 특성 검증 조건. 사용자 특성이 지정된 모든 조건과 일치하는지 여부에 따라 리워드 체인 단계의 리워드 가용성을
            결정합니다.
    reward_step_short:
      type: object
      description: 보상 체인의 단계입니다.
      properties:
        step_id:
          $ref: '#/components/schemas/step_id'
        name:
          $ref: '#/components/schemas/name-localization-object'
        price:
          $ref: '#/components/schemas/reward_step_price'
        image_url:
          $ref: '#/components/schemas/image_url'
        reward:
          type: array
          items:
            type: object
            properties:
              sku:
                $ref: '#/components/schemas/sku'
              quantity:
                $ref: '#/components/schemas/reward_item_quantity'
              attribute_conditions:
                $ref: >-
                  #/components/schemas/reward-chain-step-reward_user-attribute_conditions_model-get
    admin-get-reward-chain-item-full-model:
      type: object
      description: 보상 체인입니다.
      properties:
        reward_chain_id:
          $ref: '#/components/schemas/reward_chain_id'
        name:
          $ref: '#/components/schemas/name-localization-object'
        order:
          $ref: '#/components/schemas/order'
        description:
          $ref: '#/components/schemas/description-localization-object'
        long_description:
          $ref: '#/components/schemas/long-description-localization-object'
        image_url:
          $ref: '#/components/schemas/image_url'
        periods:
          $ref: '#/components/schemas/periods'
        is_enabled:
          $ref: '#/components/schemas/is_enabled'
        value_point:
          type: object
          properties:
            sku:
              $ref: '#/components/schemas/sku'
            description:
              $ref: '#/components/schemas/description-localization-object'
            long_description:
              $ref: '#/components/schemas/long-description-localization-object'
            name:
              $ref: '#/components/schemas/name-localization-object'
            type:
              type: string
            is_enabled:
              $ref: '#/components/schemas/is_enabled'
            image_url:
              $ref: '#/components/schemas/image_url'
            media_list:
              $ref: '#/components/schemas/media_list'
            order:
              $ref: '#/components/schemas/order'
            is_clan:
              $ref: '#/components/schemas/is_clan'
        steps:
          type: array
          items:
            $ref: '#/components/schemas/reward_step_short'
        recurrent_schedule:
          $ref: '#/components/schemas/admin_recurrent_schedule'
        attribute_conditions:
          $ref: '#/components/schemas/chain_user-attribute_conditions_model-get'
        is_always_visible:
          $ref: '#/components/schemas/chain_is_always_visible'
        is_reset_after_end:
          $ref: '#/components/schemas/is_reset_after_end'
    admin-get-reward-chain-item-clan-full-model:
      allOf:
        - $ref: '#/components/schemas/admin-get-reward-chain-item-full-model'
        - type: object
          description: 클랜 보상 체인입니다.
          properties:
            value_point:
              type: object
              description: 클랜 보상 체인에 대해 설정된 가치 포인트입니다.
              properties:
                sku:
                  $ref: '#/components/schemas/sku'
                description:
                  $ref: '#/components/schemas/description-localization-object'
                long_description:
                  $ref: '#/components/schemas/long-description-localization-object'
                name:
                  $ref: '#/components/schemas/name-localization-object'
                type:
                  type: string
                is_enabled:
                  $ref: '#/components/schemas/is_enabled'
                image_url:
                  $ref: '#/components/schemas/image_url'
                media_list:
                  $ref: '#/components/schemas/media_list'
                order:
                  $ref: '#/components/schemas/order'
                is_clan:
                  $ref: '#/components/schemas/is_clan'
              required:
                - sku
            popup_header:
              $ref: '#/components/schemas/popup_header-two-letter-locale'
            popup_instruction:
              $ref: '#/components/schemas/popup_instruction-two-letter-locale'
            popup_image_url:
              $ref: '#/components/schemas/popup_image_url'
            clan_type:
              $ref: '#/components/schemas/clan_type'
            top_contributors:
              $ref: '#/components/schemas/top_contributors'
    modify_reward_step:
      type: object
      description: 보상 체인의 단계입니다.
      properties:
        step_id:
          $ref: '#/components/schemas/step_id'
        name:
          $ref: '#/components/schemas/name-localization-object'
        price:
          $ref: '#/components/schemas/reward_step_price'
        image_url:
          $ref: '#/components/schemas/image_url'
        reward:
          type: array
          items:
            type: object
            properties:
              sku:
                $ref: '#/components/schemas/sku'
              quantity:
                $ref: '#/components/schemas/reward_item_quantity'
              attribute_conditions:
                $ref: >-
                  #/components/schemas/reward-chain-step-reward_user-attribute_conditions_model-post
            required:
              - sku
              - quantity
      required:
        - name
        - price
        - reward
        - step_id
    update-reward-chain-model:
      type: object
      description: 보상 체인입니다.
      properties:
        name:
          $ref: '#/components/schemas/name-localization-object'
        description:
          $ref: '#/components/schemas/description-localization-object'
        long_description:
          $ref: '#/components/schemas/long-description-localization-object'
        image_url:
          $ref: '#/components/schemas/image_url'
        order:
          $ref: '#/components/schemas/order'
        periods:
          $ref: '#/components/schemas/periods'
        is_enabled:
          $ref: '#/components/schemas/is_enabled'
        steps:
          type: array
          items:
            $ref: '#/components/schemas/modify_reward_step'
        recurrent_schedule:
          $ref: '#/components/schemas/recurrent_schedule_create_update'
        attribute_conditions:
          $ref: '#/components/schemas/chain_user-attribute_conditions_model-post'
        is_always_visible:
          $ref: '#/components/schemas/chain_is_always_visible'
        is_reset_after_end:
          $ref: '#/components/schemas/is_reset_after_end'
      required:
        - name
        - periods
        - steps
        - is_enabled
    update-clan-reward-chain-model:
      allOf:
        - $ref: '#/components/schemas/create-reward-chain-model'
        - type: object
          description: 클랜 보상 체인입니다.
          properties:
            popup_header:
              $ref: '#/components/schemas/popup_header-two-letter-locale'
            popup_instruction:
              $ref: '#/components/schemas/popup_instruction-two-letter-locale'
            popup_image_url:
              $ref: '#/components/schemas/popup_image_url'
            clan_type:
              $ref: '#/components/schemas/clan_type'
          required:
            - name
            - periods
            - steps
            - is_enabled
            - popup_header
            - popup_instruction
    daily_chain_type:
      type: string
      enum:
        - calendar_hard
        - rolling_skippable
        - rolling_unskippable
      description: >-
        사용자가 보상을 청구할 수 있는 시점을 결정하는 일일 보상 유형입니다.


        사용 가능한 값: - `calendar_hard` - 24시간마다 다음 단계 보상을 해제합니다. 다음 단계 보상이 제공되기
        시작하면 아직 수령하지 않은 단계 보상은 영구적으로 소멸됩니다. - `rolling_skippable` -
        `date_start`를 기준으로 24시간마다 다음 단계 보상을 해제합니다. 진행은 순차적으로 이루어집니다: 이전 보상을 수령한
        이후에 새로운 보상이 해제됩니다. 사용자가 하루 이상을 건너뛰더라도 중단된 지점부터 계속 진행되며, 건너뛴 날에 대해 보상이 중복
        지급되지 않습니다. - `rolling_unskippable` - `date_start`를 기준으로 24시간마다 다음 단계 보상을
        해제합니다. 진행은 순차적으로 이루어집니다: 이전 보상을 수령하기 전까지는 새로운 보상이 해제되지 않습니다. 그러나 사용자가
        하루를 건너뛰면 진행 상황이 초기화되며 첫 번째 단계부터 다시 시작해야 합니다.
    calendar_hard_date_start:
      type: string
      format: date-time
      example: '2020-04-15T18:16:00+05:00'
      description: 일일 보상이 시작되는 날짜입니다.
    calendar_hard_is_recurrent:
      type: boolean
      example: true
      default: false
      description: >-
        일일 보상이 반복되는지 여부. `true`인 경우, 일일 보상은 종료일 이후 자동으로 초기화됩니다. 다음 `start_date`
        및 `end_date` 일정은 일일 보상 단계 수와 `start_date`에 설정된 초기 시간에 기반합니다.
    calendar-hard-daily-chain-base:
      type: object
      description: '`calendar_hard` 일일 보상 유형의 기본 특성.'
      properties:
        type:
          allOf:
            - $ref: '#/components/schemas/daily_chain_type'
            - enum:
                - calendar_hard
        date_start:
          $ref: '#/components/schemas/calendar_hard_date_start'
        is_recurrent:
          $ref: '#/components/schemas/calendar_hard_is_recurrent'
    daily_chain_id:
      type: integer
      example: 9
      description: 일일 보상 고유 ID입니다.
    daily_chain_date_end:
      type:
        - string
        - 'null'
      format: date-time
      example: '2020-04-15T18:16:00+05:00'
      description: >-
        일일 보상이 종료되는 날짜입니다. `null`일 수 있습니다. 유형을 `calendar_hard`로 설정하면 이 날짜가 추가된
        걸음 수에 따라 자동으로 설정되므로 이 부분을 `null`로 둘 수 있습니다.
    daily_chain_number_of_step:
      type: integer
      example: 3
      description: 일일 보상에서 구성한 걸음 수입니다. 여기서 각 걸음은 일일 보상의 하루를 의미합니다.
    admin-calendar-hard-daily-chain-short-model:
      allOf:
        - $ref: '#/components/schemas/calendar-hard-daily-chain-base'
        - type: object
          description: '`calendar_hard` 일일 보상(짧은 버전).'
          properties:
            id:
              $ref: '#/components/schemas/daily_chain_id'
            name:
              $ref: '#/components/schemas/name-localization-object'
            order:
              $ref: '#/components/schemas/order'
            description:
              $ref: '#/components/schemas/description-localization-object'
            date_end:
              $ref: '#/components/schemas/daily_chain_date_end'
            is_enabled:
              $ref: '#/components/schemas/is_enabled'
            number_of_steps:
              $ref: '#/components/schemas/daily_chain_number_of_step'
    daily_rolling_chain_date_start:
      type: string
      format: date-time
      example: '2020-04-15T18:16:00+05:00'
      description: 일일 보상이 시작되는 날짜와 시간. 이 시간은 사용자가 보상을 청구할 수 있는 일일 재설정 시점도 정의합니다.
    rolling_date_end:
      type:
        - string
        - 'null'
      format: date-time
      example: '2020-04-15T18:16:00+05:00'
      description: 일일 보상이 종료되는 날짜입니다.
    rolling_is_recurrent:
      type: boolean
      example: true
      default: false
      description: >-
        일일 보상이 반복되는지 여부. `true`인 경우, 사용자가 모든 단계를 완료하면 일일 보상이 초기화되어 1단계부터 다시 시작할
        수 있습니다. 재발생은 `date_start`와 `date_end`로 정의된 활성 보상 기간 내에서만 유효합니다.
    rolling-skippable-daily-chain-base:
      type: object
      description: '`rolling_skippable` 일일 보상 유형의 기본 특성입니다.'
      properties:
        type:
          allOf:
            - $ref: '#/components/schemas/daily_chain_type'
            - enum:
                - rolling_skippable
        date_start:
          $ref: '#/components/schemas/daily_rolling_chain_date_start'
        date_end:
          $ref: '#/components/schemas/rolling_date_end'
        is_recurrent:
          $ref: '#/components/schemas/rolling_is_recurrent'
    admin-rolling-skippable-daily-chain-short-model:
      allOf:
        - $ref: '#/components/schemas/rolling-skippable-daily-chain-base'
        - type: object
          description: '`rolling_skippable` 일일 보상(짧은 버전).'
          properties:
            id:
              $ref: '#/components/schemas/daily_chain_id'
            name:
              $ref: '#/components/schemas/name-localization-object'
            order:
              $ref: '#/components/schemas/order'
            description:
              $ref: '#/components/schemas/description-localization-object'
            is_enabled:
              $ref: '#/components/schemas/is_enabled'
            number_of_steps:
              $ref: '#/components/schemas/daily_chain_number_of_step'
    rolling-unskippable-daily-chain-base:
      type: object
      description: '`rolling_unskippable` 일일 보상 유형의 기본 특성입니다.'
      properties:
        type:
          allOf:
            - $ref: '#/components/schemas/daily_chain_type'
            - enum:
                - rolling_unskippable
        date_start:
          $ref: '#/components/schemas/daily_rolling_chain_date_start'
        date_end:
          $ref: '#/components/schemas/rolling_date_end'
        is_recurrent:
          $ref: '#/components/schemas/rolling_is_recurrent'
    admin-rolling-unskippable-daily-chain-short-model:
      allOf:
        - $ref: '#/components/schemas/rolling-unskippable-daily-chain-base'
        - type: object
          description: '`rolling_unskippable` 일일 보상(짧은 버전).'
          properties:
            id:
              $ref: '#/components/schemas/daily_chain_id'
            name:
              $ref: '#/components/schemas/name-localization-object'
            order:
              $ref: '#/components/schemas/order'
            description:
              $ref: '#/components/schemas/description-localization-object'
            is_enabled:
              $ref: '#/components/schemas/is_enabled'
            number_of_steps:
              $ref: '#/components/schemas/daily_chain_number_of_step'
    admin-daily-chain-short-model:
      oneOf:
        - $ref: '#/components/schemas/admin-calendar-hard-daily-chain-short-model'
        - $ref: '#/components/schemas/admin-rolling-skippable-daily-chain-short-model'
        - $ref: >-
            #/components/schemas/admin-rolling-unskippable-daily-chain-short-model
      discriminator:
        propertyName: type
        mapping:
          calendar_hard: '#/components/schemas/admin-calendar-hard-daily-chain-short-model'
          rolling_skippable: '#/components/schemas/admin-rolling-skippable-daily-chain-short-model'
          rolling_unskippable: >-
            #/components/schemas/admin-rolling-unskippable-daily-chain-short-model
    daily_chain_step_number:
      type: integer
      example: 2
      description: 단계 번호입니다.
      nullable: false
      minimum: 1
    modify-daily-chain-item-model:
      type: object
      properties:
        sku:
          $ref: '#/components/schemas/sku'
        quantity:
          type: integer
          description: 이 SKU의 일일 보상 단계 수입니다.
          minimum: 1
      required:
        - sku
        - quantity
    create-daily-chain-step-model:
      type: object
      properties:
        step_number:
          $ref: '#/components/schemas/daily_chain_step_number'
        items:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/modify-daily-chain-item-model'
      required:
        - step_number
        - items
    create-calendar-hard-daily-chain-model:
      allOf:
        - $ref: '#/components/schemas/calendar-hard-daily-chain-base'
        - type: object
          description: '`calendar_hard` 유형의 일일 보상입니다.'
          properties:
            name:
              $ref: '#/components/schemas/name-localization-object'
            order:
              $ref: '#/components/schemas/order'
            description:
              $ref: '#/components/schemas/description-localization-object'
            is_enabled:
              $ref: '#/components/schemas/is_enabled'
            steps:
              type: array
              items:
                $ref: '#/components/schemas/create-daily-chain-step-model'
          required:
            - name
            - date_start
            - steps
            - is_enabled
            - type
    create-rolling-skippable-daily-chain-model:
      allOf:
        - $ref: '#/components/schemas/rolling-skippable-daily-chain-base'
        - type: object
          description: '`rolling_skippable` 유형의 일일 보상입니다.'
          properties:
            name:
              $ref: '#/components/schemas/name-localization-object'
            order:
              $ref: '#/components/schemas/order'
            description:
              $ref: '#/components/schemas/description-localization-object'
            is_enabled:
              $ref: '#/components/schemas/is_enabled'
            steps:
              type: array
              items:
                $ref: '#/components/schemas/create-daily-chain-step-model'
          required:
            - name
            - date_start
            - steps
            - is_enabled
            - type
    create-rolling-unskippable-daily-chain-model:
      allOf:
        - $ref: '#/components/schemas/rolling-unskippable-daily-chain-base'
        - type: object
          description: '`rolling_unskippable` 유형의 일일 보상입니다.'
          properties:
            name:
              $ref: '#/components/schemas/name-localization-object'
            order:
              $ref: '#/components/schemas/order'
            description:
              $ref: '#/components/schemas/description-localization-object'
            is_enabled:
              $ref: '#/components/schemas/is_enabled'
            steps:
              type: array
              items:
                $ref: '#/components/schemas/create-daily-chain-step-model'
          required:
            - name
            - date_start
            - steps
            - is_enabled
            - type
    daily-chain-error-model:
      type: object
      properties:
        statusCode:
          type: integer
          example: 422
        errorCode:
          type: integer
          example: 1102
        errorMessage:
          type: string
          example: >-
            [0401-1102]: Unprocessable Entity. The property `property_name` is
            required
        transactionId:
          type: string
          example: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          type:
            - object
            - 'null'
    daily_chain_step_id:
      type:
        - integer
        - 'null'
      example: 10
      description: 일일 보상 단계의 고유 식별자입니다.
      minimum: 1
    item_type:
      type: string
      description: '아이템 유형: `virtual_good`/`virtual_currency`/`bundle`/`unit`.'
    admin-daily-chain-item-model:
      type: object
      properties:
        item_id:
          $ref: '#/components/schemas/item_id'
        sku:
          $ref: '#/components/schemas/sku'
        type:
          $ref: '#/components/schemas/item_type'
        name:
          $ref: '#/components/schemas/two-letter-locale'
        description:
          $ref: '#/components/schemas/long-description-localization-object'
        image_url:
          $ref: '#/components/schemas/image_url'
        quantity:
          type: integer
          description: 아이템의 개수입니다.
          minimum: 1
          example: 1
    admin-daily-chain-step-model:
      type: object
      description: 일일 보상 단계입니다.
      properties:
        step_id:
          $ref: '#/components/schemas/daily_chain_step_id'
        step_number:
          $ref: '#/components/schemas/daily_chain_step_number'
        items:
          type: array
          items:
            $ref: '#/components/schemas/admin-daily-chain-item-model'
    admin-calendar-hard-daily-chain-model:
      allOf:
        - $ref: '#/components/schemas/calendar-hard-daily-chain-base'
        - type: object
          description: 관리자 응답에 대한 calendar_hard 일일 보상.
          properties:
            id:
              $ref: '#/components/schemas/daily_chain_id'
            name:
              $ref: '#/components/schemas/name-localization-object'
            order:
              $ref: '#/components/schemas/order'
            description:
              $ref: '#/components/schemas/description-localization-object'
            date_end:
              $ref: '#/components/schemas/daily_chain_date_end'
            is_enabled:
              $ref: '#/components/schemas/is_enabled'
            number_of_steps:
              $ref: '#/components/schemas/daily_chain_number_of_step'
            steps:
              type: array
              items:
                $ref: '#/components/schemas/admin-daily-chain-step-model'
    admin-rolling-skippable-daily-chain-model:
      allOf:
        - $ref: '#/components/schemas/rolling-skippable-daily-chain-base'
        - type: object
          description: 관리 보상에 대한 rolling_skippable 일일 보상.
          properties:
            id:
              $ref: '#/components/schemas/daily_chain_id'
            name:
              $ref: '#/components/schemas/name-localization-object'
            order:
              $ref: '#/components/schemas/order'
            description:
              $ref: '#/components/schemas/description-localization-object'
            is_enabled:
              $ref: '#/components/schemas/is_enabled'
            number_of_steps:
              $ref: '#/components/schemas/daily_chain_number_of_step'
            steps:
              type: array
              items:
                $ref: '#/components/schemas/admin-daily-chain-step-model'
    admin-rolling-unskippable-daily-chain-model:
      allOf:
        - $ref: '#/components/schemas/rolling-unskippable-daily-chain-base'
        - type: object
          description: 관리 보상에 대한 `rolling_unskippable` 일일 보상.
          properties:
            id:
              $ref: '#/components/schemas/daily_chain_id'
            name:
              $ref: '#/components/schemas/name-localization-object'
            order:
              $ref: '#/components/schemas/order'
            description:
              $ref: '#/components/schemas/description-localization-object'
            is_enabled:
              $ref: '#/components/schemas/is_enabled'
            number_of_steps:
              $ref: '#/components/schemas/daily_chain_number_of_step'
            steps:
              type: array
              items:
                $ref: '#/components/schemas/admin-daily-chain-step-model'
    admin-daily-chain-long-model:
      oneOf:
        - $ref: '#/components/schemas/admin-calendar-hard-daily-chain-model'
        - $ref: '#/components/schemas/admin-rolling-skippable-daily-chain-model'
        - $ref: '#/components/schemas/admin-rolling-unskippable-daily-chain-model'
      discriminator:
        propertyName: type
        mapping:
          calendar_hard: '#/components/schemas/admin-calendar-hard-daily-chain-model'
          rolling_skippable: '#/components/schemas/admin-rolling-skippable-daily-chain-model'
          rolling_unskippable: '#/components/schemas/admin-rolling-unskippable-daily-chain-model'
    daily_chain_update_step_id:
      type:
        - integer
        - 'null'
      example: 10
      description: 일일 보상 단계의 고유 식별자입니다. 이 단계에 대한 사용자 진행 상황을 유지하려면 업데이트 중에 지정합니다.
      minimum: 1
    modify-daily-chain-step-model:
      type: object
      properties:
        step_id:
          $ref: '#/components/schemas/daily_chain_update_step_id'
        step_number:
          $ref: '#/components/schemas/daily_chain_step_number'
        items:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/modify-daily-chain-item-model'
      required:
        - step_number
        - items
    update-calendar-hard-daily-chain-model:
      allOf:
        - $ref: '#/components/schemas/calendar-hard-daily-chain-base'
        - type: object
          description: '`calendar_hard` 유형의 일일 보상입니다.'
          properties:
            id:
              $ref: '#/components/schemas/daily_chain_id'
            name:
              $ref: '#/components/schemas/name-localization-object'
            order:
              $ref: '#/components/schemas/order'
            description:
              $ref: '#/components/schemas/description-localization-object'
            is_enabled:
              $ref: '#/components/schemas/is_enabled'
            steps:
              type: array
              items:
                $ref: '#/components/schemas/modify-daily-chain-step-model'
          required:
            - name
            - date_start
            - steps
            - is_enabled
            - type
    update-rolling-skippable-daily-chain-model:
      allOf:
        - $ref: '#/components/schemas/rolling-skippable-daily-chain-base'
        - type: object
          description: '`rolling_skippable` 유형의 일일 보상입니다.'
          properties:
            id:
              $ref: '#/components/schemas/daily_chain_id'
            name:
              $ref: '#/components/schemas/name-localization-object'
            order:
              $ref: '#/components/schemas/order'
            description:
              $ref: '#/components/schemas/description-localization-object'
            is_enabled:
              $ref: '#/components/schemas/is_enabled'
            steps:
              type: array
              items:
                $ref: '#/components/schemas/modify-daily-chain-step-model'
          required:
            - name
            - date_start
            - steps
            - is_enabled
            - type
    update-rolling-unskippable-daily-chain-model:
      allOf:
        - $ref: '#/components/schemas/rolling-unskippable-daily-chain-base'
        - type: object
          description: '`rolling_unskippable` 유형의 일일 보상입니다.'
          properties:
            id:
              $ref: '#/components/schemas/daily_chain_id'
            name:
              $ref: '#/components/schemas/name-localization-object'
            order:
              $ref: '#/components/schemas/order'
            description:
              $ref: '#/components/schemas/description-localization-object'
            is_enabled:
              $ref: '#/components/schemas/is_enabled'
            steps:
              type: array
              items:
                $ref: '#/components/schemas/modify-daily-chain-step-model'
          required:
            - name
            - date_start
            - steps
            - is_enabled
            - type
    client-daily-chain-item-model:
      type: object
      properties:
        item_id:
          $ref: '#/components/schemas/item_id'
        sku:
          $ref: '#/components/schemas/sku'
        type:
          $ref: '#/components/schemas/item_type'
        name:
          type: string
          description: 아이템 이름입니다.
        description:
          type:
            - string
            - 'null'
          description: 아이템 설명입니다.
        bundle_type:
          type:
            - string
            - 'null'
          enum:
            - standard
            - virtual_currency_package
        image_url:
          $ref: '#/components/schemas/image_url'
        is_free:
          $ref: '#/components/schemas/value-is_free'
        quantity:
          type: integer
          description: 아이템의 개수입니다.
          minimum: 1
          example: 1
        content:
          type:
            - array
            - 'null'
          items:
            $ref: '#/components/schemas/client-daily-chain-item-model'
    client-daily-chain-step-model:
      type: object
      description: 일일 보상 단계입니다.
      properties:
        step_number:
          $ref: '#/components/schemas/daily_chain_step_number'
        status:
          type: string
          example: claimed
          enum:
            - claimed
            - claimable
            - blocked
            - claim_in_future
          description: >-
            단계의 현재 청구 상태를 정의합니다.


            가능한 값: - `claimed` - 해당 단계는 이미 할당되었습니다. - `claimable` - 해당 단계를 할당할 수
            있습니다. - `blocked` - 해당 단계를 할당할 수 없습니다:   - 권한이 없는 사용자의 경우: 모든 단계가
            차단됩니다.   - `calendar_hard`의 경우: 해당 단계는 할당되지 않았으며 현재 과거에 속합니다.    -
            `rolling_skippable`의 경우: 이전 단계가 할당될 때까지 해당 단계가 잠겨 있습니다. -
            `claim_in_future` - 해당 단계는 할당되지 않았으며, 아직 미래에 속해 있습니다.
        unlocked_date:
          type: integer
          format: int64
          description: 단계가 잠금 해제되는 시점의 유닉스 타임스탬프입니다.
        items:
          type: array
          items:
            $ref: '#/components/schemas/client-daily-chain-item-model'
    client-calendar-hard-daily-chain-model:
      allOf:
        - $ref: '#/components/schemas/calendar-hard-daily-chain-base'
        - type: object
          description: 클라이언트 응답에 대한 calendar_hard일일 보상.
          properties:
            id:
              type: integer
              example: 9
              description: 일일 보상 ID입니다.
            name:
              type: string
              example: Weekly quest
              description: 일일 보상 이름입니다.
            description:
              type:
                - string
                - 'null'
              example: Major weekly quest
              description: 일일 보상 설명입니다.
            order:
              $ref: '#/components/schemas/order'
            date_end:
              $ref: '#/components/schemas/daily_chain_date_end'
            steps:
              type: array
              items:
                $ref: '#/components/schemas/client-daily-chain-step-model'
    client-rolling-skippable-daily-chain-model:
      allOf:
        - $ref: '#/components/schemas/rolling-skippable-daily-chain-base'
        - type: object
          description: 클라이언트 응답에 대한 rolling_skippable 일일 보상.
          properties:
            id:
              type: integer
              example: 9
              description: 일일 보상 ID입니다.
            name:
              type: string
              example: Weekly quest
              description: 일일 보상 이름입니다.
            description:
              type:
                - string
                - 'null'
              example: Major weekly quest
              description: 일일 보상 설명입니다.
            order:
              $ref: '#/components/schemas/order'
            steps:
              type: array
              items:
                $ref: '#/components/schemas/client-daily-chain-step-model'
    client-rolling-unskippable-daily-chain-model:
      allOf:
        - $ref: '#/components/schemas/rolling-unskippable-daily-chain-base'
        - type: object
          description: 클라이언트 응답에 대한 `rolling_unskippable` 일일 보상.
          properties:
            id:
              type: integer
              example: 9
              description: 일일 보상 ID입니다.
            name:
              type: string
              example: Weekly quest
              description: 일일 보상 이름입니다.
            description:
              type:
                - string
                - 'null'
              example: Major weekly quest
              description: 일일 보상 설명입니다.
            order:
              $ref: '#/components/schemas/order'
            steps:
              type: array
              items:
                $ref: '#/components/schemas/client-daily-chain-step-model'
    client-daily-chain-model:
      oneOf:
        - $ref: '#/components/schemas/client-calendar-hard-daily-chain-model'
        - $ref: '#/components/schemas/client-rolling-skippable-daily-chain-model'
        - $ref: '#/components/schemas/client-rolling-unskippable-daily-chain-model'
      discriminator:
        propertyName: type
        mapping:
          calendar_hard: '#/components/schemas/client-calendar-hard-daily-chain-model'
          rolling_skippable: '#/components/schemas/client-rolling-skippable-daily-chain-model'
          rolling_unskippable: '#/components/schemas/client-rolling-unskippable-daily-chain-model'
    offer_chain_date_start:
      type: string
      format: date-time
      example: '2020-04-15T18:16:00+05:00'
      description: 혜택 체인이 시작되는 날짜입니다.
    offer_chain_date_end:
      type:
        - string
        - 'null'
      format: date-time
      example: '2020-04-15T18:16:00+05:00'
      description: >-
        혜택 체인이 종료되는 날짜입니다. `null`일 수 있습니다. `date_end`이(가) `null`인 경우 혜택 체인에는 기간
        제한이 없습니다.
    offer_chain_step_number:
      type: integer
      example: 2
      description: 단계 번호입니다.
      nullable: false
      minimum: 1
    offer_chain_is_free:
      type: boolean
      description: >-
        혜택 체인 단계가 무료인지 여부를 나타냅니다.<ul><li><code>true</code>인 경우 <a
        href="/ko/api/shop-builder/operation/claim-user-offer-chain-step-reward">무료
        혜택 체인 단계 신청</a> 호출을 사용하여 해당 단계를 신청해야 합니다.</li><li><code>false</code>인 경우
        <a
        href="/ko/api/shop-builder/operation/order-user-offer-chain-step-reward">유료
        혜택 체인 단계 주문 생성</a> 호출을 사용하여 구매해야 합니다.</li></ul>
    offer_chain_step_price_amount:
      type: number
      example: 99.99
      description: 실제 화폐로 표시된 단계 가격입니다.
    offer_chain_step_price_currency:
      type: string
      example: USD
      description: >-
        아이템 가격 통화입니다. [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217)에 따른 3자리
        코드입니다.
    offer_chain_step_price:
      type:
        - object
        - 'null'
      properties:
        amount:
          $ref: '#/components/schemas/offer_chain_step_price_amount'
        currency:
          $ref: '#/components/schemas/offer_chain_step_price_currency'
      required:
        - amount
        - currency
    client-offer-chain-item-model:
      type: object
      properties:
        item_id:
          $ref: '#/components/schemas/item_id'
        sku:
          $ref: '#/components/schemas/sku'
        type:
          $ref: '#/components/schemas/item_type'
        name:
          type: string
          description: 아이템 이름입니다.
        description:
          type:
            - string
            - 'null'
          description: 아이템 설명입니다.
        bundle_type:
          type:
            - string
            - 'null'
          enum:
            - standard
            - virtual_currency_package
        image_url:
          $ref: '#/components/schemas/image_url'
        is_free:
          $ref: '#/components/schemas/value-is_free'
        quantity:
          type: integer
          description: 아이템의 개수입니다.
          minimum: 1
          example: 1
        order:
          $ref: '#/components/schemas/order'
        content:
          type:
            - array
            - 'null'
          items:
            $ref: '#/components/schemas/client-offer-chain-item-model'
    client-offer-chain-step-model:
      type: object
      description: 혜택 체인의 단계입니다.
      properties:
        step_number:
          $ref: '#/components/schemas/offer_chain_step_number'
        is_free:
          $ref: '#/components/schemas/offer_chain_is_free'
        is_claimed:
          type: boolean
          example: false
          description: 단계 리워드가 청구되었는지 또는 구매되었는지를 나타냅니다.
        step_price:
          $ref: '#/components/schemas/offer_chain_step_price'
        items:
          type: array
          items:
            $ref: '#/components/schemas/client-offer-chain-item-model'
        step_vp_rewards:
          type:
            - array
            - 'null'
          description: 리워드 시스템에서 리워드로 부여되는 가치 포인트의 배열입니다.
          items:
            type: object
            properties:
              item_id:
                $ref: '#/components/schemas/item_id'
              sku:
                $ref: '#/components/schemas/value-point-sku'
              amount:
                $ref: '#/components/schemas/value-point-amount'
              name:
                $ref: '#/components/schemas/value-point-name'
              image_url:
                $ref: '#/components/schemas/Common_admin-image_url'
              is_clan:
                $ref: '#/components/schemas/is_clan'
        step_loyalty_rewards:
          type:
            - array
            - 'null'
          items:
            type: object
            properties:
              name:
                type: string
                example: First Loyalty Point
                description: 로열티 포인트 이름.
              sku:
                type: string
                example: 0c745ef0-4243-46e1-aa90-54dee07da622
                description: 로열티 포인트의 SKU.
              description:
                type: string
                example: First Loyalty Point Desc
                description: 로열티 포인트의 설명입니다.
              image_url:
                $ref: '#/components/schemas/image_url'
              amount:
                type: integer
                example: 1
                description: 로열티 포인트 개수.
    offer_chain_reset_next_date:
      type: integer
      description: >-
        <a href="https://en.wikipedia.org/wiki/Unix_time" target="_blank">유닉스 타임
        스탬프</a> 형식으로 표시한 다음에 혜택 체인이 재설정되는 날짜와 시간입니다. <br><br> 예를 들어, 월간 혜택 체인의
        재설정은 2024년 3월 1일 01:00(쿠알라룸푸르 시간(GMT+8))에 시작됩니다. 다음 재설정은 2024년 4월 1일
        01:00(쿠알라룸푸르 시간(GMT+8))에 진행하며, 이는 2024년 3월 31일 17:00 GMT+0 또는 유닉스 타임 스탬프
        형식으로 `1711904400000`에 해당합니다. <br><br> 예: `1711904400000`
    offer_chain_recurrent_schedule_client_side:
      type:
        - object
        - 'null'
      description: 혜택 체인의 재설정 기간입니다.
      properties:
        interval_type:
          type: string
          description: 혜택 체인의 재설정 빈도입니다.
          enum:
            - weekly
            - monthly
            - hourly
        reset_next_date:
          $ref: '#/components/schemas/offer_chain_reset_next_date'
    client-offer-chain-model:
      type: object
      description: 혜택 체인입니다.
      properties:
        id:
          type: integer
          example: 9
          description: 혜택 체인 ID입니다.
        name:
          type: string
          example: Weekly quest
          description: 혜택 체인의 이름입니다.
        description:
          type:
            - string
            - 'null'
          example: Major weekly quest
          description: 혜택 체인의 설명입니다.
        order:
          $ref: '#/components/schemas/order'
        date_start:
          $ref: '#/components/schemas/offer_chain_date_start'
        date_end:
          $ref: '#/components/schemas/offer_chain_date_end'
        steps:
          type: array
          items:
            $ref: '#/components/schemas/client-offer-chain-step-model'
        recurrent_schedule:
          $ref: '#/components/schemas/offer_chain_recurrent_schedule_client_side'
        next_step_number:
          type:
            - integer
            - 'null'
          description: 다음 혜택 체인의 단계 번호입니다. 혜택 체인이 완료된 경우 `null`입니다.
          example: 1
    offer-chain-error-model:
      type: object
      properties:
        statusCode:
          type: integer
          example: 422
        errorCode:
          type: integer
          example: 1102
        errorMessage:
          type: string
          example: >-
            [0401-1102]: Unprocessable Entity. The property `property_name` is
            required
        transactionId:
          type: string
          example: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          type:
            - object
            - 'null'
    offer_chain_id:
      type: integer
      example: 9
      description: 고유한 혜택 체인 ID입니다.
    offer_chain_interval_type_weekly:
      type: string
      description: 혜택 체인의 재설정 빈도입니다.
      enum:
        - weekly
    offer_chain_day_of_week:
      type: integer
      description: 혜택 체인이 재설정되는 요일입니다. 여기서 `1`은 월요일, `7`은 일요일입니다.
      minimum: 1
      maximum: 7
    offer_chain_time:
      type: string
      description: >-
        혜택 체인이 지정된 시간대에서 재설정되는 시간(시간 단위로 반올림)입니다. <br><br> 예를 들어 쿠알라룸푸르
        시간대(GMT+8)의 경우 재설정 시간이 01:00로 설정되어 있다면 `time` 매개 변수의 값은
        `01:00:00+08:00`이 됩니다.
      pattern: ((0[0-9]|1[0-9]|2[0-3]):00:00)(\+|-)(0[0-9]|1[0-9]|2[0-3]):([0-5][0-9])
      example: 01:00:00+08:00
    offer_chain_displayable_reset_start_date:
      description: >-
        혜택 체인의 첫 번째 재설정 날짜 및 시간입니다. <br><br> 예를 들어 2024년 3월 1일 01:00(쿠알라룸푸르
        시간)으로 예정된 첫 번째 재설정은 <a href="https://en.wikipedia.org/wiki/ISO_8601"
        target="_blank">ISO 8601</a> 형식으로 `2024-03-01T01:00:00+08:00`에 해당합니다.
        <br><br> 예시: `2024-03-01T01:00:00+08:00`
      type: string
      format: date-time
    offer_chain_displayable_reset_next_date:
      description: >-
        <a href="https://en.wikipedia.org/wiki/ISO_8601" target="_blank">ISO
        8601</a> 형식으로 표시한 혜택 체인이 다음에 재설정되는 날짜와 시간입니다.<br><br> 예를 들어, 월간 혜택 체인
        재설정은 2024년 3월 1일 01:00(쿠알라룸푸르 시간)에 시작됩니다. 다음 재설정은 2024년 4월 1일
        01:00(쿠알라룸푸르 시간)에 진행하며, 이는 <a
        href="https://en.wikipedia.org/wiki/ISO_8601" target="_blank">ISO
        8601</a> 형식으로 `2024-04-01T01:00:00+08:00`에 해당합니다.<br><br> 예시:
        `2024-04-01T01:00:00+08:00`
      type: string
      format: date-time
    offer_chain_interval_type_monthly:
      type: string
      description: 혜택 체인의 재설정 빈도입니다.
      enum:
        - monthly
    offer_chain_day_of_month:
      type: integer
      description: 혜택 체인이 재설정되는 월의 날짜입니다. 한 달의 일수가 지정된 날짜보다 이전인 경우 해당 월의 마지막 날에 재설정됩니다.
      minimum: 1
      maximum: 31
    offer_chain_interval_type_hourly:
      type: string
      description: 혜택 체인의 재설정 빈도입니다.
      enum:
        - hourly
    offer_chain_hours_interval:
      type: integer
      description: >-
        오퍼 체인이 재설정되는 시간 간격(시간). <br><br> 카운트다운은 <a
        href="https://developers.xsolla.com/ko/api/shop-builder/operation/admin-create-offer-chain/#!path=date_start&t=request">date_start</a>
        매개 변수에서 시작됩니다. <br><br> 예를 들어, `date_start =
        "2025-11-15T18:15:00+05:00"`이고 `hours_interval = 2`인 경우, 오퍼 체인은
        `"2025-11-15T20:15:00+05:00"`부터 2시간마다 재설정됩니다.
      minimum: 1
      maximum: 10000
    offer_chain_recurrent_schedule:
      type:
        - object
        - 'null'
      description: 혜택 체인의 반복 재설정 기간입니다.
      oneOf:
        - type:
            - object
            - 'null'
          title: interval_type = 주간
          description: 혜택 체인의 주간 재설정입니다.
          properties:
            interval_type:
              $ref: '#/components/schemas/offer_chain_interval_type_weekly'
            day_of_week:
              $ref: '#/components/schemas/offer_chain_day_of_week'
            time:
              $ref: '#/components/schemas/offer_chain_time'
            reset_next_date:
              $ref: '#/components/schemas/offer_chain_reset_next_date'
            displayable_reset_start_date:
              $ref: '#/components/schemas/offer_chain_displayable_reset_start_date'
            displayable_reset_next_date:
              $ref: '#/components/schemas/offer_chain_displayable_reset_next_date'
        - type: object
          title: interval_type = 월간
          description: 혜택 체인의 월간 재설정입니다.
          properties:
            interval_type:
              $ref: '#/components/schemas/offer_chain_interval_type_monthly'
            day_of_month:
              $ref: '#/components/schemas/offer_chain_day_of_month'
            time:
              $ref: '#/components/schemas/offer_chain_time'
            reset_next_date:
              $ref: '#/components/schemas/offer_chain_reset_next_date'
            displayable_reset_start_date:
              $ref: '#/components/schemas/offer_chain_displayable_reset_start_date'
            displayable_reset_next_date:
              $ref: '#/components/schemas/offer_chain_displayable_reset_next_date'
        - type: object
          title: interval_type = 시간
          description: 혜택 체인이 지정된 시간 간격(시간 단위)으로 재설정됩니다.
          properties:
            interval_type:
              $ref: '#/components/schemas/offer_chain_interval_type_hourly'
            hours_interval:
              $ref: '#/components/schemas/offer_chain_hours_interval'
    admin-offer-chain-short-model:
      type: object
      description: 혜택 체인입니다.
      properties:
        id:
          $ref: '#/components/schemas/offer_chain_id'
        name:
          $ref: '#/components/schemas/name-localization-object'
        order:
          $ref: '#/components/schemas/order'
        description:
          $ref: '#/components/schemas/description-localization-object'
        date_start:
          $ref: '#/components/schemas/offer_chain_date_start'
        date_end:
          $ref: '#/components/schemas/offer_chain_date_end'
        is_enabled:
          $ref: '#/components/schemas/is_enabled'
        recurrent_schedule:
          $ref: '#/components/schemas/offer_chain_recurrent_schedule'
        is_always_visible:
          $ref: '#/components/schemas/chain_is_always_visible'
        attribute_conditions:
          $ref: '#/components/schemas/chain_user-attribute_conditions_model-get'
    offer_chain_recurrent_schedule_create_update:
      type:
        - object
        - 'null'
      description: 혜택 체인의 재설정 기간입니다.
      oneOf:
        - type:
            - object
            - 'null'
          title: interval_type = 주간
          description: 혜택 체인의 주간 재설정입니다.
          properties:
            interval_type:
              $ref: '#/components/schemas/offer_chain_interval_type_weekly'
            day_of_week:
              $ref: '#/components/schemas/offer_chain_day_of_week'
            time:
              $ref: '#/components/schemas/offer_chain_time'
          required:
            - interval_type
            - time
            - day_of_week
        - type: object
          title: interval_type = 월간
          description: 혜택 체인의 월간 재설정입니다.
          properties:
            interval_type:
              $ref: '#/components/schemas/offer_chain_interval_type_monthly'
            day_of_month:
              $ref: '#/components/schemas/offer_chain_day_of_month'
            time:
              $ref: '#/components/schemas/offer_chain_time'
          required:
            - interval_type
            - time
            - day_of_month
        - type: object
          title: interval_type = 시간
          description: 혜택 체인이 지정된 시간 간격(시간 단위)으로 재설정됩니다.
          properties:
            interval_type:
              $ref: '#/components/schemas/offer_chain_interval_type_hourly'
            hours_interval:
              $ref: '#/components/schemas/offer_chain_hours_interval'
          required:
            - interval_type
            - hours_interval
    modify-offer-chain-item-model:
      type: object
      properties:
        sku:
          $ref: '#/components/schemas/sku'
        quantity:
          type: integer
          description: 이 체인 단계에 대한 리워드 아이템의 수량입니다.
          minimum: 1
        order:
          description: 혜택 체인 단계에 대한 리워드 주문입니다.
          type:
            - integer
            - 'null'
          minimum: 0
      required:
        - sku
        - quantity
    create-offer-chain-step-model:
      type: object
      properties:
        step_number:
          $ref: '#/components/schemas/offer_chain_step_number'
        is_free:
          $ref: '#/components/schemas/offer_chain_is_free'
        items:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/modify-offer-chain-item-model'
      required:
        - step_number
        - is_free
        - items
    create-offer-chain-model:
      type: object
      description: 혜택 체인입니다.
      properties:
        name:
          $ref: '#/components/schemas/name-localization-object'
        order:
          $ref: '#/components/schemas/order'
        description:
          $ref: '#/components/schemas/description-localization-object'
        date_start:
          $ref: '#/components/schemas/offer_chain_date_start'
        date_end:
          $ref: '#/components/schemas/offer_chain_date_end'
        is_enabled:
          $ref: '#/components/schemas/is_enabled'
        recurrent_schedule:
          $ref: '#/components/schemas/offer_chain_recurrent_schedule_create_update'
        steps:
          type: array
          items:
            $ref: '#/components/schemas/create-offer-chain-step-model'
        is_always_visible:
          $ref: '#/components/schemas/chain_is_always_visible'
        attribute_conditions:
          $ref: '#/components/schemas/chain_user-attribute_conditions_model-post'
      required:
        - name
        - date_start
        - steps
        - is_enabled
    offer_chain_step_id:
      type:
        - integer
        - 'null'
      example: 10
      description: 체인 단계의 고유 ID입니다.
      minimum: 1
    admin-offer-chain-item-model:
      type: object
      properties:
        item_id:
          $ref: '#/components/schemas/item_id'
        sku:
          $ref: '#/components/schemas/sku'
        type:
          $ref: '#/components/schemas/item_type'
        name:
          $ref: '#/components/schemas/name-localization-object'
        description:
          $ref: '#/components/schemas/description-localization-object'
        image_url:
          $ref: '#/components/schemas/image_url'
        is_free:
          $ref: '#/components/schemas/value-is_free'
        quantity:
          type: integer
          description: 아이템의 개수입니다.
          minimum: 1
          example: 1
        order:
          $ref: '#/components/schemas/order'
    admin-offer-chain-step-model:
      type: object
      description: 혜택 체인의 단계입니다.
      properties:
        step_id:
          $ref: '#/components/schemas/offer_chain_step_id'
        step_number:
          $ref: '#/components/schemas/offer_chain_step_number'
        is_free:
          $ref: '#/components/schemas/offer_chain_is_free'
        step_price:
          $ref: '#/components/schemas/offer_chain_step_price'
        items:
          type: array
          items:
            $ref: '#/components/schemas/admin-offer-chain-item-model'
    admin-offer-chain-long-model:
      type: object
      description: 혜택 체인입니다.
      properties:
        id:
          $ref: '#/components/schemas/offer_chain_id'
        name:
          $ref: '#/components/schemas/name-localization-object'
        order:
          $ref: '#/components/schemas/order'
        description:
          $ref: '#/components/schemas/description-localization-object'
        date_start:
          $ref: '#/components/schemas/offer_chain_date_start'
        date_end:
          $ref: '#/components/schemas/offer_chain_date_end'
        is_enabled:
          $ref: '#/components/schemas/is_enabled'
        recurrent_schedule:
          $ref: '#/components/schemas/offer_chain_recurrent_schedule'
        steps:
          type: array
          items:
            $ref: '#/components/schemas/admin-offer-chain-step-model'
        is_always_visible:
          $ref: '#/components/schemas/chain_is_always_visible'
        attribute_conditions:
          $ref: '#/components/schemas/chain_user-attribute_conditions_model-get'
    update_step_id:
      type:
        - integer
        - 'null'
      example: 10
      description: 고유한 체인 단계 ID입니다. 이 단계에 대한 사용자 진행 상황을 유지하려면 업데이트 중에 지정합니다.
      minimum: 1
    modify-offer-chain-step-model:
      type: object
      properties:
        step_id:
          $ref: '#/components/schemas/update_step_id'
        step_number:
          $ref: '#/components/schemas/offer_chain_step_number'
        is_free:
          $ref: '#/components/schemas/offer_chain_is_free'
        items:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/modify-offer-chain-item-model'
      required:
        - step_number
        - is_free
        - items
    modify-offer-chain-model:
      type: object
      description: 혜택 체인입니다.
      properties:
        id:
          $ref: '#/components/schemas/offer_chain_id'
        name:
          $ref: '#/components/schemas/name-localization-object'
        order:
          $ref: '#/components/schemas/order'
        description:
          $ref: '#/components/schemas/description-localization-object'
        date_start:
          $ref: '#/components/schemas/offer_chain_date_start'
        date_end:
          $ref: '#/components/schemas/offer_chain_date_end'
        is_enabled:
          $ref: '#/components/schemas/is_enabled'
        recurrent_schedule:
          $ref: '#/components/schemas/offer_chain_recurrent_schedule_create_update'
        steps:
          type: array
          items:
            $ref: '#/components/schemas/modify-offer-chain-step-model'
        is_always_visible:
          $ref: '#/components/schemas/chain_is_always_visible'
        attribute_conditions:
          $ref: '#/components/schemas/chain_user-attribute_conditions_model-post'
      required:
        - name
        - date_start
        - steps
        - is_enabled
    bundle_type:
      type: string
      description: 번들 유형입니다. 아이템 유형이 번들인 경우 반환됩니다.
      enum:
        - standard
        - virtual_currency_package
        - partner_side_content
    unit_type:
      type: string
      example: game
      description: '유닛의 유형: `game`.'
    drm_name:
      type: string
      example: Steam
      description: 게임 키 DRM 이름입니다.
    drm_sku:
      type: string
      example: steam
      description: DRM 고유 ID입니다.
    Upsell-model:
      type: object
      description: 업셀링 유형입니다.
      properties:
        type:
          type: string
          enum:
            - fixed_list
          example: true
        is_enabled:
          $ref: '#/components/schemas/is_enabled'
        items:
          type: array
          example:
            - game_sku
          default: null
          description: 아이템 SKU의 배열입니다.
          items:
            type: string
      required:
        - is_enabled
        - type
        - items
    Upsell-model-not-fixed-list:
      type: object
      description: 업셀링 유형입니다.
      properties:
        type:
          type: string
          enum:
            - most_sellable
            - only_promotions
          example: true
        is_enabled:
          $ref: '#/components/schemas/is_enabled'
        items:
          type: array
          example:
            - null
          default: null
          description: 아이템 SKU의 빈 배열.
          items:
            type: string
      required:
        - is_enabled
        - type
    Upsell-422-invalid-request:
      type: object
      properties:
        statusCode:
          type: integer
          example: 422
        errorCode:
          type: integer
          example: 1102
        errorMessage:
          type: string
          example: >-
            [0401-1102]: Unprocessable entity. The property `is_enabled` is
            required
        transactionId:
          type: string
          example: x-x-x-x-transactionId-mock-x-x-x
    Virtual-Items-Currency_admin-groups-response:
      type: array
      example:
        - external_id: horror
          name:
            en: Horror
      default: []
      description: 아이템이 속한 그룹입니다.
      items:
        type: object
        properties:
          external_id:
            type: string
            example: horror
          name:
            type: object
            description: |-
              아이템의 이름입니다. 키가 "^[a-z]{2}" 형식의 로케일인
              키/값 쌍을 포함해야 하며 값은 문자열입니다.
            example:
              en: Horror
              de: Horror
            default:
              en: Horror
            additionalProperties:
              type: string
    Virtual-Items-Currency_client-attributes:
      type: array
      description: 아이템에 해당하는 특성 및 해당 값의 목록입니다. 카탈로그 필터링에 사용할 수 있습니다.
      example:
        value:
          external_id: genre
          name: Жанр
          values:
            - external_id: genre_e3364991f92e751689a68b96598a5a5a84010b85
              value: Casual
            - external_id: genre_eba07bfd0f982940773cba3744d97264dd58acd7
              value: Strategy
            - external_id: genre_b8d0c6d8f0524c2b2d79ebb93aa3cd0e8b5199a8
              value: Mobile
      default: []
      items:
        type: object
        properties:
          external_id:
            $ref: '#/components/schemas/admin-attribute-external_id'
          name:
            type: object
            description: 특성의 이름입니다.
            example: Genre
            additionalProperties:
              type:
                - string
                - 'null'
          values:
            type: array
            items:
              type: object
              properties:
                external_id:
                  $ref: '#/components/schemas/value-external_id'
                value:
                  type: string
                  description: 특성의 값입니다.
                  example: Strategy
    client_virtual_prices_response:
      type: array
      description: 가상 가격입니다.
      items:
        type: object
        description: 가상 가격입니다.
        properties:
          amount:
            type: integer
            example: 100
            description: 인게임 재화로 표시된 아이템 가격입니다.
          amount_without_discount:
            type: integer
            example: 200
            description: >-
              할인 없이 인게임 재화로 표시된 아이템 가격입니다. 인게임 재화 가격에는 할인이 적용되지 않으므로 항상
              `amount`와 같습니다.
          sku:
            type: string
            example: vc_gold
            description: 인게임 재화 SKU입니다.
          is_default:
            type: boolean
            example: true
            description: 인게임 재화의 기본 가격인지 여부입니다.
          image_url:
            type:
              - string
              - 'null'
            example: http://image.png
            description: 인게임 재화의 이미지 URL입니다.
          name:
            type: string
            example: Gold
            description: 인게임 재화의 이름입니다.
          type:
            type: string
            example: virtual_currency
            description: 아이템 유형. 인게임 재화의 경우 `virtual_currency`입니다.
          description:
            type:
              - string
              - 'null'
            example: In-game currency used to purchase weapons and upgrades
            description: 인게임 재화 설명입니다.
    item-periods-response:
      type: array
      description: 아이템 판매 기간입니다.
      items:
        type: object
        properties:
          date_from:
            type:
              - string
              - 'null'
            format: date-time
            example: '2020-08-11T10:00:00+03:00'
            description: 지정된 아이템을 판매할 수 있는 날짜입니다.
          date_until:
            type:
              - string
              - 'null'
            format: date-time
            example: '2020-08-11T20:00:00+03:00'
            description: 지정된 아이템을 판매할 수 없게 되는 날짜입니다. `null`일 수 있습니다.
    item-custom-attributes-response:
      type: object
      description: 아이템 특성 및 값이 포함된 JSON 개체입니다.
      format: json
    Upsell_item:
      type: object
      properties:
        sku:
          type: string
          example: big_rocket
          description: 고유 아이템 ID입니다. SKU는 소문자 및 대문자 라틴 영숫자, 마침표, 대시 및 밑줄만 포함할 수 있습니다.
        name:
          type: string
          example: Big Rocket
          description: 아이템 이름입니다.
        groups:
          $ref: '#/components/schemas/Virtual-Items-Currency_admin-groups-response'
        attributes:
          $ref: '#/components/schemas/Virtual-Items-Currency_client-attributes'
        type:
          type: string
          example: virtual_good
          description: '아이템 유형: `virtual_good`/`virtual_currency`/`bundle`.'
        description:
          type: string
          example: Big Rocket - description
          description: 아이템 설명입니다.
        image_url:
          type: string
          example: >-
            https://popmedia.blob.core.windows.net/popyourself/male/outfit/male_armor_white_a-01.png
          description: 이미지 URL입니다.
        is_free:
          $ref: '#/components/schemas/value-is_free'
        price:
          type:
            - object
            - 'null'
          description: 아이템 가격입니다.
          properties:
            amount:
              type: string
              example: '100.99'
              description: 할인된 아이템 가격입니다.
            amount_without_discount:
              type: string
              example: '100.99'
              description: 아이템 가격입니다.
            currency:
              type: string
              example: USD
              description: >-
                아이템 가격 통화입니다. [ISO
                4217](https://en.wikipedia.org/wiki/ISO_4217)에 따른 3자리 코드입니다.
        virtual_prices:
          $ref: '#/components/schemas/client_virtual_prices_response'
        can_be_bought:
          $ref: '#/components/schemas/Can_be_bought'
        virtual_item_type:
          type: string
          example: non-consumable
          description: >-
            가상 아이템의 유형입니다.


            사용 가능한 값: - `consumable` - 사용 후 인벤토리에서 사라지는 아이템(예: 탄약). -
            `non_consumable` - 인벤토리에 무기한으로 남아 있는 아이템. -
            `non_renewing_subscription` - 일정 기간 동안 서비스나 콘텐츠에 대한 이용 권한을 나타낼 수 있는
            기간 한정 아이템.
          enum:
            - consumable
            - non_consumable
            - non_renewing_subscription
        promotions:
          $ref: '#/components/schemas/Catalog_item_promotions'
        limits:
          $ref: '#/components/schemas/Catalog_item_limits'
        periods:
          $ref: '#/components/schemas/item-periods-response'
        custom_attributes:
          $ref: '#/components/schemas/item-custom-attributes-response'
        vp_rewards:
          $ref: '#/components/schemas/client-item-value-point-reward'
    Upsell_item-list:
      type: object
      properties:
        has_more:
          $ref: '#/components/schemas/Pagination_has-more'
        items:
          type: array
          items:
            $ref: '#/components/schemas/Upsell_item'
    error-response-base:
      type: object
      properties:
        statusCode:
          type: integer
          description: HTTP 응답 상태.
        errorCode:
          type: integer
          description: 오류 코드.
        errorMessage:
          type: string
          description: 간단한 오류 설명.
        transactionId:
          type: string
          description: >-
            요청 ID. 이 특정 요청 또는 작업과 관련된 로그 엔트리를 추적하고 연결하는 데 사용되는 ID입니다. 이 ID는 문제
            해결, 디버깅 및 감사 목적으로 유용하게 활용될 수 있습니다.
  examples:
    Promotions_200-admin-promotions:
      value:
        promotions:
          - id: 1
            promotion_periods:
              - date_from: '2020-01-01T00:00:00+03:00'
                date_until: null
            name:
              en: promotion_1
            type: item_bonus
            is_enabled: true
            bonus:
              - item:
                  description: null
                  image_url: null
                  sku: com.xsolla.diamonds_pack_1
                  name:
                    en: Diamonds pack
                    ru: Пак кристаллов
                  type: bundle
                  bundle_type: virtual_currency_package
                  content: []
                quantity: 1
            condition:
              - item:
                  description: null
                  image_url: null
                  sku: com.xsolla.virtual_good_bonus_2
                  name:
                    en: VG name
                    ru: Название VG
                  type: virtual_good
            discount: null
          - id: 2
            promotion_periods:
              - date_from: '2020-01-01T00:00:00+03:00'
                date_until: '2030-01-01T00:00:00+03:00'
            name:
              en: promotion_2
            type: item_discount
            is_enabled: false
            bonus: []
            condition:
              - item:
                  description: null
                  image_url: null
                  sku: com.xsolla.virtual_good_bonus_2
                  name:
                    en: VG name
                    ru: Название VG
                  type: virtual_good
            discount:
              percent: '10.99'
          - id: 3
            promotion_periods:
              - date_from: '2020-01-01T00:00:00+03:00'
                date_until: '2030-01-01T00:00:00+03:00'
            name:
              en: promotion_3
            type: coupon_bonus
            is_enabled: true
            bonus:
              - item:
                  description: null
                  image_url: null
                  sku: com.xsolla.virtual_good_bonus_2
                  name:
                    en: VG name
                    ru: Название VG
                  type: virtual_good
                quantity: 2
            condition:
              - item:
                  external_id: coupon_2
                  name:
                    en: Coupon name
                    ru: Название купона
                  is_enabled: true
                  redeem_total_limit: null
                  redeem_user_limit: null
                  redeem_code_limit: 1
            discount: null
          - id: 4
            promotion_periods:
              - date_from: '2018-01-01T00:00:00+03:00'
                date_until: '2031-01-01T00:00:00+03:00'
            name:
              en: promotion_4
            type: promocode_bonus_discount
            is_enabled: false
            bonus:
              - item:
                  description: null
                  image_url: null
                  sku: com.xsolla.virtual_good_bonus_2
                  name:
                    en: VG name
                    ru: Название VG
                  type: virtual_good
                quantity: 2
            condition:
              - item:
                  external_id: coupon_3
                  name:
                    en: Coupon name
                    ru: Название купона
                  is_enabled: true
                  redeem_total_limit: null
                  redeem_user_limit: null
                  redeem_code_limit: 1
            discount:
              percent: '12.99'
          - id: 5
            promotion_periods:
              - date_from: '2020-01-01T00:00:00+03:00'
                date_until: null
            name:
              en: promotion_5
            type: cart_bonus
            is_enabled: true
            bonus:
              - item:
                  description: null
                  image_url: null
                  sku: com.xsolla.virtual_good_bonus_4
                  name:
                    en: VG name
                    ru: Название VG
                  type: virtual_good
                quantity: 1
            condition: null
            discount: null
        total_promotions_count: 5
        active_promotions_count: 3
        inactive_promotions_count: 2
    422-activate-deactivate-promotion:
      value:
        statusCode: 422
        errorCode: 9505
        errorMessage: '[0401-9505]: Error was occurred while promotion was being updated'
        transactionId: da145238620011eb8e24fe6913ff226a
    Promotions_200-get-coupon-rewards:
      value:
        bonus:
          - item:
              sku: com.xsolla.game_1
              name:
                en: Game name
              type: unit
              description: Game description
              image_url: >-
                https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png
              unit_items:
                - sku: com.xsolla.game_key_01
                  name: Game name
                  type: game_key
                  is_free: false
                  drm_name: Steam
                  drm_sku: steam_key_01
                - sku: game_key_02
                  name: Game name
                  type: game_key
                  drm_name: Origin
                  drm_sku: origin_key_02
            quantity: 1
          - item:
              sku: com.xsolla.game_2
              name:
                en: Game name
              type: unit
              description: Game description
              image_url: >-
                https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png
              unit_items:
                - sku: com.xsolla.game_key_01
                  type: game_key
                  name: Game name
                  drm_name: Steam
                  drm_sku: steam_key_01
            quantity: 2
        discount:
          percent: '10.00'
        is_selectable: true
    Promotions_200-admin-coupons:
      value:
        items:
          - external_id: coupon_44056_1
            promotion_periods:
              - date_from: '2020-04-15T18:16:00+05:00'
                date_until: '2020-04-25T18:16:00+05:00'
              - date_from: '2020-05-15T18:16:00+05:00'
                date_until: '2020-05-25T18:16:00+05:00'
            name:
              en-US: New Year Bonus
              de-DE: Neujahrsbonus
            is_enabled: true
            bonus:
              - sku: com.xsolla.elven_sword_1
                quantity: 1
              - sku: com.xsolla.elven_shield_1
                quantity: 2
              - sku: com.xsolla.elven_gloves_1
                quantity: 2
            redeem_user_limit: null
            redeem_total_limit: null
            redeem_code_limit: 1
            total_limit_state: null
          - external_id: summer2021
            promotion_periods:
              - date_from: '2020-04-15T18:16:00+05:00'
                date_until: '2020-04-25T18:16:00+05:00'
            name:
              en-US: Coupon name
              de-DE: Gutscheintitel
            is_enabled: true
            bonus:
              - sku: com.xsolla.diamonds_1
                quantity: 100
            redeem_user_limit: null
            redeem_total_limit: 100
            redeem_code_limit: 1
            total_limit_state:
              available: 50
              reserved: 10
              used: 40
        total_promotions_count: 2
        active_promotions_count: 2
        inactive_promotions_count: 0
    Promotions_200-coupon-code-list:
      value:
        codes:
          - code: CODE001
          - code: CODE002
          - code: CODE003
          - code: CODE004
          - code: CODE005
        total_count: 5
    Promotions_200-get-promocode-rewards:
      value:
        bonus:
          - item:
              sku: com.xsolla.game_1
              name: Game name
              type: unit
              description: Game description
              image_url: >-
                https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png
              unit_items:
                - sku: com.xsolla.game_key_01
                  name: Game name
                  type: game_key
                  is_free: false
                  drm_name: Steam
                  drm_sku: steam_key_01
                - sku: com.xsolla.game_key_02
                  name: Game name
                  type: game_key
                  drm_name: Origin
                  drm_sku: origin_key_02
            quantity: 1
          - item:
              sku: com.xsolla.game_2
              name: Game name
              type: unit
              description: Game description
              image_url: >-
                https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png
              unit_items:
                - sku: com.xsolla.game_key_01
                  type: game_key
                  name: Game name
                  drm_name: Steam
                  drm_sku: steam_key_01
            quantity: 2
        discount:
          percent: '10.00'
        is_selectable: true
        discounted_items:
          - sku: com.xsolla.elven_sword_1
            discount:
              percent: '10.00'
    Promotions_200-admin-promocodes:
      value:
        items:
          - external_id: promocode_100_crystals
            promotion_periods:
              - date_from: '2020-04-15T18:16:00+05:00'
                date_until: '2020-04-25T18:16:00+05:00'
            name:
              en-US: New Year Bonus
              de-DE: Neujahrsbonus
            is_enabled: true
            bonus:
              - sku: com.xsolla.elven_sword_1
                quantity: 1
              - sku: com.xsolla.elven_shield_1
                quantity: 2
              - sku: com.xsolla.elven_gloves_1
                quantity: 2
            redeem_user_limit: null
            redeem_total_limit: null
            redeem_code_limit: 1
            total_limit_state: null
            discount: null
            discounted_items: null
          - external_id: summer2021
            promotion_periods:
              - date_from: '2020-04-15T18:16:00+05:00'
                date_until: '2020-04-25T18:16:00+05:00'
            name:
              en-US: Coupon name
              de-DE: Gutscheintitel
            is_enabled: true
            bonus:
              - sku: com.xsolla.diamonds_1
                quantity: 100
            redeem_user_limit: null
            redeem_total_limit: 100
            redeem_code_limit: null
            total_limit_state:
              available: 50
              reserved: 10
              used: 40
            discount:
              percent: '10.99'
            discounted_items:
              - sku: com.xsolla.elven_sword_1
                discount:
                  percent: '10.00'
            price_conditions:
              - operator: ge
                value: '10.0000'
              - operator: le
                value: '50.0000'
            excluded_promotions:
              - 23
              - 45
        total_promotions_count: 2
        active_promotions_count: 2
        inactive_promotions_count: 0
    Promotions_200-admin-unique-catalog-offers:
      value:
        items:
          - external_id: new_year_bonus
            promotion_periods:
              - date_from: '2020-04-15T18:16:00+05:00'
                date_until: '2020-04-25T18:16:00+05:00'
              - date_from: '2020-05-15T18:16:00+05:00'
                date_until: '2020-05-25T18:16:00+05:00'
            name:
              en-US: New Year Bonus
              de-DE: Neujahrsbonus
            items:
              - booster
              - booster_mega
            is_enabled: true
            redeem_user_limit: 1
            redeem_total_limit: null
            redeem_code_limit: 1
            total_limit_state: null
          - external_id: secret_store
            promotion_periods:
              - date_from: '2020-04-15T18:16:00+05:00'
                date_until: null
            name:
              en-US: Secret store
              ru-RU: Тайный магазин
            items:
              - helmet
              - armor
              - sword
            is_enabled: true
            redeem_user_limit: 1
            redeem_total_limit: 100
            redeem_code_limit: 1
            total_limit_state:
              available: 50
              reserved: 10
              used: 40
        total_promotions_count: 2
        active_promotions_count: 2
        inactive_promotions_count: 0
    404-coupon-not-found:
      value:
        statusCode: 404
        errorCode: 9802
        errorMessage: '[0401-9802]: Coupon not found'
        transactionId: x-x-x-x-transactionId-mock-x-x-x
    404-user-not-found:
      value:
        statusCode: 404
        errorCode: 5008
        errorMessage: '[0401-5008]: Could not find User'
        transactionId: transaction id
    Promotions_422-invalid-coupon:
      value:
        statusCode: 422
        errorCode: 1102
        errorMessage: >-
          [0401-1102]: Unprocessable Entity. The property `external_id` is
          required
    code-limit:
      value:
        promotion_id: 1
        items:
          - code: WINTER2023
            per_code:
              total: 10
              available: 7
              used: 2
              reserved: 1
          - code: SUMMER2023
            per_code:
              total: 5
              available: 0
              used: 3
              reserved: 2
        total_items_count: 2
        has_more: false
    401-complex-auth-header-not-found:
      value:
        statusCode: 401
        errorCode: 1501
        errorMessage: '[0401-1501]: Authorization failed: Authorization header not sent'
        transactionId: x-x-x-x-transactionId-mock-x-x-x
    401-complex-auth-incorrect-credentials:
      value:
        statusCode: 401
        errorCode: 1013
        errorMessage: '[0401-1013]: Token not found.'
        transactionId: x-x-x-x-transactionId-mock-x-x-x
    422-user_external_id_invalid:
      value:
        statusCode: 404
        errorCode: 1102
        errorMessage: '[0401-1102]: Unprocessable Entity'
        transactionId: transaction id
        errorMessageExtended:
          - property: user_external_id
            message: Must be at least 1 characters long
          - property: user_external_id
            message: Does not match the regex pattern ^\S+$
    404-promotion-by-id-not-found:
      value:
        statusCode: 404
        errorCode: 1101
        errorMessage: '[0401-1101]: Promotion not found'
        transactionId: transaction id
    422-promotion-without-user-limit:
      value:
        statusCode: 422
        errorCode: 4509
        errorMessage: '[0401-4509]: Promotion does not have configured user limits.'
        transactionId: transaction id
    422-promotion-out-of-range-available-user-limit:
      value:
        statusCode: 422
        errorCode: 4511
        errorMessage: '[0401-4511]: Available promotion limit is out of range.'
        transactionId: transaction id
    200-value-points-reward-chain_admin_get-value-point-list:
      value:
        items:
          - sku: com.xsolla.reward_vp_1
            name:
              en: Reward VP 1
            type: value_point
            is_enabled: true
            description:
              en: Points for reward system
            long_description:
              en: Points given to users to get new rewards in a reward chain.
            image_url: >-
              https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
            media_list: []
            order: 1
            is_clan: false
          - sku: com.xsolla.reward_vp_2
            name:
              en: Reward VP 2
            type: value_point
            is_enabled: false
            description:
              en: Value points for reward system.
            long_description:
              en: >-
                Value points given to users to get new rewards in a reward
                chain.
            image_url: >-
              https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
            media_list: []
            order: 2
            is_clan: false
          - sku: com.xsolla.clan_value_point_1
            name:
              en: Clan Reward VP 1
            is_enabled: true
            description:
              en: Value points for clan reward system.
            long_description:
              en: >-
                Value points given to clans to get new rewards in a reward
                chain.
            image_url: >-
              https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
            media_list: []
            order: 3
            is_clan: true
    422-property-sku-is-required:
      value:
        statusCode: 422
        errorCode: 1102
        errorMessage: '[0401-1102]: Unprocessable Entity. The property `sku` is required'
        transactionId: da145238620011eb8e24fe6913ff226a
    200-value-points-reward-chain_admin_get-value-point:
      value:
        sku: com.xsolla.reward_vp_1
        name:
          en: Reward VP 1
        type: value_point
        is_enabled: true
        description:
          en: Points for reward system
        long_description:
          en: Points given to users to get new rewards in a reward chain.
        image_url: >-
          https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
        media_list: []
        order: 1
        is_clan: false
        can_delete: false
    200-value-points-rewards-list:
      value:
        items:
          - item_id: 14232
            sku: com.xsolla.booster_1
            name:
              en: Booster
            image_url: >-
              https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
            amount: 100
          - item_id: 14232
            sku: com.xsolla.booster_mega
            name:
              en: Mega Booster
            image_url: >-
              https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
            amount: 200
    200-client-get-reward-chains-list:
      value:
        has_more: false
        total_items_count: 1
        items:
          - reward_chain_id: 10
            name: Weekly quest
            description: Big weekly quest
            long_description: >-
              You can get a lot of additional items just by shopping during the
              week
            image_url: >-
              https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
            order: 1
            date_start: '2023-04-15T18:16:00+05:00'
            date_end: '2023-04-25T18:16:00+05:00'
            value_point:
              sku: com.xsolla.value_point_1
              name: Value point
              image_url: >-
                https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
              description: null
              long_description: null
              amount: 130
            clan_type: null
            top_contributors: []
            steps:
              - step_id: 1
                name: Level 1
                is_claimed: true
                image_url: >-
                  https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                price:
                  amount: 100
                reward:
                  - sku: com.xsolla.box_1
                    name: Super box
                    type: bundle
                    description: Super box with items
                    image_url: >-
                      https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                    quantity: 1
                  - sku: com.xsolla.box_2
                    name: Mega box
                    type: bundle
                    description: Mega box with items
                    image_url: >-
                      https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                    quantity: 1
              - step_id: 2
                name: Level 2
                is_claimed: false
                image_url: >-
                  https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                price:
                  amount: 200
                reward:
                  - sku: com.xsolla.box_1
                    name: Super box
                    type: bundle
                    description: Super box with items
                    image_url: >-
                      https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                    quantity: 2
                  - sku: com.xsolla.box_2
                    name: Mega box
                    type: bundle
                    description: Mega box with items
                    image_url: >-
                      https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                    quantity: 2
            recurrent_schedule:
              interval_type: weekly
              reset_next_date: 1746057600
            popup_header: null
            popup_instruction: null
            popup_image_url: null
          - reward_chain_id: 12
            name: Weekly clan quest
            description: Major weekly clan quest.
            long_description: >-
              You and your clan members can get additional items for shopping
              during a certain month.
            image_url: >-
              https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
            order: 2
            date_start: '2023-04-15T18:16:00+05:00'
            date_end: '2023-10-15T18:16:00+05:00'
            value_point:
              sku: com.xsolla.clan_value_point_1
              name: Clan Reward VP 1
              image_url: >-
                https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
              description: Value points for clan reward system.
              long_description: >-
                Value points given to clans to get new rewards in a reward
                chain.
              amount: 80
            clan_type: guild
            top_contributors:
              - name: Rabbit
                contributed_amount: 100
              - name: Rocket
                contributed_amount: 80
              - name: Rain
                contributed_amount: 40
            steps:
              - step_id: 1
                name: Level 1
                is_claimed: true
                image_url: >-
                  https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                price:
                  amount: 100
                reward:
                  - sku: com.xsolla.box_1
                    name: Super box
                    type: bundle
                    description: Super box with items
                    image_url: >-
                      https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                    quantity: 1
                  - sku: com.xsolla.box_2
                    name: Mega box
                    type: bundle
                    description: Mega box with items
                    image_url: >-
                      https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                    quantity: 1
              - step_id: 2
                name: Level 2
                is_claimed: false
                image_url: >-
                  https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                price:
                  amount: 200
                reward:
                  - sku: com.xsolla.box_1
                    name: Super box
                    type: bundle
                    description: Super box with items
                    image_url: >-
                      https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                    quantity: 2
                  - sku: com.xsolla.box_2
                    name: Mega box
                    type: bundle
                    description: Mega box with items
                    image_url: >-
                      https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                    quantity: 2
            recurrent_schedule:
              interval_type: monthly
              reset_next_date: 1746057600
            popup_header:
              en: How to unlock rewards
            popup_instruction:
              en: >-
                You should be a clan member to get clan rewards. You join a clan
                when a clan member invited you to the clan, and you accepted the
                invite. You can create your own clan.
            popup_image_url: >-
              https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
    200-client-get-user-reward-chain-balance:
      summary: Reward chain example
      value:
        sku: com.xsolla.value_point_1
        name: Value point
        image_url: >-
          https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
        description: null
        long_description: null
        amount: 130
        is_clan: false
    200-client-get-user-clan-reward-chain-balance:
      summary: Clan reward chain example
      value:
        sku: com.xsolla.clan_value_point_1
        name: Clan Reward VP 1
        image_url: >-
          https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
        description: Value points for clan reward system.
        long_description: Value points given to clans to get new rewards in a reward chain.
        amount: 80
        is_clan: true
    200-client-update-user-clan:
      value:
        reward:
          - sku: com.xsolla.box_1
            name: Super box
            type: bundle
            description: Super box with items
            image_url: >-
              https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
            quantity: 1
            bundle_type: standard
          - sku: com.xsolla.potion_1
            name: Mega potion
            type: virtual_good
            description: Mega potion
            image_url: >-
              https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
            quantity: 1
    200-reward-chain-list:
      value:
        has_more: true
        items:
          - name:
              en: Reward chain
            reward_chain_id: 1
            description:
              en: Reward chain description
            long_description:
              en: Reward chain long description
            is_enabled: true
            image_url: >-
              https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
            order: 1
            periods:
              - date_from: '2026-01-01T01:00:00+05:00'
                date_until: '2026-01-31T23:59:59+05:00'
              - date_from: '2026-02-01T01:00:00+05:00'
                date_until: '2026-02-28T23:59:59+05:00'
            value_point:
              sku: com.xsolla.reward_vp_1
              name:
                en: Reward VP 1
              type: value_point
              is_enabled: true
              description: Value points for standard reward system.
              long_description: >-
                Value points given to users to get new rewards in a reward
                chain.
              image_url: >-
                https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
              media_list: []
              order: 1
              is_clan: false
            recurrent_schedule: null
            attribute_conditions:
              - attribute: race
                operator: eq
                value: ork
                type: string
                can_be_missing: false
            is_always_visible: true
            is_reset_after_end: true
          - name:
              en: Clan reward chain
            reward_chain_id: 2
            description:
              en: Clan reward chain description.
            long_description:
              en: Clan reward chain long description.
            is_enabled: true
            image_url: >-
              https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
            order: 1
            periods:
              - date_from: '2026-01-01T01:00:00+05:00'
                date_until: '2026-01-31T23:59:59+05:00'
              - date_from: '2026-02-01T01:00:00+05:00'
                date_until: '2026-02-28T23:59:59+05:00'
            value_point:
              sku: com.xsolla.clan_value_point_1
              name:
                en: Clan Reward VP 1
              is_enabled: true
              description: Value points for clan reward system.
              long_description: >-
                Value points given to clans to get new rewards in a reward
                chain.
              image_url: >-
                https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
              media_list: []
              order: 1
              is_clan: true
            recurrent_schedule:
              day_of_month: null
              day_of_week: 2
              displayable_reset_next_date: '2026-01-06T01:00:00+05:00'
              displayable_reset_start_date: '2026-01-01T01:00:00+05:00'
              interval_type: weekly
              reset_next_date: 1767643200
              time: 01:00:00+05:00
            popup_header:
              en: How to unlock rewards
            popup_instruction:
              en: >-
                You must be a clan member in order to get clan rewards. You join
                a clan when a clan member invites you to the clan, and you
                accept the invite. You can also create your own clan.
            popup_image_url: >-
              https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
            clan_type: guild
    200-reward-chain:
      summary: Reward chain example
      value:
        reward_chain_id: 1
        name:
          en: Reward chain
        description:
          en: Reward chain description
        long_description:
          en: Reward chain long description
        is_enabled: true
        image_url: >-
          https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
        order: 1
        periods:
          - date_from: '2026-01-01T01:00:00+05:00'
            date_until: '2026-01-31T23:59:59+05:00'
          - date_from: '2026-02-01T01:00:00+05:00'
            date_until: '2026-02-28T23:59:59+05:00'
        value_point:
          sku: com.xsolla.reward_vp_1
          name:
            en: Reward VP 1
          type: value_point
          is_enabled: true
          description:
            en: Value points for reward system.
          long_description:
            en: Value points given to users to get new rewards in a reward chain.
          image_url: >-
            https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
          media_list: []
          order: 1
          is_clan: false
        steps:
          - name:
              en: First step of the reward chain
            step_id: 1
            image_url: >-
              https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
            reward:
              - sku: com.xsolla.item_1
                quantity: 5
              - sku: com.xsolla.item_2
                quantity: 1
            price:
              amount: 10
          - name:
              en: Second step of the reward chain
            step_id: 2
            image_url: >-
              https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
            reward:
              - sku: com.xsolla.item_3
                quantity: 5
              - sku: com.xsolla.item_4
                quantity: 1
            price:
              amount: 15
        recurrent_schedule:
          day_of_week: 2
          displayable_reset_next_date: '2026-01-06T01:00:00+05:00'
          displayable_reset_start_date: '2026-01-01T01:00:00+05:00'
          interval_type: weekly
          reset_next_date: 1767643200
          time: 01:00:00+05:00
        attribute_conditions:
          - attribute: race
            operator: eq
            value: ork
            type: string
            can_be_missing: false
        is_always_visible: true
        is_reset_after_end: true
    200-clan-reward-chain:
      summary: Clan reward chain example
      value:
        reward_chain_id: 1
        name:
          en: Clan reward chain
        description:
          en: Clan reward chain description.
        long_description:
          en: Clan reward chain long description.
        is_enabled: true
        image_url: >-
          https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
        order: 1
        periods:
          - date_from: '2020-04-15T18:16:00+05:00'
            date_until: '2021-04-15T18:16:00+05:00'
        value_point:
          sku: com.xsolla.clan_value_point_1
          name:
            en: Clan Reward VP 1
          is_enabled: true
          description:
            en: Value points for clan reward system.
          long_description:
            en: >-
              Value points given to clans to get new rewards in a certain reward
              chain.
          image_url: >-
            https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
          media_list: []
          order: 1
          is_clan: true
        steps:
          - name:
              en: First step of the reward chain
            step_id: 1
            image_url: >-
              https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
            reward:
              - sku: com.xsolla.item_1
                quantity: 5
              - sku: com.xsolla.item_2
                quantity: 1
            price:
              amount: 10
          - name:
              en: Second step of the reward chain
            step_id: 2
            image_url: >-
              https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
            reward:
              - sku: com.xsolla.item_3
                quantity: 5
              - sku: com.xsolla.item_4
                quantity: 1
            price:
              amount: 15
        recurrent_schedule:
          day_of_week: 2
          displayable_reset_next_date: '2023-03-07T11:00:00+08:00'
          displayable_reset_start_date: '2023-02-28T11:00:00+08:00'
          interval_type: weekly
          reset_next_date: 1677553200
          time: 11:00:00+08:00
        popup_header:
          en: How to unlock rewards
        popup_instruction:
          en: >-
            You must be a clan member in order to get clan rewards. You join a
            clan when a clan member invites you to the clan, and you accept the
            invite. You can also create your own clan.
        popup_image_url: >-
          https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
        clan_type: guild
    200-admin-daily-chain-list:
      summary: Daily reward list example
      value:
        has_more: false
        total_items_count: 3
        items:
          - id: 1
            name:
              en: Daily reward
              ru: Ежедневная награда
            description:
              en: Daily reward short description
            order: 1
            number_of_steps: 10
            date_start: '2023-04-15T18:16:00+05:00'
            date_end: '2025-04-25T18:16:00+05:00'
            is_enabled: false
            is_recurrent: true
            type: calendar_hard
          - id: 2
            name:
              en: Monthly daily reward
              ru: Ежедневные награды в цепочке на месяц
            description:
              en: Monthly daily reward short description
            order: 2
            number_of_steps: 13
            date_start: '2025-04-15T00:00:00+08:00'
            date_end: '2025-04-28T15:00:00+08:00'
            is_enabled: false
            is_recurrent: true
            type: calendar_hard
          - id: 3
            name:
              en: Login reward
            description:
              en: Login reward short description
            order: 3
            number_of_steps: 7
            date_start: '2023-05-01T18:16:00+05:00'
            date_end: '2025-05-31T18:16:00+05:00'
            is_enabled: true
            is_recurrent: true
            type: rolling_skippable
          - id: 4
            name:
              en: Daily reward
              ru: Ежедневная награда
            description:
              en: Daily reward short description
            order: 4
            number_of_steps: 10
            date_start: '2023-04-15T18:16:00+05:00'
            date_end: '2025-04-25T18:16:00+05:00'
            is_enabled: true
            is_recurrent: true
            type: calendar_hard
          - id: 5
            name:
              en: Unskippable login reward
            description:
              en: Unskippable login reward short description
            order: 3
            number_of_steps: 7
            date_start: '2025-11-01T10:00:00+05:00'
            date_end: '2025-11-30T10:00:00+05:00'
            is_enabled: true
            is_recurrent: true
            type: rolling_unskippable
    422-admin-daily-chain-error-too-many-steps:
      summary: Too many steps
      description: >-
        Daily reward steps max amount limit of 30 items is exceeded. Try
        specifying less steps.
      value:
        statusCode: 422
        errorCode: 6203
        errorMessage: '[0401-6203]: Chain step count exceeds the allowed limit'
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          step_count: 31
          max_steps: 30
    422-admin-daily-chain-error-incorrect-steps-order:
      summary: Incorrect steps order
      description: >-
        Daily reward steps numbers sequence is incorrect. Correct step numbers
        should be sequential without any gaps or duplicates.
      value:
        statusCode: 422
        errorCode: 6210
        errorMessage: '[0401-6210]: Chain step numbers are invalid'
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          incorrect_step_numbers:
            duplicates:
              - 2
              - 7
            out_of_range:
              - 7
              - 8
            missing:
              - 3
              - 4
              - 5
              - 6
    422-admin-daily-chain-error-item-limit-exceeded:
      summary: Item limit exceeded
      description: >-
        Daily reward step item count exceeds the allowed limit for some steps.
        Currently only 1 item per step is allowed.
      value:
        statusCode: 422
        errorCode: 6208
        errorMessage: >-
          [0401-6208]: Chain step item count exceeds the allowed limit for some
          steps
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          max_items: 1
          steps_exceeded_limits:
            - step_number: 1
              items_count: 2
            - step_number: 4
              items_count: 3
    422-admin-daily-chain-error-incorrect-items:
      summary: Incorrect step items
      description: >-
        Specified items are not allowed, disabled or not found. Only enabled
        items of following types are allowed: virtual item, bundle, virtual
        currency package.
      value:
        statusCode: 422
        errorCode: 6211
        errorMessage: '[0401-6211]: Chain steps items are not allowed or not found'
        transactionId: x-x-xX-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          invalid_items:
            not_found:
              - vg_deleted_item_1
              - vg_deleted_item_2
              - not_existing_sku_404_1
              - not_existing_sku_404_2
            disabled:
              - vg_disabled_item_1
              - vg_disabled_item_2
              - vc_disabled_1
            invalid_item_type:
              allowed_item_type_list:
                - virtual_good
                - bundle
              sku_map:
                vc_enabled_shown_in_store_1: virtual_currency
                vc_disabled_1: virtual_currency
                unit_enabled_shown_in_store_1: unit
                gk_steam_enabled_shown_in_store_1: game_key
    422-admin-daily-chain-error-invalid-dates:
      summary: Invalid date format
      description: Please, ensure dates format is valid.
      value:
        statusCode: 422
        errorCode: 6204
        errorMessage: >-
          [0401-6204]: Period of a chain is invalid. Please, check the dates in
          your request
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          chain_id: 1
          invalid_format_dates:
            date_start: '2023-04-15 17:16:00Z'
            date_end: '2025-04-25 19:16:00Z'
    422-admin-daily-chain-error-incorrect-period:
      summary: Incorrect period of a daily reward
      description: Please ensure start date is earlier than end date.
      value:
        statusCode: 422
        errorCode: 6204
        errorMessage: >-
          [0401-6204]: Period of a chain is invalid. Please, check the dates in
          your request
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          chain_id: 1
          invalid_periods:
            - start: '2025-04-25T18:16:00+05:00'
              end: '2023-04-15T18:16:00+05:00'
    200-admin-daily-chain:
      summary: Daily reward example
      value:
        id: 3
        name:
          en: Daily reward
          ru: Ежедневная награда
        description:
          en: Daily reward short description
        date_start: '2023-04-15T18:16:00+05:00'
        date_end: '2025-04-25T18:16:00+05:00'
        order: 1
        is_recurrent: false
        number_of_steps: 3
        steps:
          - step_id: 7
            step_number: 1
            items:
              - item_id: 9010
                sku: telescope
                name:
                  en: Telescope
                  ru: Телескоп
                type: virtual_good
                description:
                  en: Allows to see the stars
                  ru: Позволяет увидеть звезды
                image_url: https://picture.bundle-picture.png
                quantity: 1
              - item_id: 9012
                sku: health_potion
                name:
                  en: Healing potion
                  ru: Зелье лечения
                type: virtual_good
                description:
                  en: Heal 10% of your health
                  ru: Лечит 10% здоровья
                image_url: https://picture.bundle-picture.png
                quantity: 2
          - step_id: 6
            step_number: 2
            items:
              - item_id: 9010
                sku: telescope
                name:
                  en: Telescope
                  ru: Телескоп
                type: virtual_good
                description:
                  en: Allows to see the stars
                  ru: Позволяет увидеть звезды
                image_url: https://picture.bundle-picture.png
                quantity: 5
          - step_id: 5
            step_number: 3
            items:
              - item_id: 9010
                sku: telescope
                name:
                  en: Telescope
                  ru: Телескоп
                type: virtual_good
                description:
                  en: Allows to see the stars
                  ru: Позволяет увидеть звезды
                image_url: https://picture.bundle-picture.png
                quantity: 2
        is_enabled: true
        type: calendar_hard
    404-daily-chain-not-found:
      summary: Daily reward is not found
      description: Daily reward was not found.
      value:
        statusCode: 404
        errorCode: 6201
        errorMessage: '[0401-6201]: Chain not found'
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          chain_id: 4
    422-admin-daily-chain-error-invalid-chain-step-ids:
      summary: Daily reward step IDs not found
      description: >-
        Some of step IDs was not found. Please, double check if specified daily
        reward step IDs actually exist.
      value:
        statusCode: 404
        errorCode: 6206
        errorMessage: '[0401-6206]: Chain step IDs not found'
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          chain_id: 1
          chain_step_id_list:
            - 404000
    422-admin-daily-chain-error-chain-id-mismatch:
      summary: Daily reward ID mismatch
      description: Daily reward ID specified in the body does not match the URL.
      value:
        statusCode: 422
        errorCode: 6205
        errorMessage: >-
          [0401-6205]: Chain ID mismatch. Please, check the chain ID in your
          request body and URL
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          url_chain_id: 1
          body_chain_id: 2
    422-admin-daily-chain-error-duplicate-step-ids:
      summary: Duplicate daily reward step IDs
      description: >-
        Please, ensure that daily reward step IDs are unique in the request
        body.
      value:
        statusCode: 422
        errorCode: 6207
        errorMessage: '[0401-6207]: Duplicate chain step IDs detected in the request body'
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          chain_step_id_list:
            - 8
            - 9
            - 10
          chain_id: 3
    422-admin-daily-chain-error-activated:
      summary: Active daily reward cannot be updated
      description: Active daily reward have to be deactivated before being updated.
      value:
        statusCode: 422
        errorCode: 6209
        errorMessage: >-
          [0401-6209]: Active chain cannot be updated. Please deactivate it
          first
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          chain_id: 2
    200-client-daily-chain-list:
      summary: User's daily reward list example
      value:
        has_more: false
        total_items_count: 3
        items:
          - id: 101
            name: Active daily reward
            description: null
            date_start: '2025-04-01T18:16:00+05:00'
            date_end: '2025-04-03T18:16:00+05:00'
            order: 1
            steps:
              - step_number: 1
                items:
                  - item_id: 9012
                    sku: health_potion
                    name: Healing potion
                    type: virtual_good
                    description: Heal 10% of your health
                    image_url: https://picture.bundle-picture.png
                    is_free: false
                    quantity: 1
                status: claimed
                unlocked_date: 1711978560
              - step_number: 2
                items:
                  - item_id: 9012
                    sku: health_potion
                    name: Healing potion
                    type: virtual_good
                    description: Heal 10% of your health
                    image_url: https://picture.bundle-picture.png
                    is_free: false
                    quantity: 2
                status: claimable
                unlocked_date: 1712064960
              - step_number: 3
                items:
                  - item_id: 9011
                    sku: free_item
                    name: Free item
                    type: virtual_good
                    description: store_item_0_lost_telescope_2_short_description
                    image_url: https://picture.bundle-picture.png
                    is_free: true
                    quantity: 1
                status: claim_in_future
                unlocked_date: 1712151360
            type: calendar_hard
          - id: 102
            name: Active daily reward 2
            description: null
            date_start: '2025-05-01T18:16:00+05:00'
            date_end: '2025-05-03T18:16:00+05:00'
            order: 1
            steps:
              - step_number: 1
                items:
                  - item_id: 9011
                    sku: free_item
                    name: Free item
                    type: virtual_good
                    description: store_item_0_lost_telescope_2_short_description
                    image_url: https://picture.bundle-picture.png
                    is_free: true
                    quantity: 3
                status: claimable
                unlocked_date: 1714560960
              - step_number: 2
                items:
                  - item_id: 9012
                    sku: health_potion
                    name: Healing potion
                    type: virtual_good
                    description: Heal 10% of your health
                    image_url: https://picture.bundle-picture.png
                    is_free: false
                    quantity: 3
                status: claim_in_future
                unlocked_date: 1714647360
            type: calendar_hard
          - id: 103
            name: Active daily reward 3
            description: null
            date_start: '2025-04-01T18:16:00+05:00'
            date_end: '2025-04-03T18:16:00+05:00'
            order: 1
            steps:
              - step_number: 1
                items:
                  - item_id: 9011
                    sku: free_item
                    name: Free item
                    type: virtual_good
                    description: store_item_0_lost_telescope_2_short_description
                    image_url: https://picture.bundle-picture.png
                    is_free: true
                    quantity: 3
                status: claimable
                unlocked_date: 1711978560
              - step_number: 2
                items:
                  - item_id: 9012
                    sku: health_potion
                    name: Healing potion
                    type: virtual_good
                    description: Heal 10% of your health
                    image_url: https://picture.bundle-picture.png
                    is_free: false
                    quantity: 3
                status: blocked
                unlocked_date: 1712064960
              - step_number: 3
                items:
                  - item_id: 9012
                    sku: health_potion
                    name: Healing potion
                    type: virtual_good
                    description: Heal 10% of your health
                    image_url: https://picture.bundle-picture.png
                    is_free: false
                    quantity: 3
                status: blocked
                unlocked_date: 1712151360
            type: calendar_hard
          - id: 104
            name: Active daily rolling reward
            description: null
            date_start: '2025-04-01T10:00:00+05:00'
            date_end: '2025-04-28T10:00:00+05:00'
            order: 1
            steps:
              - step_number: 1
                items:
                  - item_id: 1001
                    sku: item_one
                    name: Item One
                    type: virtual_good
                    description: Item one description
                    image_url: https://picture.bundle-picture.png
                    is_free: true
                    quantity: 1
                status: claimed
                unlocked_date: -1
              - step_number: 2
                items:
                  - item_id: 1002
                    sku: item_two
                    name: Item Two
                    type: virtual_good
                    description: Item two description
                    image_url: https://picture.bundle-picture.png
                    is_free: false
                    quantity: 1
                status: claimable
                unlocked_date: 1712064960
              - step_number: 3
                items:
                  - item_id: 1003
                    sku: item_three
                    name: Item Three
                    type: virtual_good
                    description: Item three description
                    image_url: https://picture.bundle-picture.png
                    is_free: false
                    quantity: 1
                status: claim_in_future
                unlocked_date: 1712151360
            type: rolling_skippable
    200-client-daily-chain:
      summary: User's daily reward example
      value:
        id: 101
        name: Active daily reward
        description: Active daily reward description
        date_start: '2025-04-01T18:16:00+05:00'
        date_end: '2025-04-03T18:16:00+05:00'
        order: 1
        steps:
          - step_number: 1
            items:
              - item_id: 10001
                sku: bundle_with_items
                name: Bundle with awesome stuff!
                type: bundle
                description: Many stuff
                image_url: https://picture.bundle-with-many-stuff.png
                bundle_type: standard
                is_free: false
                content:
                  - item_id: 1
                    sku: d0df11c5-f7c4-4907-9ae1-7dd40cecab05
                    name: virtual_good_one
                    type: virtual_good
                    description: Virtual good one
                    image_url: https://picture.virtual-good-picture.png
                    is_free: false
                    quantity: 1
                  - item_id: 2
                    sku: coins
                    name: Gold Coins
                    type: virtual_currency
                    description: Gold Coins
                    image_url: https://picture.gold_coins.png
                    is_free: false
                    quantity: 100
                quantity: 1
            status: blocked
            unlocked_date: 1711978560
          - step_number: 2
            items:
              - item_id: 9012
                sku: health_potion
                name: Healing potion
                type: virtual_good
                description: Heal 10% of your health
                image_url: https://picture.bundle-picture.png
                is_free: false
                quantity: 1
            status: claimed
            unlocked_date: 1712064960
          - step_number: 3
            items:
              - item_id: 9012
                sku: health_potion
                name: Healing potion
                type: virtual_good
                description: Heal 10% of your health
                image_url: https://picture.bundle-picture.png
                is_free: false
                quantity: 2
            status: claimable
            unlocked_date: 1712151360
          - step_number: 4
            items:
              - item_id: 9011
                sku: free_item
                name: Free item
                type: virtual_good
                description: store_item_0_lost_telescope_2_short_description
                image_url: https://picture.bundle-picture.png
                is_free: false
                quantity: 1
            status: claim_in_future
            unlocked_date: 1712237760
        type: calendar_hard
    404-daily-chain-step-not-found:
      summary: Daily reward step not found
      description: Daily reward step was not found.
      value:
        statusCode: 404
        errorCode: 6304
        errorMessage: '[0401-6304]: Daily Chain Step not found'
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          chain_id: 100
          step_number: 1
    422-daily-chain-claim-error-invalid-step:
      summary: Can't claim step reward
      description: >-
        Ensure the user has not previously claimed the reward and that the
        correct step in the daily reward is selected for claiming.
      value:
        statusCode: 422
        errorCode: 6405
        errorMessage: '[0401-6405]: This step is not available to be claimed by the user.'
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          chain_id: 1
          step_number: 1
    200-client-offer-chain-list:
      summary: User's offer chain list example
      value:
        has_more: false
        total_items_count: 3
        items:
          - id: 101
            name: Active offer chain
            description: null
            date_start: '2018-04-15T18:16:00+05:00'
            date_end: '2025-04-25T18:16:00+05:00'
            order: 1
            recurrent_schedule: null
            steps:
              - step_number: 1
                is_free: false
                items:
                  - item_id: 9012
                    sku: health_potion
                    name: Healing potion
                    type: virtual_good
                    description: Heal 10% of your health
                    image_url: https://picture.bundle-picture.png
                    is_free: false
                    quantity: 1
                    order: 0
                is_claimed: false
                step_price:
                  amount: 99.99
                  currency: USD
                step_vp_rewards:
                  - item_id: 6039
                    sku: test_value_point_39
                    amount: 15
                    name: store_item_0_test_value_point_name
                    image_url: >-
                      https://popmedia.blob.core.windows.net/popyourself/female/accessory/female_crossnecklace_2_silver-01.png
                    is_clan: true
              - step_number: 2
                is_free: false
                items:
                  - item_id: 9012
                    sku: health_potion
                    name: Healing potion
                    type: virtual_good
                    description: Heal 10% of your health
                    image_url: https://picture.bundle-picture.png
                    is_free: false
                    quantity: 2
                    order: 0
                is_claimed: false
                step_price:
                  amount: 199.98
                  currency: USD
                step_vp_rewards:
                  - item_id: 6039
                    sku: test_value_point_39
                    amount: 30
                    name: store_item_0_test_value_point_name
                    image_url: >-
                      https://popmedia.blob.core.windows.net/popyourself/female/accessory/female_crossnecklace_2_silver-01.png
                    is_clan: true
              - step_number: 3
                is_free: true
                items:
                  - item_id: 9011
                    sku: free_item
                    name: Free item
                    type: virtual_good
                    description: store_item_0_lost_telescope_2_short_description
                    image_url: https://picture.bundle-picture.png
                    is_free: true
                    quantity: 1
                    order: 0
                is_claimed: false
                step_price: null
                step_vp_rewards: null
            next_step_number: 1
          - id: 102
            name: Active offer chain 2
            description: null
            date_start: '2018-04-15T18:16:00+05:00'
            date_end: '2025-04-25T18:16:00+05:00'
            order: 1
            recurrent_schedule: null
            steps:
              - step_number: 1
                is_free: true
                items:
                  - item_id: 9011
                    sku: free_item
                    name: Free item
                    type: virtual_good
                    description: store_item_0_lost_telescope_2_short_description
                    image_url: https://picture.bundle-picture.png
                    is_free: true
                    quantity: 3
                    order: 0
                is_claimed: false
                step_price: null
                step_vp_rewards: null
              - step_number: 2
                is_free: true
                items:
                  - item_id: 9012
                    sku: health_potion
                    name: Healing potion
                    type: virtual_good
                    description: Heal 10% of your health
                    image_url: https://picture.bundle-picture.png
                    is_free: false
                    quantity: 3
                    order: 0
                is_claimed: false
                step_price: null
                step_vp_rewards:
                  - item_id: 6039
                    sku: test_value_point_39
                    amount: 45
                    name: store_item_0_test_value_point_name
                    image_url: >-
                      https://popmedia.blob.core.windows.net/popyourself/female/accessory/female_crossnecklace_2_silver-01.png
                    is_clan: true
              - step_number: 3
                is_free: true
                items: []
                is_claimed: false
                step_price: null
                step_vp_rewards: null
            next_step_number: 1
          - id: 103
            name: Active offer chain 3
            description: null
            date_start: '2018-04-15T18:16:00+05:00'
            date_end: '2025-04-25T18:16:00+05:00'
            order: 1
            recurrent_schedule: null
            steps:
              - step_number: 1
                is_free: true
                items:
                  - item_id: 9011
                    sku: free_item
                    name: Free item
                    type: virtual_good
                    description: store_item_0_lost_telescope_2_short_description
                    image_url: https://picture.bundle-picture.png
                    is_free: true
                    quantity: 3
                    order: 0
                is_claimed: false
                step_price: null
                step_vp_rewards: null
              - step_number: 2
                is_free: false
                items:
                  - item_id: 9012
                    sku: health_potion
                    name: Healing potion
                    type: virtual_good
                    description: Heal 10% of your health
                    image_url: https://picture.bundle-picture.png
                    is_free: false
                    quantity: 3
                    order: 0
                is_claimed: false
                step_price:
                  amount: 299.97
                  currency: USD
                step_vp_rewards:
                  - item_id: 6039
                    sku: test_value_point_39
                    amount: 45
                    name: store_item_0_test_value_point_name
                    image_url: >-
                      https://popmedia.blob.core.windows.net/popyourself/female/accessory/female_crossnecklace_2_silver-01.png
                    is_clan: true
              - step_number: 3
                is_free: true
                items: []
                is_claimed: false
                step_price: null
                step_vp_rewards: null
            next_step_number: 1
    200-client-offer-chain:
      summary: User's offer chain example
      value:
        id: 4
        name: Offer chain with bundles
        description: null
        date_start: '2010-04-15T18:16:00+05:00'
        date_end: '2025-04-25T18:16:00+05:00'
        order: 1
        recurrent_schedule: null
        steps:
          - step_number: 1
            is_free: false
            items:
              - item_id: 7008
                sku: bundle_with_many_items
                name: Bundle with many awesome stuff!
                type: bundle
                description: Many stuff
                image_url: https://picture.bundle-with-many-stuff.png
                bundle_type: standard
                is_free: false
                content:
                  - item_id: 1
                    sku: d0df11c5-f7c4-4907-9ae1-7dd40cecab05
                    name: Virtual Good Bundle
                    type: virtual_good
                    description: >-
                      virtual_good_short_description_d0df11c5-f7c4-4907-9ae1-7dd40cecab05
                    image_url: >-
                      https://popmedia.blob.core.windows.net/popyourself/female/accessory/female_crossnecklace_2_silver-01.png
                    is_free: false
                    quantity: 1
                  - item_id: 7009
                    sku: vg-in-bundle-big-rocket
                    name: Big Rocket
                    type: virtual_good
                    description: Big Rocket - short description
                    image_url: https://picture.bigrocket.png
                    is_free: false
                    quantity: 1
                  - item_id: 7010
                    sku: vc-in-bundle-gold-coins
                    name: Gold Coins
                    type: virtual_currency
                    description: Gold Coins - short description
                    image_url: https://picture.gold_coins.png
                    is_free: true
                    quantity: 100
                  - item_id: 7011
                    sku: digital-content-drm-in-bundle-awesome-game
                    name: Some Game
                    type: virtual_good
                    description: Some Game - short description
                    image_url: https://picture.some_game.png
                    is_free: true
                    quantity: 1
                  - item_id: 7012
                    sku: bundle-in-bundle-another-bundle
                    name: Some Bundle in Bundle
                    type: bundle
                    description: Bundle - short description
                    image_url: https://picture.bundle-picture.png
                    bundle_type: standard
                    is_free: true
                    content:
                      - item_id: 7010
                        sku: vc-in-bundle-gold-coins
                        name: Gold Coins
                        type: virtual_currency
                        description: Gold Coins - short description
                        image_url: https://picture.gold_coins.png
                        is_free: true
                        quantity: 1
                    quantity: 1
                  - item_id: 7013
                    sku: lootbox-in-bundle-awesome-game
                    name: Some Lootbox
                    type: lootbox
                    description: Lootbox in bundle - short description
                    image_url: https://picture.lootbox-picture.png
                    is_free: true
                    quantity: 1
                quantity: 5
                order: 0
            is_claimed: false
            step_price:
              amount: 499.95
              currency: USD
            step_vp_rewards: null
          - step_number: 2
            is_free: true
            items:
              - item_id: 7007
                sku: bundle-empty
                name: Empty bundle
                type: bundle
                description: 'No'
                image_url: https://picture.bundle-no-items.png
                bundle_type: standard
                is_free: true
                content: []
                quantity: 10
                order: 0
            is_claimed: false
            step_price: null
            step_vp_rewards: null
        next_step_number: 1
    404-offer-chain-not-found:
      summary: Chain not found
      description: Offer chain step was not found.
      value:
        statusCode: 404
        errorCode: 6201
        errorMessage: '[0401-6201]: Chain not found'
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          chain_id: 4
    404-offer-chain-step-not-found:
      summary: Chain step not found
      description: Offer chain step was not found.
      value:
        statusCode: 404
        errorCode: 6304
        errorMessage: '[0401-6304]: Offer Chain Step not found'
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          chain_id: 100
          step_number: 1
    422-offer-chain-claim-error-invalid-step:
      summary: Cannot claim step reward
      description: >-
        The user must claim all previous steps, and the request must use a valid
        call – <a
        href="/ko/api/shop-builder/operation/order-user-offer-chain-step-reward">Create
        order for paid offer chain step</a>, <a
        href="/ko/api/shop-builder/operation/claim-user-offer-chain-step-reward">Claim
        free offer chain step</a> for free ones.


        This error is returned if one or more of the following conditions are
        not met:<ul><li>The offer chain exists, is enabled, and not
        deleted.</li><li>The target step exists, is enabled, and marked as
        free.</li><li>The step has not already been claimed by the user. In case
        of a recurring chain, this check is based on the user progress of the
        current iteration.</li><li>All previous steps in the chain (by step
        number) have been claimed or purchased. In case of a recurring chain,
        this check also considers the user progress of the current
        iteration.</li></ul>
      value:
        statusCode: 422
        errorCode: 6306
        errorMessage: '[0401-6306]: This step is not valid to claim by user.'
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          chain_id: 1
          step_number: 1
    200-admin-offer-chain-list:
      summary: Offer chain list example
      value:
        has_more: false
        items:
          - id: 1
            name:
              en: New personalized default offer chain
              ru: Новая персонализированная цепочка предложений по умолчанию
              de: Neue personalisierte Standard-Angebotskette
              fr: Nouvelle chaîne d'offres personnalisée par défaut
              it: Nuova catena di offerte personalizzata predefinita
            description:
              en: >-
                Default personalized offer chain for users that do not meet the
                conditions of other personalized chains
              ru: >-
                Персонализированная цепочка по умолчанию для пользователей, не
                подходящих под условия других персонализированных цепочек
              de: >-
                Standard-personalisierte Angebotskette für Benutzer, die die
                Bedingungen anderer personalisierter Ketten nicht erfüllen
              fr: >-
                Chaîne d'offres personnalisée par défaut pour les utilisateurs
                qui ne répondent pas aux conditions des autres chaînes
                personnalisées
              it: >-
                Catena di offerte personalizzata predefinita per gli utenti che
                non soddisfano le condizioni di altre catene personalizzate
            order: 1
            date_start: '2023-04-15T18:16:00+05:00'
            date_end: '2025-04-25T18:16:00+05:00'
            is_enabled: true
            recurrent_schedule: null
            is_always_visible: false
          - id: 2
            name:
              en: New personalized offer chain
              ru: Новая персонализированная цепочка предложений
              de: Neue personalisierte Angebotskette
              fr: Nouvelle chaîne d'offres personnalisée
              it: Nuova catena di offerte personalizzata
            description:
              en: >-
                Personalized offer chain with user attribute conditions - for
                level 10 and above elves who reached level 10 no later than
                2026-01-01 00:00:00, inclusive
              ru: >-
                Персонализированная цепочка предложений с условиями по атрибутам
                пользователя - для эльфов уровня 10 и выше, достигших 10 уровня
                не позднее 2026-01-01 00:00:00 включительно
              de: >-
                Personalisierte Angebotskette mit Benutzerattributbedingungen -
                für Elfen der Stufe 10 und höher, die Stufe 10 spätestens am
                2026-01-01 00:00:00 erreicht haben, einschließlich
              fr: >-
                Chaîne d'offres personnalisée avec des conditions d'attribut
                utilisateur - pour les elfes de niveau 10 et plus qui ont
                atteint le niveau 10 au plus tard le 2026-01-01 00:00:00, inclus
              it: >-
                Catena di offerte personalizzata con condizioni di attributo
                utente - per elfi di livello 10 e superiore che hanno raggiunto
                il livello 10 non più tardi del 2026-01-01 00:00:00, inclusi
            order: 2
            date_start: '2023-04-15T18:16:00+05:00'
            date_end: '2025-04-25T18:16:00+05:00'
            is_enabled: true
            recurrent_schedule: null
            is_always_visible: false
            attribute_conditions:
              - attribute: race
                operator: eq
                value: elf
                type: string
                can_be_missing: false
              - attribute: level
                operator: ge
                value: '10'
                type: number
                can_be_missing: false
              - attribute: 10_level_up_date
                operator: le
                value: '2026-01-01T00:00:00'
                type: date
                can_be_missing: false
          - id: 4
            name:
              en: Weekly offer chain
              ru: Еженедельная цепочка предложений
              de: Wöchentliche Angebotskette
              fr: Chaîne d'offres hebdomadaire
              it: Catena di offerte settimanale
            description:
              en: Offer chain that resets weekly on Wednesdays at 07:00 GMT+3
              ru: >-
                Цепочка предложений, которая сбрасывается еженедельно по средам
                в 07:00 GMT+3
              de: >-
                Angebotskette, die sich wöchentlich mittwochs um 07:00 Uhr GMT+3
                zurücksetzt
              fr: >-
                Chaîne d'offres qui se réinitialise chaque semaine le mercredi à
                07h00 GMT+3
              it: >-
                Catena di offerte che si resetta settimanalmente il mercoledì
                alle 07:00 GMT+3
            order: 3
            date_start: '2023-04-15T18:16:00+05:00'
            date_end: '2025-04-25T18:16:00+05:00'
            is_enabled: false
            recurrent_schedule:
              interval_type: weekly
              day_of_week: 3
              time: 07:00:00+03:00
              displayable_reset_start_date: '2018-12-05T07:00:00+03:00'
              displayable_reset_next_date: '2018-12-05T07:00:00+03:00'
              reset_next_date: 1543982400
            is_always_visible: true
          - id: 5
            name:
              en: Monthly offer chain
              ru: Ежемесячная цепочка предложений
              de: Monatliche Angebotskette
              fr: Chaîne d'offres mensuelle
              it: Catena di offerte mensile
            description:
              en: Offer chain that resets monthly on the 28th at 15:00 GMT+8
              ru: >-
                Цепочка предложений, которая сбрасывается ежемесячно 28-го числа
                в 15:00 GMT+8
              de: >-
                Angebotskette, die sich monatlich am 28. um 15:00 Uhr GMT+8
                zurücksetzt
              fr: >-
                Chaîne d'offres qui se réinitialise mensuellement le 28 à 15h00
                GMT+8
              it: >-
                Catena di offerte che si resetta mensilmente il 28 alle 15:00
                GMT+8
            order: 4
            date_start: '2025-04-15T00:00:00+08:00'
            date_end: '2025-08-28T15:00:00+08:00'
            is_enabled: true
            recurrent_schedule:
              interval_type: monthly
              day_of_month: 28
              time: 15:00:00+08:00
              displayable_reset_start_date: '2025-05-28T15:00:00+08:00'
              displayable_reset_next_date: '2025-05-28T15:00:00+08:00'
              reset_next_date: 1748415600
            is_always_visible: true
    422-admin-offer-chain-error-too-many-steps:
      summary: Too many steps
      description: >-
        The number of offer chain steps exceeds the allowed limit of 30. Try
        specifying fewer steps.
      value:
        statusCode: 422
        errorCode: 6203
        errorMessage: '[0401-6203]: Chain step count exceeds the allowed limit'
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          step_count: 31
          max_steps: 30
    422-admin-offer-chain-error-incorrect-steps-order:
      summary: Invalid steps order
      description: >-
        The sequence of offer chain step numbers is incorrect. Step numbers must
        be sequential, without gaps or duplicates.
      value:
        statusCode: 422
        errorCode: 6210
        errorMessage: '[0401-6210]: Chain step numbers are invalid'
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          incorrect_step_numbers:
            duplicates:
              - 2
              - 7
            out_of_range:
              - 7
              - 8
            missing:
              - 3
              - 4
              - 5
              - 6
    422-admin-offer-chain-error-item-limit-exceeded:
      summary: Item limit exceeded
      description: >-
        The number of items in one or more offer chain steps exceeds the allowed
        limit. Currently, only one item per step is allowed.
      value:
        statusCode: 422
        errorCode: 6208
        errorMessage: >-
          [0401-6208]: Chain step item count exceeds the allowed limit for some
          steps
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          max_items: 1
          steps_exceeded_limits:
            - step_number: 1
              items_count: 2
            - step_number: 4
              items_count: 3
    422-admin-offer-chain-error-incorrect-items:
      summary: Invalid step items
      description: >-
        Specified items are either unavailable, or not found. Only enabled items
        of the following types are supported: virtual items, bundles, and
        virtual currency packages.
      value:
        statusCode: 422
        errorCode: 6211
        errorMessage: '[0401-6211]: Chain steps items are not allowed or not found'
        transactionId: x-x-xX-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          invalid_items:
            not_found:
              - vg_deleted_item_1
              - vg_deleted_item_2
              - not_existing_sku_404_1
              - not_existing_sku_404_2
            disabled:
              - vg_disabled_item_1
              - vg_disabled_item_2
              - vc_disabled_1
            invalid_item_type:
              allowed_item_type_list:
                - virtual_good
                - bundle
              sku_map:
                vc_enabled_shown_in_store_1: virtual_currency
                vc_disabled_1: virtual_currency
                unit_enabled_shown_in_store_1: unit
                gk_steam_enabled_shown_in_store_1: game_key
    422-admin-offer-chain-error-invalid-dates:
      summary: Invalid date format
      description: >-
        The date format must be valid. Use <a
        href="https://en.wikipedia.org/wiki/ISO_8601" target="_blank">ISO
        8601</a> format.
      value:
        statusCode: 422
        errorCode: 6204
        errorMessage: >-
          [0401-6204]: Period of a chain is invalid. Please, check the dates in
          your request
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          chain_id: 1
          invalid_format_dates:
            date_start: '2023-04-15 17:16:00Z'
            date_end: '2025-04-25 19:16:00Z'
    422-admin-offer-chain-error-incorrect-period:
      summary: Invalid chain period
      description: The start date must be earlier than the end date.
      value:
        statusCode: 422
        errorCode: 6204
        errorMessage: >-
          [0401-6204]: Period of a chain is invalid. Please, check the dates in
          your request
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          chain_id: 1
          invalid_periods:
            - start: '2025-04-25T18:16:00+05:00'
              end: '2023-04-15T18:16:00+05:00'
    200-admin-offer-chain:
      summary: Offer chain example
      value:
        id: 3
        name:
          en: Offer chain
          ru: Цепочка
          de: Angebotskette
          fr: Chaîne d'offres
          it: Catena di offerte
        description:
          en: >-
            Personalized offer chain with user attribute conditions - for level
            10 and above elves who reached level 10 no later than 2026-01-01
            00:00:00, inclusive
          ru: >-
            Персонализированная цепочка предложений - для эльфов 10 уровня и
            выше, достигших 10 уровня не позднее 2026-01-01 00:00:00
            включительно
          de: >-
            Personalisierte Angebotskette mit Benutzerattributbedingungen - für
            Elfen der Stufe 10 und höher, die Stufe 10 spätestens am 2026-01-01
            00:00:00 erreicht haben, einschließlich
          fr: >-
            Chaîne d'offres personnalisée avec des conditions d'attribut
            utilisateur - pour les elfes de niveau 10 et plus qui ont atteint le
            niveau 10 au plus tard le 2026-01-01 00:00:00, inclus
          it: >-
            Catena di offerte personalizzata con condizioni di attributo utente
            - per elfi di livello 10 e superiore che hanno raggiunto il livello
            10 non più tardi del 2026-01-01 00:00:00, inclusi
        date_start: '2023-04-15T18:16:00+05:00'
        date_end: '2025-04-25T18:16:00+05:00'
        order: 1
        recurrent_schedule: null
        steps:
          - step_id: 7
            step_number: 1
            is_free: false
            items:
              - item_id: 9010
                sku: telescope
                name:
                  en: Telescope
                  ru: Телескоп
                  de: Teleskop
                  fr: Télescope
                  it: Telescopio
                type: virtual_good
                description:
                  en: Allows to see the stars
                  ru: Позволяет увидеть звезды
                  de: Ermöglicht das Betrachten der Sterne
                  fr: Permet de voir les étoiles
                  it: Permette di vedere le stelle
                image_url: https://cdn.picture.vg.sku-telescope.png
                quantity: 1
                order: 1
              - item_id: 9012
                sku: health_potion
                name:
                  en: Healing potion
                  ru: Зелье лечения
                  de: Heiltrank
                  fr: Potion de soin
                  it: Pozione curativa
                type: virtual_good
                description:
                  en: Heal 10% of your health
                  ru: Лечит 10% здоровья
                  de: Heilt 10% deiner Gesundheit
                  fr: Soigne 10% de votre santé
                  it: Cura il 10% della tua salute
                image_url: https://cdn.picture/vg-sku-health_potion.png
                quantity: 2
                order: 0
          - step_id: 6
            step_number: 2
            is_free: false
            items:
              - item_id: 9010
                sku: telescope
                name:
                  en: Telescope
                  ru: Телескоп
                  de: Teleskop
                  fr: Télescope
                  it: Telescopio
                type: virtual_good
                description:
                  en: Allows to see the stars
                  ru: Позволяет увидеть звезды
                  de: Ermöglicht das Betrachten der Sterne
                  fr: Permet de voir les étoiles
                  it: Permette di vedere le stelle
                image_url: https://cdn.picture/vg-sku-telescope.png
                quantity: 5
                order: 0
          - step_id: 5
            step_number: 3
            is_free: true
            items:
              - item_id: 9010
                sku: telescope
                name:
                  en: Telescope
                  ru: Телескоп
                  de: Teleskop
                  fr: Télescope
                  it: Telescopio
                type: virtual_good
                description:
                  en: Allows to see the stars
                  ru: Позволяет увидеть звезды
                  de: Ermöglicht das Betrachten der Sterne
                  fr: Permet de voir les étoiles
                  it: Permette di vedere le stelle
                image_url: https://cdn.picture/vg-sku-telescope.png
                quantity: 2
                order: 0
        is_enabled: true
        is_always_visible: false
        attribute_conditions:
          - attribute: race
            operator: eq
            value: elf
            type: string
            can_be_missing: false
          - attribute: level
            operator: ge
            value: '10'
            type: number
            can_be_missing: false
          - attribute: 10_level_up_date
            operator: le
            value: '2026-01-01T00:00:00'
            type: date
            can_be_missing: false
    422-admin-offer-chain-error-invalid-chain-step-ids:
      summary: Chain step IDs not found
      description: >-
        Some of the step IDs were not found. Double-check that the specified
        chain step IDs exist. To do this, use the <a
        href="/ko/api/shop-builder/operation/order-user-offer-chain-step-reward#tag/offer-chain-admin/operation/admin-get-offer-chain">Get
        offer chain</a> call.
      value:
        statusCode: 404
        errorCode: 6206
        errorMessage: '[0401-6206]: Chain step IDs not found'
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          chain_id: 1
          chain_step_id_list:
            - 404000
    422-admin-offer-chain-error-chain-id-mismatch:
      summary: Chain ID mismatch
      description: Offer chain ID in the request body does not match the ID in the URL.
      value:
        statusCode: 422
        errorCode: 6205
        errorMessage: >-
          [0401-6205]: Chain ID mismatch. Please, check the chain ID in your
          request body and URL
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          url_chain_id: 1
          body_chain_id: 2
    422-admin-offer-chain-error-duplicate-step-ids:
      summary: Duplicate chain step IDs
      description: Chain step IDs must be unique in the request body.
      value:
        statusCode: 422
        errorCode: 6207
        errorMessage: '[0401-6207]: Duplicate chain step IDs detected in the request body'
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          chain_step_id_list:
            - 8
            - 9
            - 10
          chain_id: 3
    422-admin-offer-chain-error-activated:
      summary: Active offer chain cannot be updated
      description: >-
        Active offer chain has to be deactivated before being updated. To do
        this, use the <a
        href="/ko/api/shop-builder/operation/admin-toggle-offer-chain">Toggle
        offer chain</a> call.
      value:
        statusCode: 422
        errorCode: 6209
        errorMessage: >-
          [0401-6209]: Active chain cannot be updated. Please deactivate it
          first
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          chain_id: 2
  responses:
    Promotions_200-get-promotions:
      description: 프로모션 목록을 성공적으로 수신했습니다.
      content:
        application/json:
          schema:
            type: object
            properties:
              promotions:
                type: array
                items:
                  $ref: '#/components/schemas/Promotions_200-get-promotion-model'
              total_promotions_count:
                $ref: '#/components/schemas/total_promotions_count'
              active_promotions_count:
                $ref: '#/components/schemas/active_promotions_count'
              inactive_promotions_count:
                $ref: '#/components/schemas/inactive_promotions_count'
          examples:
            response:
              $ref: '#/components/examples/Promotions_200-admin-promotions'
    Promotions_401-invalid-basic-auth:
      description: 기본 인증이 전달되지 않았거나 잘못되었습니다. 기본 인증 또는 올바른 자격 증명을 사용했는지 확인해야 합니다.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 401
              errorCode:
                type: integer
                example: 1020
              errorMessage:
                type: string
                example: '[0401-1020]: Error in Authentication method occurred'
          examples:
            response:
              value:
                statusCode: 401
                errorCode: 1020
                errorMessage: '[0401-1020]: Error in Authentication method occurred'
    Promotions_422-activate-deactivate-promotion:
      description: 잘못된 요청입니다.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 422
              errorCode:
                type: integer
                example: 1102
              errorMessage:
                type: string
                example: >-
                  [0401-9505]: Error was occurred while promotion was being
                  updated
              transactionId:
                type: string
                example: da145238620011eb8e24fe6913ff226a
          examples:
            Error was occurred:
              $ref: '#/components/examples/422-activate-deactivate-promotion'
    200-admin-get-redeemable-by-code:
      description: 프로모션을 성공적으로 수신했습니다.
      content:
        application/json:
          schema:
            $ref: >-
              #/components/schemas/admin-promotions_200-get-redeemable-coupon-promotion-model
          examples:
            Promo Code Response:
              value:
                promotion_periods:
                  - date_from: '2023-05-01T01:00:00+05:00'
                    date_until: '2023-05-31T23:59:59+05:00'
                  - date_from: '2023-06-01T01:00:00+05:00'
                    date_until: '2023-06-30T23:59:59+05:00'
                bonus: []
                is_enabled: true
                external_id: falls2023
                name:
                  ru: Скидка по промокоду на Epic Fall Hammer
                  en: Promo Code discount for Epic Fall Hammer
                redeem_total_limit: 2
                redeem_user_limit: 3
                redeem_code_limit: null
                total_limit_state:
                  available: 1
                  reserved: 1
                  used: 0
                discount:
                  percent: null
                discounted_items:
                  - sku: epic_fall_hammer_1
                    discount:
                      percent: '20.00'
            Coupon Response:
              value:
                promotion_periods:
                  - date_from: '2023-04-15T01:00:00+05:00'
                    date_until: '2023-04-30T23:59:59+05:00'
                  - date_from: '2023-05-15T01:00:00+05:00'
                    date_until: '2023-05-30T23:59:59+05:00'
                bonus:
                  - sku: epic_fall_hammer_1
                    quantity: 3
                is_enabled: true
                external_id: coupon_fall_hammer_2
                name:
                  en: This is a Coupon code for Epic Fall Hammer
                  ru: Eto kod kupona на Epic Fall Hammer
                redeem_total_limit: 99
                redeem_user_limit: 1
                redeem_code_limit: null
    401-invalid-basic-auth:
      description: 기본 인증이 전달되지 않았거나 잘못되었습니다. 기본 인증 또는 올바른 자격 증명을 사용했는지 확인해야 합니다.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 401
              errorCode:
                type: integer
                example: 1020
              errorMessage:
                type: string
                example: '[0401-1020]: Error in Authentication method occurred'
          examples:
            response:
              value:
                statusCode: 401
                errorCode: 1020
                errorMessage: '[0401-1020]: Error in Authentication method occurred'
    404-code-not-found:
      description: 사용 가능한 코드를 찾을 수 없습니다. 제공된 코드 값이 올바른지 확인해 주세요.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 404
              errorCode:
                type: integer
                example: 9811
              errorMessage:
                type: string
                example: '[0401-9811]: Code not found.'
          examples:
            response:
              value:
                statusCode: 404
                errorCode: 9811
                errorMessage: '[0401-9811]: Code not found.'
    405-method-not-found:
      description: 잘못된 교환 가능한 코드 형식입니다. 코드에는 문자와 숫자만 사용할 수 있습니다.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 405
              errorCode:
                type: integer
                example: 0
              errorMessage:
                type: string
                example: 'Method is not allowed. Method must be one of: OPTIONS'
          examples:
            response:
              value:
                statusCode: 405
                errorCode: 0
                errorMessage: 'Method is not allowed. Method must be one of: OPTIONS'
    Promotions_200-coupon-redeemed:
      description: 쿠폰을 성공적으로 사용했습니다.
      content:
        application/json:
          schema:
            type: object
            properties:
              items:
                type: array
                items:
                  type: object
                  properties:
                    sku:
                      type: string
                    groups:
                      type: array
                      items:
                        type: object
                        properties:
                          external_id:
                            type: string
                          name:
                            type: string
                    name:
                      type:
                        - string
                        - 'null'
                    price:
                      type:
                        - object
                        - 'null'
                      description: 아이템 가격입니다.
                      properties:
                        amount:
                          type: string
                          example: '2.9900'
                          description: 할인된 아이템 가격입니다.
                        amount_without_discount:
                          type: string
                          example: '2.9900'
                          description: 아이템 가격입니다.
                        currency:
                          type: string
                          example: USD
                          description: >-
                            아이템 가격 통화입니다. [ISO
                            4217](https://en.wikipedia.org/wiki/ISO_4217)에 따른
                            3자리 코드입니다.
                    type:
                      type: string
                    virtual_item_type:
                      type: string
                      example: non-consumable
                      description: >-
                        가상 아이템의 유형입니다.


                        사용 가능한 값: - `consumable` - 사용 후 인벤토리에서 사라지는 아이템(예: 탄약).
                        - `non_consumable` - 인벤토리에 무기한으로 남아 있는 아이템. -
                        `non_renewing_subscription` - 일정 기간 동안 서비스나 콘텐츠에 대한 이용
                        권한을 나타낼 수 있는 기간 한정 아이템.
                      enum:
                        - consumable
                        - non_consumable
                        - non_renewing_subscription
                    virtual_prices:
                      type: array
                    description:
                      type: string
                    image_url:
                      type: string
                    quantity:
                      type: integer
                    is_free:
                      type: boolean
                    attributes:
                      type: array
                example:
                  - attributes: []
                    description: >-
                      Take it, take it all! All of Xsolla's riches in one Mega
                      Booster.
                    groups:
                      - external_id: powerups
                        name: Power Ups
                    image_url: >-
                      https://cdn.xsolla.net/img/misc/images/e9f2f4a634bc96ea03b5d5ceadd7c55f.png
                    is_free: false
                    name: Xsolla Booster Mega
                    price:
                      amount: '50.0000000000000000'
                      amount_without_discount: '100.0000000000000000'
                      currency: USD
                    quantity: 1
                    sku: com.xsolla.booster_mega_1
                    type: virtual_good
                    virtual_item_type: consumable
                    virtual_prices: []
          examples:
            response:
              value:
                items:
                  - attributes: []
                    description: >-
                      Take it, take it all! All of Xsolla's riches in one Mega
                      Booster.
                    groups:
                      - external_id: powerups
                        name: Power Ups
                    image_url: >-
                      https://cdn.xsolla.net/img/misc/images/e9f2f4a634bc96ea03b5d5ceadd7c55f.png
                    is_free: true
                    name: Xsolla Booster Mega
                    price: null
                    quantity: 1
                    sku: com.xsolla.booster_mega_1
                    type: virtual_good
                    virtual_item_type: consumable
                    virtual_prices: []
    Promotions_401-invalid-client-auth:
      description: 인증을 통과하지 못했거나 잘못되었습니다.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 401
              errorCode:
                type: integer
                example: 1501
              errorMessage:
                type: string
                example: '[0401-1501]: Authorization failed: Provide authorization'
          examples:
            response:
              value:
                statusCode: 401
                errorCode: 1501
                errorMessage: '[0401-1501]: Authorization failed: Provide authorization'
    Promotions_403-auth-header:
      description: 인증 헤더가 전송되지 않았습니다.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 403
              errorCode:
                type: integer
                example: 0
              errorMessage:
                type: string
                example: Authorization header not sent.
              transactionId:
                type: string
                example: x-x-x-x-transactionId-mock-x-x-x
          examples:
            response:
              value:
                statusCode: 403
                errorCode: 0
                errorMessage: Authorization header not sent
    Promotions_404-coupon:
      description: 유효한 쿠폰 코드를 입력해야 합니다.
      content:
        application/json:
          schema:
            properties:
              statusCode:
                type: integer
                example: 404
              errorCode:
                type: integer
                example: 4001
              errorMessage:
                type: string
                example: '[0401-9807]: Enter valid coupon code.'
            type: object
    Promotions_422-redeem-coupon:
      description: 잘못된 요청입니다.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 422
              errorCode:
                type: integer
                example: 1102
              errorMessage:
                type: string
                example: >-
                  [0401-1102]: Unprocessable Entity. The property `coupon_code`
                  is required
              transactionId:
                type: string
                example: x-x-x-x-transactionId-mock-x-x-x
          examples:
            response:
              value:
                statusCode: 422
                errorCode: 1102
                errorMessage: >-
                  [0401-1102]: Unprocessable Entity. The property `coupon_code`
                  is required
    Promotions_200-coupon-rewards:
      description: 쿠폰 보상 목록을 성공적으로 수신했습니다.
      content:
        application/json:
          schema:
            type: object
            properties:
              bonus:
                type: array
                items:
                  $ref: '#/components/schemas/Promotions_200-coupon-bonus-reward'
              is_selectable:
                type: boolean
                description: '`true`인 경우 사용자는 쿠폰을 사용하기 전에 보너스를 선택해야 합니다.'
              discount:
                $ref: '#/components/schemas/Promotions_200-coupon-discount-reward'
          examples:
            response:
              $ref: '#/components/examples/Promotions_200-get-coupon-rewards'
    Promotions_422-rewards:
      description: 잘못된 요청입니다.
      content:
        application/json:
          schema:
            oneOf:
              - $ref: '#/components/schemas/Promotions_422_limit_error'
              - $ref: '#/components/schemas/Promotions_422_reglock_error'
    Promotions_200-get-coupons:
      description: 쿠폰 목록을 성공적으로 수신했습니다.
      content:
        application/json:
          schema:
            type: object
            properties:
              items:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/admin-promotions_200-get-coupon-promotion-model
              total_promotions_count:
                $ref: '#/components/schemas/total_promotions_count'
              active_promotions_count:
                $ref: '#/components/schemas/active_promotions_count'
              inactive_promotions_count:
                $ref: '#/components/schemas/inactive_promotions_count'
          examples:
            response:
              $ref: '#/components/examples/Promotions_200-admin-coupons'
    Promotions_422-invalid-coupon:
      description: 잘못된 요청입니다.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 422
              errorCode:
                type: integer
                example: 1102
              errorMessage:
                type: string
                example: >-
                  [0401-1102]: Unprocessable Entity. The property `external_id`
                  is required
          examples:
            response:
              value:
                statusCode: 422
                errorCode: 1102
                errorMessage: >-
                  [0401-1102]: Unprocessable Entity. The property `external_id`
                  is required
    Promotions_404-admin-coupon:
      description: 쿠폰을 찾을 수 없습니다. `external_id`가 올바른지 확인해야 합니다.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 404
              errorCode:
                type: integer
                example: 4001
              errorMessage:
                type: string
                example: '[0401-9802]: Coupon not found'
              transactionId:
                type: string
                example: x-x-x-x-transactionId-mock-x-x-x
    Promotions_422-admin-promotion-error:
      description: 프로모션 서비스로부터 프로모션을 수신하는 동안 오류가 발생했습니다.
      content:
        application/json:
          schema:
            properties:
              statusCode:
                type: integer
                example: 422
              errorCode:
                type: integer
                example: 9502
              errorMessage:
                type: string
                example: >-
                  [0401-9502]: Error occurred while receiving the promotion from
                  the promotion service
              transactionId:
                type: string
                example: x-x-x-x-transactionId-mock-x-x-x
            type: object
    Promotions_200-coupon-code-list:
      description: 쿠폰 코드 목록을 성공적으로 수신했습니다.
      content:
        application/json:
          schema:
            type: object
            properties:
              codes:
                type: array
                items:
                  type: object
                  properties:
                    code:
                      $ref: '#/components/schemas/Promotions_coupon_code'
              total_count:
                type: number
                description: 쿠폰 코드의 총 개수입니다.
          examples:
            response:
              $ref: '#/components/examples/Promotions_200-coupon-code-list'
    Promotions_201-coupon-promocode-code-created:
      description: 코드를 성공적으로 생성했습니다.
      content:
        application/json:
          schema:
            type: object
            properties:
              code:
                $ref: '#/components/schemas/Promotions_coupon_code'
          examples:
            response:
              value:
                code: WINTER2021
    Promotions_422-coupon-promocode-same-code-exists:
      description: 잘못된 요청입니다. 이미 있는 코드입니다.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 422
              errorCode:
                type: integer
                example: 9803
              errorMessage:
                type: string
                example: '[0401-9803]: The code already exists.'
              transactionId:
                type: string
                example: x-x-x-x-transactionId-mock-x-x-x
          examples:
            response:
              value:
                statusCode: 422
                errorCode: 9803
                errorMessage: '[0401-9803]: The code already exists.'
                transactionId: x-x-x-x-transactionId-mock-x-x-x
    Promotions_404-admin-promocode:
      description: 프로모션 코드를 찾을 수 없습니다. `external_id`이 올바른지 확인해 주십시오.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 404
              errorCode:
                type: integer
                example: 4001
              errorMessage:
                type: string
                example: '[0401-9802]: Promocode not found'
              transactionId:
                type: string
                example: x-x-x-x-transactionId-mock-x-x-x
    Promotions_200-promo-code-redeemed:
      description: 프로모션 코드를 성공적으로 사용했습니다.
      content:
        application/json:
          schema:
            type: object
            properties:
              cart_id:
                type: string
                example: cart_id
                description: 장바구니 ID입니다.
              price:
                type:
                  - object
                  - 'null'
                properties:
                  amount:
                    type: string
                    example: '50.0000000000000000'
                  amount_without_discount:
                    type: string
                    example: '100.0000000000000000'
                  currency:
                    type: string
                    example: USD
                example:
                  amount: '6150.0000000000000000'
                  amount_without_discount: '6150.0000000000000000'
                  currency: USD
                description: 장바구니 가격입니다.
              is_free:
                $ref: '#/components/schemas/value-is_free'
              items:
                type: array
                items:
                  type: object
                  properties:
                    sku:
                      type: string
                    groups:
                      type: array
                      items:
                        type: object
                        properties:
                          external_id:
                            type: string
                          name:
                            type: string
                    name:
                      type:
                        - string
                        - 'null'
                    type:
                      type: string
                    description:
                      type: string
                    image_url:
                      type: string
                    quantity:
                      type: integer
                    is_free:
                      $ref: '#/components/schemas/value-is_free'
                    promotions:
                      $ref: '#/components/schemas/Catalog_item_promotions'
                    can_be_bought:
                      $ref: '#/components/schemas/Can_be_bought'
                    vp_rewards:
                      $ref: '#/components/schemas/client-item-value-point-reward'
                    limits:
                      $ref: '#/components/schemas/Catalog_item_limits'
                    periods:
                      $ref: '#/components/schemas/item-periods'
                example:
                  - attributes: []
                    description: >-
                      Take it, take it all! All of Xsolla's riches in one Mega
                      Booster.
                    groups:
                      - external_id: powerups
                        name: Power Ups
                    image_url: >-
                      https://cdn.xsolla.net/img/misc/images/e9f2f4a634bc96ea03b5d5ceadd7c55f.png
                    is_free: false
                    name: Xsolla Booster Mega
                    price:
                      amount: '50.0000000000000000'
                      amount_without_discount: '100.0000000000000000'
                      currency: USD
                    quantity: 123
                    sku: com.xsolla.booster_mega_1
                    type: virtual_good
                    virtual_item_type: consumable
                    virtual_prices: []
                    promotions:
                      - name: Bonus promotion
                        date_start: '2020-04-15T16:16:00+03:00'
                        date_end: '2026-04-15T16:16:00+03:00'
                        discount:
                          percent: '50.00'
                        bonus:
                          - quantity: 1
                            name: Xsolla Minigun
                            image_url: >-
                              https://cdn.xsolla.net/img/misc/images/2fc5c491a47413a8e8000447889093c2.png
                            sku: com.xsolla.minigun_1
                            type: virtual_good
                    can_be_bought: true
                    vp_rewards:
                      - item_id: 175232
                        sku: com.xsolla.value_point_1
                        amount: 130
                        name: Value point
                        image_url: >-
                          https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                        is_clan: false
                      - item_id: 186321
                        sku: com.xsolla.clan_value_point_1
                        amount: 50
                        name: Clan Reward VP 1
                        image_url: >-
                          https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                        is_clan: true
                    limits:
                      per_user:
                        available: 3
                        recurrent_schedule:
                          interval_type: weekly
                          reset_next_date: 1746057600
                        total: 5
                    periods:
                      - date_from: '2020-08-11T10:00:00+03:00'
                        date_until: '2020-08-11T20:00:00+03:00'
              rewards:
                $ref: '#/components/schemas/Promo_code_rewards'
          examples:
            response:
              value:
                cart_id: cart_id
                is_free: false
                items:
                  - attributes: []
                    description: >-
                      Take it, take it all! All of Xsolla's riches in one Mega
                      Booster.
                    groups:
                      - external_id: powerups
                        name: Power Ups
                    image_url: >-
                      https://cdn.xsolla.net/img/misc/images/e9f2f4a634bc96ea03b5d5ceadd7c55f.png
                    is_free: false
                    name: Xsolla Booster Mega
                    price:
                      amount: '50.0000000000000000'
                      amount_without_discount: '100.0000000000000000'
                      currency: USD
                    quantity: 123
                    sku: com.xsolla.booster_mega_1
                    type: virtual_good
                    virtual_item_type: consumable
                    virtual_prices: []
                    promotions:
                      - name: Bonus promotion
                        date_start: '2020-04-15T16:16:00+03:00'
                        date_end: '2026-04-15T16:16:00+03:00'
                        discount:
                          percent: '50.00'
                        bonus:
                          - quantity: 1
                            name: Xsolla Minigun
                            image_url: >-
                              https://cdn.xsolla.net/img/misc/images/2fc5c491a47413a8e8000447889093c2.png
                            sku: com.xsolla.minigun_1
                            type: virtual_good
                    can_be_bought: true
                    vp_rewards:
                      - item_id: 175232
                        sku: com.xsolla.value_point_1
                        amount: 130
                        name: Value point
                        image_url: >-
                          https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                        is_clan: false
                      - item_id: 186321
                        sku: com.xsolla.clan_value_point_1
                        amount: 50
                        name: Clan Reward VP 1
                        image_url: >-
                          https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                        is_clan: true
                    limits:
                      per_user:
                        available: 3
                        recurrent_schedule:
                          interval_type: weekly
                          reset_next_date: 1746057600
                        total: 5
                    periods:
                      - date_from: '2020-08-11T10:00:00+03:00'
                        date_until: '2020-08-11T20:00:00+03:00'
                  - attributes: []
                    description: >-
                      Honshu Boshin Wakizashi - Modern Tactical Samurai / Ninja
                      Sword - Hand Forged 1060 Carbon Steel - Full Tang, Fully
                      Functional, Battle Ready - Black TPR, Steel Guard and
                      Pommel.
                    groups: []
                    image_url: >-
                      https://cdn.xsolla.net/img/misc/images/e9f2f4a634bc96ea03b5d5ceadd7c55f.png
                    is_free: true
                    name: Sword Xsolla Skin
                    price: []
                    quantity: 1
                    sku: com.xsolla.swords_1
                    type: virtual_good
                    virtual_item_type: non_consumable
                    virtual_prices: []
                    promotions:
                      - name: Bonus promotion
                        date_start: '2020-04-15T16:16:00+03:00'
                        date_end: '2026-04-15T16:16:00+03:00'
                        discount:
                          percent: '50.00'
                        bonus:
                          - quantity: 1
                            name: Xsolla Minigun
                            image_url: >-
                              https://cdn.xsolla.net/img/misc/images/2fc5c491a47413a8e8000447889093c2.png
                            sku: com.xsolla.minigun_1
                            type: virtual_good
                    can_be_bought: true
                    vp_rewards:
                      - item_id: 175232
                        sku: com.xsolla.value_point_1
                        amount: 130
                        name: Value point
                        image_url: >-
                          https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                      - item_id: 186321
                        sku: com.xsolla.clan_value_point_1
                        amount: 50
                        name: Clan Reward VP 1
                        image_url: >-
                          https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                        is_clan: true
                    limits:
                      per_user:
                        available: 3
                        recurrent_schedule:
                          interval_type: weekly
                          reset_next_date: 1746057600
                        total: 5
                    periods:
                      - date_from: '2020-08-11T10:00:00+03:00'
                        date_until: '2020-08-11T20:00:00+03:00'
                price:
                  amount: '6150.0000000000000000'
                  amount_without_discount: '12300.0000000000000000'
                  currency: USD
                rewards:
                  bonus:
                    - item:
                        name: Sword Xsolla Skin
                        sku: com.xsolla.swords_1
                        type: virtual_good
                        virtual_item_type: non_consumable
                        description: >-
                          Honshu Boshin Wakizashi - Modern Tactical Samurai /
                          Ninja Sword - Hand Forged 1060 Carbon Steel - Full
                          Tang, Fully Functional, Battle Ready - Black TPR,
                          Steel Guard and Pommel.
                        image_url: >-
                          https://cdn.xsolla.net/img/misc/images/e9f2f4a634bc96ea03b5d5ceadd7c55f.png
                      quantity: 1
                  discount:
                    percent: null
                  discounted_items:
                    - sku: com.xsolla.booster_mega_1
                      discount:
                        percent: '50.00'
                  is_selectable: false
    Promotions_404-promo-code:
      description: 유효한 프로모션 코드를 입력해주세요.
      content:
        application/json:
          schema:
            properties:
              statusCode:
                type: integer
                example: 404
              errorCode:
                type: integer
                example: 4001
              errorMessage:
                type: string
                example: '[0401-9807]: Enter valid promo code.'
            type: object
    Promotions_200-promo-code-canceled:
      description: 프로모션 코드를 성공적으로 취소했습니다.
      content:
        application/json:
          schema:
            type: object
            properties:
              cart_id:
                type: string
                example: cart_id
                description: 장바구니 ID입니다.
              price:
                type:
                  - object
                  - 'null'
                properties:
                  amount:
                    type: string
                    default: '50.0000000000000000'
                  amount_without_discount:
                    type: string
                    default: '100.0000000000000000'
                  currency:
                    type: string
                    default: USD
                example:
                  amount: '6150.0000000000000000'
                  amount_without_discount: '6150.0000000000000000'
                  currency: USD
                description: 장바구니 가격입니다.
              is_free:
                $ref: '#/components/schemas/value-is_free'
              items:
                type: array
                items:
                  type: object
                  properties:
                    sku:
                      type: string
                    groups:
                      type: array
                      items:
                        type: object
                        properties:
                          external_id:
                            type: string
                          name:
                            type: string
                    name:
                      type:
                        - string
                        - 'null'
                    type:
                      type: string
                    virtual_item_type:
                      type: string
                      example: non-consumable
                      description: >-
                        가상 아이템의 유형입니다.


                        사용 가능한 값: - `consumable` - 사용 후 인벤토리에서 사라지는 아이템(예: 탄약).
                        - `non_consumable` - 인벤토리에 무기한으로 남아 있는 아이템. -
                        `non_renewing_subscription` - 일정 기간 동안 서비스나 콘텐츠에 대한 이용
                        권한을 나타낼 수 있는 기간 한정 아이템.
                      enum:
                        - consumable
                        - non_consumable
                        - non_renewing_subscription
                    virtual_prices:
                      type: array
                    description:
                      type: string
                    attributes:
                      $ref: '#/components/schemas/client-attributes'
                    image_url:
                      type: string
                    quantity:
                      type: integer
                    is_free:
                      $ref: '#/components/schemas/value-is_free'
                    price:
                      type:
                        - object
                        - 'null'
                      description: 아이템 가격입니다.
                      properties:
                        amount:
                          type: string
                          example: '2.9900'
                          description: 할인된 아이템 가격입니다.
                        amount_without_discount:
                          type: string
                          example: '2.9900'
                          description: 아이템 가격입니다.
                        currency:
                          type: string
                          example: USD
                          description: >-
                            아이템 가격 통화입니다. [ISO
                            4217](https://en.wikipedia.org/wiki/ISO_4217)에 따른
                            3자리 코드입니다.
                    promotions:
                      $ref: '#/components/schemas/Catalog_item_promotions'
                    can_be_bought:
                      $ref: '#/components/schemas/Can_be_bought'
                    vp_rewards:
                      $ref: '#/components/schemas/client-item-value-point-reward'
                    limits:
                      $ref: '#/components/schemas/Catalog_item_limits'
                    periods:
                      $ref: '#/components/schemas/item-periods'
                example:
                  - attributes: []
                    description: >-
                      Take it, take it all! All of Xsolla's riches in one Mega
                      Booster.
                    groups:
                      - external_id: powerups
                        name: Power Ups
                    image_url: >-
                      https://cdn.xsolla.net/img/misc/images/e9f2f4a634bc96ea03b5d5ceadd7c55f.png
                    is_free: false
                    name: Xsolla Booster Mega
                    price:
                      amount: '50.0000000000000000'
                      amount_without_discount: '100.0000000000000000'
                      currency: USD
                    quantity: 123
                    sku: com.xsolla.booster_mega_1
                    type: virtual_good
                    virtual_item_type: consumable
                    virtual_prices: []
                    promotions:
                      - name: Bonus promotion
                        date_start: '2020-04-15T16:16:00+03:00'
                        date_end: '2026-04-15T16:16:00+03:00'
                        discount:
                          percent: '50.00'
                        bonus:
                          - quantity: 1
                            name: Xsolla Minigun
                            image_url: >-
                              https://cdn.xsolla.net/img/misc/images/2fc5c491a47413a8e8000447889093c2.png
                            sku: com.xsolla.minigun_1
                            type: virtual_good
                    can_be_bought: true
                    vp_rewards:
                      - item_id: 175232
                        sku: com.xsolla.value_point_1
                        amount: 130
                        name: Value point
                        image_url: >-
                          https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                      - item_id: 186321
                        sku: com.xsolla.clan_value_point_1
                        amount: 50
                        name: Clan Reward VP 1
                        image_url: >-
                          https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                        is_clan: true
                    limits:
                      per_user:
                        available: 3
                        recurrent_schedule:
                          interval_type: weekly
                          reset_next_date: 1746057600
                        total: 5
                    periods:
                      - date_from: '2020-08-11T10:00:00+03:00'
                        date_until: '2020-08-11T20:00:00+03:00'
          examples:
            response:
              value:
                cart_id: cart_id
                is_free: false
                items:
                  - attributes: []
                    description: >-
                      Take it, take it all! All of Xsolla's riches in one Mega
                      Booster.
                    groups:
                      - external_id: powerups
                        name: Power Ups
                    image_url: >-
                      https://cdn.xsolla.net/img/misc/images/e9f2f4a634bc96ea03b5d5ceadd7c55f.png
                    is_free: false
                    name: Xsolla Booster Mega
                    price:
                      amount: '50.0000000000000000'
                      amount_without_discount: '100.0000000000000000'
                      currency: USD
                    quantity: 123
                    sku: com.xsolla.booster_mega_1
                    type: virtual_good
                    virtual_item_type: consumable
                    virtual_prices: []
                    promotions:
                      - name: Bonus promotion
                        date_start: '2020-04-15T16:16:00+03:00'
                        date_end: '2026-04-15T16:16:00+03:00'
                        discount:
                          percent: '50.00'
                        bonus:
                          - quantity: 1
                            name: Xsolla Minigun
                            image_url: >-
                              https://cdn.xsolla.net/img/misc/images/2fc5c491a47413a8e8000447889093c2.png
                            sku: com.xsolla.minigun_1
                            type: virtual_good
                    can_be_bought: true
                    vp_rewards:
                      - item_id: 175232
                        sku: com.xsolla.value_point_1
                        amount: 130
                        name: Value point
                        image_url: >-
                          https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                      - item_id: 186321
                        sku: com.xsolla.clan_value_point_1
                        amount: 50
                        name: Clan Reward VP 1
                        image_url: >-
                          https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                        is_clan: true
                    limits:
                      per_user:
                        available: 3
                        recurrent_schedule:
                          interval_type: weekly
                          reset_next_date: 1746057600
                        total: 5
                    periods:
                      - date_from: '2020-08-11T10:00:00+03:00'
                        date_until: '2020-08-11T20:00:00+03:00'
                price:
                  amount: '6150.0000000000000000'
                  amount_without_discount: '6150.0000000000000000'
                  currency: USD
    Promotions_422-cancel-promo-code:
      description: 잘못된 요청입니다.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 422
              errorCode:
                type: integer
                example: 1102
              errorMessage:
                type: string
                example: >-
                  [0401-1102]: Unprocessable Entity. The property `id` is
                  required
              transactionId:
                type: string
                example: x-x-x-x-transactionId-mock-x-x-x
          examples:
            response:
              value:
                statusCode: 422
                errorCode: 1102
                errorMessage: >-
                  [0401-1102]: Unprocessable Entity. The property `id` is
                  required
    Promotions_200-promocode-rewards:
      description: 프로모션 코드 보상 목록을 성공적으로 수신했습니다.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Promo_code_rewards'
          examples:
            response:
              $ref: '#/components/examples/Promotions_200-get-promocode-rewards'
    Promotions_200-get-promocodes:
      description: 프로모션 코드 목록을 성공적으로 수신했습니다.
      content:
        application/json:
          schema:
            type: object
            properties:
              items:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/Promotions_200-get-promocode-promotion-model
              total_promotions_count:
                $ref: '#/components/schemas/total_promotions_count'
              active_promotions_count:
                $ref: '#/components/schemas/active_promotions_count'
              inactive_promotions_count:
                $ref: '#/components/schemas/inactive_promotions_count'
          examples:
            response:
              $ref: '#/components/examples/Promotions_200-admin-promocodes'
    Promotions_200-promocode-code-list:
      description: 프로모션 코드용 코드 목록을 성공적으로 수신했습니다.
      content:
        application/json:
          schema:
            type: object
            properties:
              codes:
                type: array
                items:
                  type: object
                  properties:
                    code:
                      $ref: '#/components/schemas/Promotions_coupon_code'
              total_count:
                type: number
                description: 프로모션 코드의 총 코드 개수입니다.
          examples:
            response:
              $ref: '#/components/examples/Promotions_200-coupon-code-list'
    Promotions_200-get-item-promotions:
      description: 아이템 프로모션 목록을 성공적으로 접수했습니다.
      content:
        application/json:
          schema:
            type: object
            properties:
              promotions:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: integer
                      description: 프로모션 ID입니다. 프로젝트 내부의 고유 프로모션 식별자입니다.
                    promotion_periods:
                      $ref: '#/components/schemas/promotion_periods'
                    is_enabled:
                      $ref: '#/components/schemas/Promotions_is_enabled'
                    name:
                      type: object
                      description: >-
                        프로모션의 이름입니다. 키/값 쌍을 포함해야 합니다. 여기에서 키는
                        "^[a-z]{2}-[A-Z]{2}$" 형식의 로케일이며 값은 문자열입니다.
                      additionalProperties:
                        type: string
                      example:
                        en-US: Promotion
                        ru-RU: Акция
                    discount:
                      type: object
                      properties:
                        percent:
                          type:
                            - string
                            - 'null'
                          description: |-
                            퍼센트 할인입니다.
                            이 퍼센트를 사용하여 계산한 값을 사용하면 아이템의 가격이 낮아지게 됩니다.
                          default: '10.00'
                    items:
                      type:
                        - array
                        - 'null'
                      items:
                        description: 할인 대상 아이템 목록입니다.
                        type: object
                        properties:
                          sku:
                            type:
                              - string
                              - 'null'
                            description: 아이템 SKU입니다.
                            default: elven_sword
                    attribute_conditions:
                      $ref: >-
                        #/components/schemas/promotion_user-attribute_conditions_model-get
                    limits:
                      $ref: >-
                        #/components/schemas/Promotions_promotion_limits_response
                    excluded_promotions:
                      $ref: '#/components/schemas/excluded_promotions'
                    price_conditions:
                      $ref: '#/components/schemas/price_conditions_discount'
              total_promotions_count:
                $ref: '#/components/schemas/total_promotions_count'
              active_promotions_count:
                $ref: '#/components/schemas/active_promotions_count'
              inactive_promotions_count:
                $ref: '#/components/schemas/inactive_promotions_count'
          examples:
            response:
              value:
                promotions:
                  - id: 1
                    promotion_periods:
                      - date_from: '2020-04-15T18:16:00+05:00'
                        date_until: '2020-04-25T18:16:00+05:00'
                      - date_from: '2020-05-15T18:16:00+05:00'
                        date_until: '2020-05-25T18:16:00+05:00'
                    is_enabled: true
                    discount:
                      percent: '20.00'
                    items:
                      - sku: com.xsolla.elven_sword_1
                    name:
                      en-US: Promotion
                      ru-RU: Акция
                    limits:
                      per_user: null
                      per_item: null
                      recurrent_schedule: null
                  - id: 2
                    promotion_periods:
                      - date_from: '2020-04-15T18:16:00+05:00'
                        date_until: '2020-04-25T18:16:00+05:00'
                    is_enabled: true
                    discount:
                      percent: '10.00'
                    items:
                      - sku: com.xsolla.elven_helmet_1
                      - sku: com.xsolla.elven_armor_1
                    name:
                      en-US: Promotion
                      ru-RU: Акция
                    limits:
                      per_user:
                        total: 10
                      per_item: null
                      recurrent_schedule:
                        per_user:
                          interval_type: daily
                          time: 11:00:00+08:00
                          reset_next_date: 1677553200
                          displayable_reset_start_date: '2023-02-28T11:00:00+08:00'
                          displayable_reset_next_date: '2023-02-28T11:00:00+08:00'
                    excluded_promotions:
                      - 1
                      - 3
                  - id: 3
                    promotion_periods:
                      - date_from: '2020-04-15T18:16:00+05:00'
                        date_until: '2020-04-25T18:16:00+05:00'
                    is_enabled: true
                    discount:
                      percent: '10.00'
                    items:
                      - sku: com.xsolla.elven_helmet_2
                      - sku: com.xsolla.elven_armor_2
                    name:
                      en-US: Promotion
                      ru-RU: Акция
                    limits:
                      per_user:
                        total: 10
                      per_item: null
                      recurrent_schedule:
                        per_user:
                          interval_type: daily
                          time: 11:00:00+08:00
                          reset_next_date: 1677553200
                          displayable_reset_start_date: '2023-02-28T11:00:00+08:00'
                          displayable_reset_next_date: '2023-02-28T11:00:00+08:00'
                    price_conditions:
                      - operator: gt
                        value: '10.0000'
                      - operator: lt
                        value: '20.0000'
                  - id: 4
                    promotion_periods:
                      - date_from: '2020-04-15T18:16:00+05:00'
                        date_until: '2020-04-25T18:16:00+05:00'
                    is_enabled: true
                    discount:
                      percent: '10.00'
                    items: null
                    name:
                      en-US: Promotion
                      ru-RU: Акция
                    limits:
                      per_user:
                        total: 10
                      per_item: null
                      recurrent_schedule:
                        per_user:
                          interval_type: daily
                          time: 11:00:00+08:00
                          reset_next_date: 1677553200
                          displayable_reset_start_date: '2023-02-28T11:00:00+08:00'
                          displayable_reset_next_date: '2023-02-28T11:00:00+08:00'
                    price_conditions:
                      - operator: lt
                        value: '20.0000'
                total_promotions_count: 4
                active_promotions_count: 4
                inactive_promotions_count: 0
    Promotions_201-create-promotion:
      description: 프로모션을 성공적으로 생성했습니다.
      content:
        application/json:
          schema:
            type: object
            properties:
              promotion_id:
                type: integer
                description: 프로모션 ID입니다. 프로젝트 내부의 고유 프로모션 식별자입니다.
          examples:
            response:
              value:
                promotion_id: 2384756
    Promotions_422-admin-promotion-missed-items-property:
      description: 잘못된 요청입니다.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 422
              errorCode:
                type: integer
                example: 1102
              errorMessage:
                type: string
                example: >-
                  [0401-1102]:  Unprocessable Entity. The property `items` is
                  required
              transactionId:
                type: string
                example: x-x-x-x-transactionId-mock-x-x-x
          examples:
            response:
              value:
                statusCode: 422
                errorCode: 1102
                errorMessage: >-
                  [0401-1102]: Unprocessable Entity. The property `items` is
                  required
                transactionId: x-x-x-x-transactionId-mock-x-x-x
    Promotions_404-admin-promotion:
      description: 프로모션을 찾을 수 없습니다. `promotion_id`가 올바른지 확인해야 합니다.
      content:
        application/json:
          schema:
            properties:
              statusCode:
                type: integer
                example: 404
              errorCode:
                type: integer
                example: 9502
              errorMessage:
                type: string
                example: >-
                  [0401-9502]: Can not find promotion with ID = 111425 in
                  project 59080
            type: object
          examples:
            response:
              value:
                statusCode: 404
                errorCode: 9502
                errorMessage: >-
                  [0401-9502]: Can not find promotion with ID = 111425 in
                  project 59080
    Promotions_200-get-bonus-promotions:
      description: 보너스 프로모션 목록을 성공적으로 수신했습니다.
      content:
        application/json:
          schema:
            type: object
            properties:
              promotions:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/Promotions_200-get-bonus-promotion-model
              total_promotions_count:
                $ref: '#/components/schemas/total_promotions_count'
              active_promotions_count:
                $ref: '#/components/schemas/active_promotions_count'
              inactive_promotions_count:
                $ref: '#/components/schemas/inactive_promotions_count'
          examples:
            response:
              value:
                promotions:
                  - id: 1
                    promotion_periods:
                      - date_from: '2020-04-15T18:16:00+05:00'
                        date_until: '2020-04-25T18:16:00+05:00'
                      - date_from: '2020-05-15T18:16:00+05:00'
                        date_until: '2020-05-25T18:16:00+05:00'
                    name:
                      en-US: New Year Bonus
                      de-DE: Neujahrsbonus
                    is_enabled: true
                    condition:
                      - sku: com.xsolla.elven_boots_1
                      - sku: com.xsolla.elven_knife_1
                    bonus:
                      - sku: com.xsolla.elven_sword_1
                        quantity: 1
                      - sku: com.xsolla.elven_shield_1
                        quantity: 2
                      - sku: com.xsolla.elven_gloves_1
                        quantity: 2
                    limits:
                      per_user: null
                      per_item: null
                      recurrent_schedule: null
                  - id: 2
                    promotion_periods:
                      - date_from: '2020-04-15T18:16:00+05:00'
                        date_until: '2020-04-25T18:16:00+05:00'
                    name:
                      en-US: Summer season bonus
                      de-DE: Sommersaison Bonus
                    is_enabled: true
                    condition: null
                    bonus:
                      - sku: com.xsolla.diamonds_1
                        quantity: 100
                    limits:
                      per_user:
                        total: 10
                      per_item: null
                      recurrent_schedule:
                        per_user:
                          interval_type: daily
                          time: 11:00:00+08:00
                          reset_next_date: 1677553200
                          displayable_reset_start_date: '2023-02-28T11:00:00+08:00'
                          displayable_reset_next_date: '2023-02-28T11:00:00+08:00'
                    price_conditions:
                      - operator: gt
                        value: '10.0000'
                      - operator: lt
                        value: '50.0000'
                    excluded_promotions:
                      - 1
                total_promotions_count: 2
                active_promotions_count: 2
                inactive_promotions_count: 0
    Promotions_422-admin-promotion-missed-bonus-property:
      description: 잘못된 요청입니다.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 422
              errorCode:
                type: integer
                example: 1102
              errorMessage:
                type: string
                example: >-
                  [0401-1102]:  Unprocessable Entity. The property `bonus` is
                  required
              transactionId:
                type: string
                example: x-x-x-x-transactionId-mock-x-x-x
          examples:
            response:
              value:
                statusCode: 422
                errorCode: 1102
                errorMessage: >-
                  [0401-1102]: Unprocessable Entity. The property `bonus` is
                  required
                transactionId: x-x-x-x-transactionId-mock-x-x-x
    Promotions_200-admin-get-bonus-promotion:
      description: 보너스 프로모션을 성공적으로 수신했습니다.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Promotions_200-get-bonus-promotion-model'
          examples:
            response:
              value:
                id: 1
                promotion_periods:
                  - date_from: '2020-04-15T18:16:00+05:00'
                    date_until: '2020-04-25T18:16:00+05:00'
                name:
                  en-US: New Year Bonus
                  de-DE: Neujahrsbonus
                is_enabled: true
                condition:
                  - sku: com.xsolla.elven_boots_1
                  - sku: com.xsolla.elven_knife_1
                bonus:
                  - sku: com.xsolla.elven_sword_1
                    quantity: 1
                  - sku: com.xsolla.elven_shield_1
                    quantity: 2
                  - sku: com.xsolla.elven_gloves_1
                    quantity: 2
                limits:
                  per_user:
                    total: 10
                  per_item: null
                  recurrent_schedule:
                    per_user:
                      interval_type: daily
                      time: 11:00:00+08:00
                      reset_next_date: 1677553200
                      displayable_reset_start_date: '2023-02-28T11:00:00+08:00'
                      displayable_reset_next_date: '2023-02-28T11:00:00+08:00'
                excluded_promotions:
                  - 23
                  - 45
                price_conditions:
                  - operator: gt
                    value: '10.0000'
                  - operator: lt
                    value: '50.0000'
    Promotions_200-verify-promo-code:
      description: 코드에 대한 정보입니다.
      content:
        application/json:
          schema:
            type: object
            properties:
              type:
                type: string
                description: '코드 유형: `promocode`/`coupon`.'
              code:
                $ref: '#/components/schemas/Promotions_coupon_code'
              rewards:
                oneOf:
                  - $ref: '#/components/schemas/Coupon_rewards'
                  - $ref: '#/components/schemas/Promo_code_rewards_verify'
          examples:
            coupon info:
              value:
                type: coupon
                code: WINTER2023
                rewards:
                  bonus:
                    - item:
                        sku: com.xsolla.game_1
                        name: Game name
                        type: unit
                        description: Game description
                        image_url: >-
                          https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png
                        unit_items:
                          - sku: com.xsolla.game_key_01
                            name: Game name
                            type: game_key
                            is_free: false
                            drm_name: Steam
                            drm_sku: steam_key_1
                          - sku: com.xsolla.game_key_02
                            name: Game name
                            type: game_key
                            drm_name: Origin
                            drm_sku: origin_key_1
                      quantity: 1
                    - item:
                        sku: com.xsolla.game_2
                        name: Game name
                        type: unit
                        description: Game description
                        image_url: >-
                          https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png
                        unit_items:
                          - sku: com.xsolla.game_key_01
                            type: game_key
                            name: Game name
                            drm_name: Steam
                            drm_sku: steam_key_1
                      quantity: 2
                  is_selectable: true
            promocode info:
              value:
                type: promocode
                code: SUMMER2023
                rewards:
                  bonus:
                    - item:
                        sku: com.xsolla.game_2
                        name: Game name
                        type: unit
                        description: Game description
                        image_url: >-
                          https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png
                        unit_items:
                          - sku: com.xsolla.game_key_01
                            type: game_key
                            name: Game name
                            drm_name: Steam
                            drm_sku: steam_key_1
                      quantity: 2
                  discount:
                    percent: '10.00'
                  discounted_items:
                    - sku: com.xsolla.elven_sword_1
                      name: Elven sword
                      type: virtual_good
                      description: sword
                      image_url: null
                      discount:
                        percent: '10.00'
                  is_selectable: true
    Promotions_404-verify-promo-code:
      description: 코드를 찾을 수 없습니다. `code` 값이 올바른지 확인해 주세요.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 404
              errorCode:
                type: integer
                example: 9811
              errorMessage:
                type: string
                example: '[0401-9811]: Code not found.'
              transactionId:
                type: string
                example: x-x-x-x-transactionId-mock-x-x-x
    Promotions_422-verify-promo-code:
      description: 잘못된 코드 프로모션입니다.
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: integer
              statusCode:
                type: integer
              errorMessage:
                type: string
          examples:
            code redemption limit:
              value:
                errorCode: 9804
                statusCode: 422
                errorMessage: '[0401-9804]: You have reached the coupon redemption limit.'
            regionally restricted:
              value:
                errorCode: 9808
                statusCode: 422
                errorMessage: '[0401-9808]: Coupon is not available in your region.'
    Promotions_200-get-unique-catalog-offers:
      description: 쿠폰 목록을 성공적으로 수신했습니다.
      content:
        application/json:
          schema:
            type: object
            properties:
              items:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/Promotions_200-get-unique-catalog-offer-promotion-model
              total_promotions_count:
                $ref: '#/components/schemas/total_promotions_count'
              active_promotions_count:
                $ref: '#/components/schemas/active_promotions_count'
              inactive_promotions_count:
                $ref: '#/components/schemas/inactive_promotions_count'
          examples:
            response:
              $ref: '#/components/examples/Promotions_200-admin-unique-catalog-offers'
    Promotions_200-unique-catalog-offer-code-list:
      description: 고유 카탈로그 혜택용 코드 목록을 성공적으로 수신했습니다.
      content:
        application/json:
          schema:
            type: object
            properties:
              codes:
                type: array
                items:
                  type: object
                  properties:
                    code:
                      $ref: '#/components/schemas/Promotions_coupon_code'
              total_count:
                type: number
                description: 고유 카탈로그 혜택 코드의 총 개수입니다.
          examples:
            response:
              $ref: '#/components/examples/Promotions_200-coupon-code-list'
    200-admin-get-user-promo-code-limits:
      description: 사용자에 대한 프로모션 코드 제한 사항을 성공적으로 수신했습니다.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/User-limit-promo-code'
          examples:
            response:
              value:
                per_user:
                  total: 10
                  available: 9
    Common_401-invalid-basic-auth:
      description: >-
        기본 인증 자격 증명이 제공되지 않았거나 올바르지 않습니다. 기본 인증을 사용하고 있는지 확인하고 자격 증명이 올바른지 확인해
        주세요.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 401
              errorCode:
                type: integer
                example: 1020
              errorMessage:
                type: string
                example: '[0401-1020]: Error in Authentication method occurred'
          examples:
            response:
              value:
                statusCode: 401
                errorCode: 1020
                errorMessage: '[0401-1020]: Error in Authentication method occurred'
    200-admin-get-user-coupon-limits:
      description: 사용자에 대한 쿠폰 제한 사항을 성공적으로 수신했습니다.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/User-limit-coupon'
          examples:
            response:
              value:
                per_user:
                  total: 10
                  available: 9
    200-admin-get-code-promo-code-limits:
      description: 코드에 대한 프로모션 코드 제한 사항을 성공적으로 수신했습니다.
      content:
        application/json:
          schema:
            type: object
            properties:
              promotion_id:
                type: integer
                description: 프로모션 ID입니다. 프로젝트 내부의 고유 프로모션 식별자입니다.
              items:
                type: array
                items:
                  $ref: '#/components/schemas/Code-limit-promo-code'
              total_items_count:
                type: number
                description: 총 코드 개수입니다.
              has_more:
                type: boolean
                description: 코드가 존재하는 다른 페이지가 있는 경우입니다.
          examples:
            response:
              $ref: '#/components/examples/code-limit'
    200-admin-get-code-coupon-limits:
      description: 코드에 대한 쿠폰 제한 사항을 성공적으로 수신했습니다.
      content:
        application/json:
          schema:
            type: object
            properties:
              promotion_id:
                type: integer
                description: 프로모션 ID입니다. 프로젝트 내부의 고유 프로모션 식별자입니다.
              items:
                type: array
                items:
                  $ref: '#/components/schemas/Code-limit-promo-code'
              total_items_count:
                type: number
                description: 총 코드 개수입니다.
              has_more:
                type: boolean
                description: 코드가 존재하는 다른 페이지가 있는 경우입니다.
          examples:
            response:
              $ref: '#/components/examples/code-limit'
    Common_401-complex:
      description: 인증이 통과되지 않았거나 잘못되었습니다. 인증 또는 올바른 자격 증명을 사용했는지 확인해야 합니다.
      content:
        application/json:
          schema:
            properties:
              statusCode:
                type: integer
                example: 401
              errorCode:
                type: integer
                example: 1501
              errorMessage:
                type: string
                example: >-
                  [0401-1501]: Authorization failed: Authorization header not
                  sent
              transactionId:
                type: string
                example: x-x-x-x-transactionId-mock-x-x-x
            type: object
          examples:
            Authorization header not sent:
              $ref: '#/components/examples/401-complex-auth-header-not-found'
            Incorrect credentials:
              $ref: '#/components/examples/401-complex-auth-incorrect-credentials'
    403-auth-header-not-sent:
      description: 인증 헤더가 전송되지 않았습니다.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 403
              errorCode:
                type: integer
                example: 0
              errorMessage:
                type: string
                example: Authorization header not sent.
              transactionId:
                type: string
                example: x-x-x-x-transactionId-mock-x-x-x
          examples:
            response:
              value:
                statusCode: 403
                errorCode: 0
                errorMessage: Authorization header not sent
    Common_422-body-validation:
      description: 요청 유효성 검사 오류입니다.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/422-invalid-request'
          examples:
            response:
              value:
                statusCode: 422
                errorCode: 1102
                errorMessage: >-
                  [0401-1102]: Unprocessable Entity. The property `name` is
                  required
                transactionId: da145238620011eb8e24fe6913ff226a
    200-admin-get-user-promotion-limits:
      description: 사용자 한 명에 대한 프로모션 제한 설정을 성공적으로 수신했습니다.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/User-limit-promotion'
          examples:
            response:
              value:
                per_user:
                  total: 10
                  available: 9
    200-admin-get-value-points:
      description: 가치 포인트 목록을 성공적으로 수신했습니다.
      content:
        application/json:
          examples:
            response:
              $ref: >-
                #/components/examples/200-value-points-reward-chain_admin_get-value-point-list
          schema:
            type: object
            properties:
              items:
                type: array
                items:
                  $ref: '#/components/schemas/Value-points-item-model'
    201-admin-create-value-point:
      description: 가치 포인트를 성공적으로 생성했습니다.
      content:
        application/json:
          examples:
            response:
              value:
                sku: com.xsolla.item_new
                item_id: 10
          schema:
            type: object
            properties:
              sku:
                type: string
                example: new-sku
              item_id:
                type: integer
                example: 10
    422-admin-create-update-rc-vp-invalid-request:
      description: 잘못된 요청입니다.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/422-rc-vp-invalid-request'
          examples:
            The property `sku` is required:
              $ref: '#/components/examples/422-property-sku-is-required'
    200-admin-get-value-point:
      description: 지정한 가치 포인트를 성공적으로 수신했습니다.
      content:
        application/json:
          examples:
            response:
              $ref: >-
                #/components/examples/200-value-points-reward-chain_admin_get-value-point
          schema:
            $ref: '#/components/schemas/Value-point-item-model'
    200-admin-get-list-value-point-rewards:
      description: 가치 포인트 보상이 있는 아이템 목록을 성공적으로 수신했습니다.
      content:
        application/json:
          examples:
            response:
              $ref: '#/components/examples/200-value-points-rewards-list'
          schema:
            type: object
            properties:
              items:
                type: array
                items:
                  $ref: '#/components/schemas/admin-item-value-point-reward'
    sellable-item-by-sku_404:
      description: 아이템을 찾을 수 없습니다. `project_id`과 `sku`가 올바른지 확인해야 합니다.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 404
              errorCode:
                type: integer
                example: 4001
              errorMessage:
                type: string
                example: '[0401-4001]: Item with sku = ''electric_shiel'' not found'
    200-client-get-reward-chains-list:
      description: 사용자의 보상 체인 검색을 성공적으로 완료했습니다.
      content:
        application/json:
          examples:
            response:
              $ref: '#/components/examples/200-client-get-reward-chains-list'
          schema:
            type: object
            properties:
              has_more:
                type: boolean
                example: true
                description: 페이지가 더 있다는 표시로 사용됩니다.
              total_items_count:
                type: integer
                example: 10
                description: 시스템에 있는 보상 체인의 총 수량입니다.
              items:
                type: array
                items:
                  $ref: '#/components/schemas/client-reward-chain-item-model'
    200-client-get-user-reward-chain-balance:
      description: 사용자의 가치 포인트 잔액 검색을 성공적으로 완료했습니다.
      content:
        application/json:
          examples:
            common:
              $ref: '#/components/examples/200-client-get-user-reward-chain-balance'
            clan:
              $ref: >-
                #/components/examples/200-client-get-user-clan-reward-chain-balance
          schema:
            type: object
            properties:
              sku:
                $ref: '#/components/schemas/value-point-sku'
              name:
                $ref: '#/components/schemas/value-point-name'
              image_url:
                $ref: '#/components/schemas/Common_admin-image_url'
              description:
                $ref: '#/components/schemas/value-point-description'
              long_description:
                $ref: '#/components/schemas/value-point-long-description'
              amount:
                type: integer
                description: 가치 포인트 수량입니다.
              is_clan:
                $ref: '#/components/schemas/is_clan'
    404-reward-chain-step-not-found:
      description: 보상 체인 단계를 찾을 수 없습니다.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 404
              errorCode:
                type: integer
                example: 9911
              errorMessage:
                type: string
                example: '[0401-9911]: Reward chain step not found.'
          examples:
            response:
              value:
                statusCode: 404
                errorCode: 9911
                errorMessage: '[0401-9911]: Reward chain step not found.'
    422-reward-chain-step-reward-can-not-claimed:
      description: 단계 보상을 청구할 수 없습니다.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 422
              errorCode:
                type: integer
                example: 9912
              errorMessage:
                type: string
                example: '[0401-9912]: Can''t claim the step reward.'
          examples:
            Reward chain step reward already claimed:
              value:
                statusCode: 422
                errorCode: 9912
                errorMessage: '[0401-9912]: Reward already claimed.'
            Not enough VP to claim reward chain step reward:
              value:
                statusCode: 422
                errorCode: 9913
                errorMessage: '[0401-9913]: Not enough value points to claim step reward.'
    200-client-update-user-clan:
      description: 사용자의 클랜이 성공적으로 업데이트되었습니다.
      content:
        application/json:
          examples:
            response:
              $ref: '#/components/examples/200-client-update-user-clan'
          schema:
            type: object
            properties:
              reward:
                type: array
                items:
                  type: object
                  properties:
                    sku:
                      $ref: '#/components/schemas/sku'
                    name:
                      type: string
                      example: Super box
                      description: 아이템 이름입니다.
                    type:
                      type: string
                      example: bundle
                      description: 아이템 유형입니다.
                    description:
                      type: string
                      example: Super box with items
                      description: 아이템 설명입니다.
                    image_url:
                      $ref: '#/components/schemas/Common_admin-image_url'
                    quantity:
                      type: integer
                      example: 2
                      description: 아이템 수량입니다.
                    bundle_type:
                      type: string
                      description: 번들 유형. 아이템 유형이 번들인 경우 반환됩니다.
                      enum:
                        - standard
                        - virtual_currency_package
    200-admin-get-list-reward-chains:
      description: 보상 체인 목록을 성공적으로 수신했습니다.
      content:
        application/json:
          examples:
            response:
              $ref: '#/components/examples/200-reward-chain-list'
          schema:
            type: object
            properties:
              has_more:
                $ref: '#/components/schemas/Pagination_has-more'
              items:
                type: array
                items:
                  oneOf:
                    - $ref: >-
                        #/components/schemas/admin-get-reward-chain-item-basic-model
                    - $ref: >-
                        #/components/schemas/admin-get-reward-chain-item-clan-basic-model
    201-admin-create-reward-chain:
      description: 보상 체인을 성공적으로 생성했습니다.
      content:
        application/json:
          examples:
            response:
              value:
                reward_chain_id: 10
          schema:
            type: object
            properties:
              reward_chain_id:
                type: integer
                example: 10
    200-admin-get-reward-chain:
      description: 지정된 보상 체인을 성공적으로 수신했습니다.
      content:
        application/json:
          examples:
            common:
              $ref: '#/components/examples/200-reward-chain'
            clan:
              $ref: '#/components/examples/200-clan-reward-chain'
          schema:
            oneOf:
              - $ref: '#/components/schemas/admin-get-reward-chain-item-full-model'
              - $ref: >-
                  #/components/schemas/admin-get-reward-chain-item-clan-full-model
    404-admin-reward-chain-not-found:
      description: 보상 체인을 찾을 수 없습니다.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 404
              errorCode:
                type: integer
                example: 4001
              errorMessage:
                type: string
                example: '[0401-4001]: Reward chain not found'
          examples:
            response:
              value:
                statusCode: 404
                errorCode: 9901
                errorMessage: '[0401-4001]: Reward chain not found'
    204-admin-update-reward-chain:
      description: 보상 체인을 성공적으로 업데이트했습니다.
      content: {}
    204-admin-delete-reward-chain:
      description: 보상 체인을 성공적으로 삭제했습니다.
      content: {}
    204-admin-toggle-reward-chain:
      description: 보상 체인이 비활성화/활성화되었습니다.
      content: {}
    204-admin-reset-reward-chain:
      description: 보상 체인이 재설정되었습니다.
      content: {}
    200-admin-get-list-daily-chains:
      description: 일일 보상 목록이 성공적으로 검색되었습니다.
      content:
        application/json:
          examples:
            response:
              $ref: '#/components/examples/200-admin-daily-chain-list'
          schema:
            type: object
            properties:
              has_more:
                $ref: '#/components/schemas/Pagination_has-more'
              total_items_count:
                type: integer
                example: 3
                description: 일일 보상의 총 개수입니다.
              items:
                type: array
                items:
                  $ref: '#/components/schemas/admin-daily-chain-short-model'
    201-admin-create-daily-chain:
      description: 일일 보상을 성공적으로 생성했습니다.
      content:
        application/json:
          examples:
            response:
              value:
                daily_chain_id: 10
          schema:
            type: object
            properties:
              daily_chain_id:
                type: integer
                example: 10
    422-admin-create-error-list:
      description: 잘못된 일일 보상 구성 오류입니다.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/daily-chain-error-model'
          examples:
            too-many-steps-error:
              $ref: '#/components/examples/422-admin-daily-chain-error-too-many-steps'
            incorrect-steps-order-error:
              $ref: >-
                #/components/examples/422-admin-daily-chain-error-incorrect-steps-order
            item-limit-exceeded:
              $ref: >-
                #/components/examples/422-admin-daily-chain-error-item-limit-exceeded
            incorrect-items:
              $ref: >-
                #/components/examples/422-admin-daily-chain-error-incorrect-items
            invalid-dates:
              $ref: '#/components/examples/422-admin-daily-chain-error-invalid-dates'
            incorrect-period:
              $ref: >-
                #/components/examples/422-admin-daily-chain-error-incorrect-period
    200-admin-get-daily-chain:
      description: 일일 보상 데이터를 성공적으로 조회했습니다.
      content:
        application/json:
          examples:
            response:
              $ref: '#/components/examples/200-admin-daily-chain'
          schema:
            $ref: '#/components/schemas/admin-daily-chain-long-model'
    404-daily-chain-not-found:
      description: 일일 보상을 찾을 수 없습니다.
      content:
        application/json:
          examples:
            not-found:
              $ref: '#/components/examples/404-daily-chain-not-found'
          schema:
            $ref: '#/components/schemas/daily-chain-error-model'
    422-admin-update-error-list:
      description: 잘못된 일일 보상 구성 오류입니다.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/daily-chain-error-model'
          examples:
            too-many-steps-error:
              $ref: '#/components/examples/422-admin-daily-chain-error-too-many-steps'
            incorrect-steps-order-error:
              $ref: >-
                #/components/examples/422-admin-daily-chain-error-incorrect-steps-order
            item-limit-exceeded:
              $ref: >-
                #/components/examples/422-admin-daily-chain-error-item-limit-exceeded
            incorrect-items:
              $ref: >-
                #/components/examples/422-admin-daily-chain-error-incorrect-items
            invalid-dates:
              $ref: '#/components/examples/422-admin-daily-chain-error-invalid-dates'
            incorrect-period:
              $ref: >-
                #/components/examples/422-admin-daily-chain-error-incorrect-period
            invalid-chain-step-ids:
              $ref: >-
                #/components/examples/422-admin-daily-chain-error-invalid-chain-step-ids
            chain-id-mismatch:
              $ref: >-
                #/components/examples/422-admin-daily-chain-error-chain-id-mismatch
            chain-step-ids-duplication:
              $ref: >-
                #/components/examples/422-admin-daily-chain-error-duplicate-step-ids
            active-daily-chain:
              $ref: '#/components/examples/422-admin-daily-chain-error-activated'
    200-client-get-daily-chains-list:
      description: 사용자의 일일 보상이 성공적으로 검색되었습니다.
      content:
        application/json:
          examples:
            response:
              $ref: '#/components/examples/200-client-daily-chain-list'
          schema:
            type: object
            properties:
              has_more:
                type: boolean
                example: true
                description: 페이지가 더 있다는 표시로 사용됩니다.
              total_items_count:
                type: integer
                example: 3
                description: 일일 보상의 총 개수입니다.
              items:
                type: array
                items:
                  $ref: '#/components/schemas/client-daily-chain-model'
    401-client-auth-error:
      description: 인증을 통과하지 못했거나 잘못되었습니다.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 401
              errorCode:
                type: integer
                example: 1501
              errorMessage:
                type: string
                example: '[0401-1501]: Authorization failed: Provide authorization'
          examples:
            response:
              value:
                statusCode: 401
                errorCode: 1501
                errorMessage: '[0401-1501]: Authorization failed: Provide authorization'
    404-daily-chain-step-not-found:
      description: 일일 보상 또는 일일 보상 단계를 찾을 수 없습니다.
      content:
        application/json:
          examples:
            not-found:
              $ref: '#/components/examples/404-daily-chain-step-not-found'
          schema:
            $ref: '#/components/schemas/daily-chain-error-model'
    200-client-get-offer-chains-list:
      description: 혜택 체인 목록을 성공적으로 수신했습니다.
      content:
        application/json:
          examples:
            response:
              $ref: '#/components/examples/200-client-offer-chain-list'
          schema:
            type: object
            properties:
              has_more:
                type: boolean
                example: true
                description: 더 많은 페이지를 사용할 수 있는지 여부를 나타냅니다.
              total_items_count:
                type: integer
                example: 10
                description: 사용 가능한 혜택 체인의 총 개수입니다.
              items:
                type: array
                items:
                  $ref: '#/components/schemas/client-offer-chain-model'
    404-offer-chain-not-found:
      description: 혜택 체인을 찾을 수 없습니다.
      content:
        application/json:
          examples:
            not-found:
              $ref: '#/components/examples/404-offer-chain-not-found'
          schema:
            $ref: '#/components/schemas/offer-chain-error-model'
    404-offer-chain-step-not-found:
      description: 혜택 체인 또는 단계를 찾을 수 없습니다.
      content:
        application/json:
          examples:
            not-found:
              $ref: '#/components/examples/404-offer-chain-step-not-found'
          schema:
            $ref: '#/components/schemas/offer-chain-error-model'
    Cart-Payment_200-order-created:
      description: 주문을 성공적으로 생성했습니다.
      content:
        application/json:
          schema:
            type: object
            properties:
              order_id:
                type: integer
                description: 주문 ID입니다.
              token:
                type: string
                description: 결제 토큰입니다.
          examples:
            response:
              value:
                order_id: 641
                token: f4puMEFFDZcx9nv5HoNHIkPe9qghvBQo
    200-admin-get-list-offer-chains:
      description: 혜택 체인 목록이 성공적으로 검색되었습니다.
      content:
        application/json:
          examples:
            response:
              $ref: '#/components/examples/200-admin-offer-chain-list'
          schema:
            type: object
            properties:
              has_more:
                $ref: '#/components/schemas/Pagination_has-more'
              items:
                type: array
                items:
                  $ref: '#/components/schemas/admin-offer-chain-short-model'
    201-admin-create-offer-chain:
      description: 혜택 체인을 성공적으로 생성했습니다.
      content:
        application/json:
          examples:
            response:
              value:
                offer_chain_id: 10
          schema:
            type: object
            properties:
              offer_chain_id:
                type: integer
                example: 10
    422-create-error-list:
      description: 혜택 체인 구성이 잘못되었습니다.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/offer-chain-error-model'
          examples:
            too-many-steps-error:
              $ref: '#/components/examples/422-admin-offer-chain-error-too-many-steps'
            incorrect-steps-order-error:
              $ref: >-
                #/components/examples/422-admin-offer-chain-error-incorrect-steps-order
            item-limit-exceeded:
              $ref: >-
                #/components/examples/422-admin-offer-chain-error-item-limit-exceeded
            incorrect-items:
              $ref: >-
                #/components/examples/422-admin-offer-chain-error-incorrect-items
            invalid-dates:
              $ref: '#/components/examples/422-admin-offer-chain-error-invalid-dates'
            incorrect-period:
              $ref: >-
                #/components/examples/422-admin-offer-chain-error-incorrect-period
    200-admin-get-offer-chain:
      description: 혜택 체인 데이터를 성공적으로 조회했습니다.
      content:
        application/json:
          examples:
            response:
              $ref: '#/components/examples/200-admin-offer-chain'
          schema:
            $ref: '#/components/schemas/admin-offer-chain-long-model'
    422-update-error-list:
      description: 혜택 체인 구성이 잘못되었습니다.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/offer-chain-error-model'
          examples:
            too-many-steps-error:
              $ref: '#/components/examples/422-admin-offer-chain-error-too-many-steps'
            incorrect-steps-order-error:
              $ref: >-
                #/components/examples/422-admin-offer-chain-error-incorrect-steps-order
            item-limit-exceeded:
              $ref: >-
                #/components/examples/422-admin-offer-chain-error-item-limit-exceeded
            incorrect-items:
              $ref: >-
                #/components/examples/422-admin-offer-chain-error-incorrect-items
            invalid-dates:
              $ref: '#/components/examples/422-admin-offer-chain-error-invalid-dates'
            incorrect-period:
              $ref: >-
                #/components/examples/422-admin-offer-chain-error-incorrect-period
            invalid-chain-step-ids:
              $ref: >-
                #/components/examples/422-admin-offer-chain-error-invalid-chain-step-ids
            chain-id-mismatch:
              $ref: >-
                #/components/examples/422-admin-offer-chain-error-chain-id-mismatch
            chain-step-ids-duplication:
              $ref: >-
                #/components/examples/422-admin-offer-chain-error-duplicate-step-ids
            active-offer-chain:
              $ref: '#/components/examples/422-admin-offer-chain-error-activated'
    Upsell-404-item-not-found:
      description: 아이템을 찾을 수 없습니다.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 404
              errorCode:
                type: integer
                example: 4001
              errorMessage:
                type: string
                example: '[0401-4001]: Items weren''t found: sku1, sku2'
          examples:
            response:
              value:
                statusCode: 404
                errorCode: 9901
                errorMessage: '[0401-4001]: Items weren''t found: sku1, sku2'
    Upsell-422-invalid-request:
      description: 잘못된 요청입니다.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Upsell-422-invalid-request'
    Upsell-200-get-client-list:
      description: 상향 판매 아이템 목록이 성공적으로 접수되었습니다.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Upsell_item-list'
          examples:
            response:
              value:
                has_more: true
                items:
                  - sku: com.xsolla.big_rocket_1
                    name: Big Rocket
                    groups:
                      - external_id: accessory
                        name:
                          en: accessory
                    attributes:
                      - external_id: stack_size
                        name:
                          en: Quantity of items in the upsell set
                        values:
                          - external_id: size_e3364991f92e751689a68b96598a5a5a84010b85
                            value: '5'
                    type: virtual_good
                    description: Big Rocket - description
                    image_url: >-
                      https://popmedia.blob.core.windows.net/popyourself/male/outfit/male_armor_white_a-01.png
                    is_free: false
                    price:
                      amount: '100.99'
                      amount_without_discount: '100.99'
                      currency: USD
                    virtual_prices:
                      - amount: 100
                        sku: com.xsolla.vc_1
                        is_default: true
                        amount_without_discount: 100
                        image_url: http://image.png
                        name: SHOTGUN FOR TRUE RAIDERS
                        type: virtual_currency
                        description: description
                    can_be_bought: true
                    virtual_item_type: non_renewing_subscription
                    promotions:
                      - name: Bonus promotion
                        date_start: '2020-04-15T16:16:00+03:00'
                        date_end: '2026-04-15T16:16:00+03:00'
                        discount: null
                        bonus:
                          - quantity: 1
                            name: Xsolla Minigun
                            image_url: >-
                              https://cdn.xsolla.net/img/misc/images/2fc5c491a47413a8e8000447889093c2.png
                            sku: com.xsolla.minigun_1
                            type: virtual_good
                          - quantity: 1
                            sku: com.xsolla.phys_good_1
                            type: physical_good
                          - quantity: 1
                            name: Super Lootbox with items
                            image_url: >-
                              https://cdn.xsolla.net/img/misc/images/9676f06265375087e607cb79c5283688.png
                            sku: com.xsolla.SuperLootboxBundle_1
                            type: bundle
                            bundle_type: standard
                    limits:
                      per_user:
                        total: 5
                        available: 3
                        recurrent_schedule:
                          interval_type: weekly
                          reset_next_date: 1746057600
                        limit_exceeded_visibility: show
                    periods:
                      - date_from: '2020-08-11T10:00:00+03:00'
                        date_until: '2020-08-11T20:00:00+03:00'
                    custom_attributes:
                      purchased: 0
                      attr: value
                    vp_rewards: []
                  - sku: com.xsolla.shotgun_raider_1
                    name: SHOTGUN FOR TRUE RAIDERS
                    groups:
                      - external_id: weapons
                        name:
                          en: Weapons
                    attributes:
                      - external_id: stack_size
                        name:
                          en: Quantity of items in the upsell set
                        values:
                          - external_id: size_e3364991f92e751689a68b96598a5a5a84010b85
                            value: '5'
                      - external_id: rating
                        name:
                          en: Items rating
                        values:
                          - external_id: rating_e3364991f92e751689a68b96598a5a5a84010b85
                            value: '3.9'
                    type: virtual_good
                    description: description
                    image_url: http://image.png
                    is_free: false
                    price:
                      amount: '101.0'
                      amount_without_discount: '101.0'
                      currency: USD
                    virtual_prices:
                      - amount: 100
                        sku: com.xsolla.vc_2
                        is_default: true
                        amount_without_discount: 100
                        image_url: http://image.png
                        name: SHOTGUN FOR TRUE RAIDERS
                        type: virtual_currency
                        description: description
                      - amount: 200
                        sku: com.xsolla.vc_3
                        is_default: false
                        amount_without_discount: 200
                        image_url: http://image.png
                        name: SHOTGUN FOR TRUE RAIDERS
                        type: virtual_currency
                        description: description
                    can_be_bought: true
                    virtual_item_type: non_renewing_subscription
                    promotions: []
                    limits: null
                    periods:
                      - date_from: '2020-08-11T20:00:00+03:00'
                        date_until: null
                    vp_rewards: []
                  - sku: com.xsolla.shotgun_raider_2
                    name: SHOTGUN FOR TRUE RAIDERS
                    groups: []
                    attributes: []
                    type: virtual_good
                    description: description
                    image_url: http://image.png
                    is_free: true
                    price: null
                    virtual_prices: []
                    can_be_bought: true
                    virtual_item_type: non_renewing_subscription
                    promotions: []
                    limits: null
                    periods: []
                    vp_rewards: []
    200-get-point-balance:
      description: 로열티 포인트 잔액을 성공적으로 조회했습니다.
      content:
        application/json:
          schema:
            type: object
            required:
              - balance
            properties:
              balance:
                type: number
                format: double
                description: 현재 로열티 포인트 잔액.
                example: 150.5
          examples:
            response:
              value:
                balance: 150.5
    ItemGroup_401-invalid-basic-auth:
      description: 기본 인증에 실패했거나 잘못된 자격 증명이 입력되었습니다. 기본 인증을 사용하고 올바른 자격 증명을 입력했는지 확인하십시오.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error-response-base'
          examples:
            response:
              value:
                statusCode: 401
                errorCode: 1020
                errorMessage: '[0401-1020]: Error in Authentication method occurred'
                transactionId: x-x-x-x-transactionId-mock-x-x-x
    404-user-or-point-not-found:
      description: 사용자 계정 또는 로열티 포인트를 찾을 수 없습니다.
      content:
        application/json:
          schema:
            type: object
            required:
              - message_id
              - message
            properties:
              message_id:
                type: string
                description: 오류 코드.
                example: error_not_found
              message:
                type: string
                description: 간단한 오류 설명.
                example: User account or loyalty points not found.
          examples:
            response:
              value:
                message_id: error_not_found
                message: User account or loyalty points not found.
    200-debit-point-balance:
      description: 로열티 포인트 잔액이 성공적으로 차감되었습니다.
      content:
        application/json:
          schema:
            type: object
            required:
              - transaction_id
              - previous_balance
              - new_balance
              - amount
            properties:
              transaction_id:
                type: string
                format: uuid
                description: 이 요청으로 생성된 차감 트랜잭션의 ID.
                example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
              previous_balance:
                type: number
                format: double
                description: 차감 전 잔액.
                example: 150.5
              new_balance:
                type: number
                format: double
                description: 차감 후 잔액.
                example: 100.5
              amount:
                type: number
                format: double
                description: 잔액에서 차감된 금액.
                example: 50
          examples:
            response:
              value:
                transaction_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6
                previous_balance: 150.5
                new_balance: 100.5
                amount: 50
    400-bad-request:
      description: 잘못된 요청입니다. 요청에 잘못된 매개 변수가 포함되어 있습니다.
      content:
        application/json:
          schema:
            type: object
            required:
              - message_id
              - message
            properties:
              message_id:
                type: string
                description: 오류 코드.
                example: error_bad_request
              message:
                type: string
                description: 간단한 오류 설명.
                example: Invalid request body.
          examples:
            response:
              value:
                message_id: error_bad_request
                message: Invalid request body.
    422-insufficient-balance:
      description: 차감 작업에 필요한 로열티 포인트 잔액이 부족합니다.
      content:
        application/json:
          schema:
            type: object
            required:
              - message_id
              - message
            properties:
              message_id:
                type: string
                description: 오류 코드.
                example: error_bad_request
              message:
                type: string
                description: 간단한 오류 설명.
                example: Insufficient loyalty point balance.
          examples:
            response:
              value:
                message_id: error_bad_request
                message: Insufficient loyalty point balance.
    200-credit-point-balance:
      description: 로열티 포인트 잔액이 성공적으로 적립되었습니다.
      content:
        application/json:
          schema:
            type: object
            required:
              - transaction_id
              - previous_balance
              - new_balance
              - amount
            properties:
              transaction_id:
                type: string
                format: uuid
                description: 이 요청의 결과로 생성된 적립 트랜잭션의 ID.
                example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
              previous_balance:
                type: number
                format: double
                description: 적립 전 잔액.
                example: 100.5
              new_balance:
                type: number
                format: double
                description: 적립 후 잔액.
                example: 150.5
              amount:
                type: number
                format: double
                description: 잔액에 적립된 금액.
                example: 50
          examples:
            response:
              value:
                transaction_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6
                previous_balance: 100.5
                new_balance: 150.5
                amount: 50
  requestBodies:
    Promotions_redeem-coupon-model:
      content:
        application/json:
          schema:
            type: object
            properties:
              coupon_code:
                type: string
                description: 고유한 쿠폰 코드입니다. 문자와 숫자를 포함합니다.
                minLength: 1
                maxLength: 128
                example: WINTER2021
                default: WINTER2021
              selected_unit_items:
                $ref: '#/components/schemas/Promotions_selected_unit_items'
    Promotions_coupon-create:
      content:
        application/json:
          schema:
            type: object
            required:
              - external_id
              - name
            properties:
              external_id:
                $ref: '#/components/schemas/Promotions_coupon-external_id'
              promotion_periods:
                $ref: '#/components/schemas/promotion_periods'
              name:
                $ref: '#/components/schemas/Promotions_coupon_name'
              bonus:
                $ref: '#/components/schemas/Promotions_coupon_bonus'
              redeem_total_limit:
                $ref: '#/components/schemas/Promotions_coupon-redeem_total_limit'
              redeem_user_limit:
                $ref: '#/components/schemas/Promotions_coupon-redeem_user_limit'
              redeem_code_limit:
                $ref: '#/components/schemas/Promotions_redeem_code_limit'
              attribute_conditions:
                $ref: >-
                  #/components/schemas/promotion_user-attribute_conditions_model-post
          examples:
            simple:
              value:
                external_id: coupon_external_id
                promotion_periods:
                  - date_from: '2020-04-15T18:16:00+05:00'
                    date_until: '2020-04-25T18:16:00+05:00'
                  - date_from: '2020-05-15T18:16:00+05:00'
                    date_until: '2020-05-25T18:16:00+05:00'
                name:
                  en-US: New Year Bonus
                  de-DE: Neujahrsbonus
                redeem_total_limit: 100
                redeem_user_limit: 1
                redeem_code_limit: 1
                bonus:
                  - sku: com.xsolla.elven_sword_1
                    quantity: 1
            personalized:
              value:
                external_id: coupon_external_id
                promotion_periods:
                  - date_from: '2020-04-15T18:16:00+05:00'
                    date_until: '2020-04-25T18:16:00+05:00'
                name:
                  en-US: New Year Bonus
                  de-DE: Neujahrsbonus
                redeem_total_limit: 100
                redeem_user_limit: 1
                redeem_code_limit: 1
                bonus:
                  - sku: com.xsolla.elven_sword_2
                    quantity: 1
                attribute_conditions:
                  - attribute: account_status
                    type: string
                    operator: eq
                    value: golden
                    can_be_missing: false
    Promotions_coupon-update:
      content:
        application/json:
          schema:
            type: object
            required:
              - name
            properties:
              promotion_periods:
                $ref: '#/components/schemas/promotion_periods'
              name:
                $ref: '#/components/schemas/Promotions_coupon_name'
              bonus:
                $ref: '#/components/schemas/Promotions_coupon_bonus'
              redeem_total_limit:
                $ref: '#/components/schemas/Promotions_coupon-redeem_total_limit'
              redeem_user_limit:
                $ref: '#/components/schemas/Promotions_coupon-redeem_user_limit'
              redeem_code_limit:
                $ref: '#/components/schemas/Promotions_redeem_code_limit'
              attribute_conditions:
                $ref: >-
                  #/components/schemas/promotion_user-attribute_conditions_model-post
          examples:
            simple:
              value:
                promotion_periods:
                  - date_from: '2020-04-15T18:16:00+05:00'
                    date_until: '2020-04-25T18:16:00+05:00'
                  - date_from: '2020-05-15T18:16:00+05:00'
                    date_until: '2020-05-25T18:16:00+05:00'
                name:
                  en-US: New Year Bonus
                  de-DE: Neujahrsbonus
                redeem_total_limit: 100
                redeem_user_limit: 1
                redeem_code_limit: 1
                bonus:
                  - sku: com.xsolla.elven_sword_1
                    quantity: 1
            personalized:
              value:
                promotion_periods:
                  - date_from: '2020-04-15T18:16:00+05:00'
                    date_until: '2020-04-25T18:16:00+05:00'
                name:
                  en-US: New Year Bonus
                  de-DE: Neujahrsbonus
                redeem_total_limit: 100
                redeem_user_limit: 1
                redeem_code_limit: 1
                bonus:
                  - sku: com.xsolla.elven_sword_2
                    quantity: 1
                attribute_conditions:
                  - attribute: account_status
                    type: string
                    operator: eq
                    value: golden
                    can_be_missing: false
    Promotions_create-coupon-promocode-code:
      content:
        application/json:
          schema:
            type: object
            properties:
              coupon_code:
                $ref: '#/components/schemas/Promotions_coupon_code'
    Promotions_redeem-promo-code-model:
      content:
        application/json:
          schema:
            type: object
            properties:
              coupon_code:
                type: string
                description: 고유한 프로모션 코드입니다. 문자와 숫자를 포함합니다.
                minLength: 1
                maxLength: 128
                example: SUMMER2021
                default: SUMMER2021
              cart:
                type:
                  - object
                  - 'null'
                properties:
                  id:
                    type: string
                    description: 장바구니 ID입니다.
                    default: current
                required:
                  - id
              selected_unit_items:
                $ref: '#/components/schemas/Promotions_selected_unit_items'
    Promotions_cancel-promo-code-model:
      content:
        application/json:
          schema:
            type: object
            properties:
              cart:
                type:
                  - object
                  - 'null'
                properties:
                  id:
                    type: string
                    description: 장바구니 ID입니다.
                    default: current
                required:
                  - id
    Promotions_promocode-create:
      content:
        application/json:
          schema:
            type: object
            required:
              - external_id
              - name
            properties:
              external_id:
                $ref: '#/components/schemas/Promotions_coupon-external_id'
              promotion_periods:
                $ref: '#/components/schemas/promotion_periods'
              name:
                $ref: '#/components/schemas/Promotions_coupon_name'
              bonus:
                $ref: '#/components/schemas/Promotions_coupon_bonus'
              redeem_total_limit:
                $ref: '#/components/schemas/Promotions_coupon-redeem_total_limit'
              redeem_user_limit:
                $ref: '#/components/schemas/Promotions_coupon-redeem_user_limit'
              redeem_code_limit:
                $ref: '#/components/schemas/Promotions_redeem_code_limit'
              discount:
                type:
                  - object
                  - 'null'
                properties:
                  percent:
                    $ref: '#/components/schemas/Promotions_promotion_discount_percent'
                example:
                  percent: '10.10'
              discounted_items:
                $ref: '#/components/schemas/Promotions_discounted_items'
              attribute_conditions:
                $ref: >-
                  #/components/schemas/promotion_user-attribute_conditions_model-post
              price_conditions:
                $ref: '#/components/schemas/price_conditions_promocode'
              item_price_conditions:
                $ref: '#/components/schemas/item_price_conditions_promocode'
              excluded_promotions:
                $ref: '#/components/schemas/excluded_promotions'
          examples:
            simple bonus:
              value:
                external_id: promo_code_external_id
                promotion_periods:
                  - date_from: '2020-04-15T18:16:00+05:00'
                    date_until: '2020-04-25T18:16:00+05:00'
                  - date_from: '2020-05-15T18:16:00+05:00'
                    date_until: '2020-05-25T18:16:00+05:00'
                name:
                  en-US: New Year Bonus
                  de-DE: Neujahrsbonus
                redeem_total_limit: 100
                redeem_user_limit: 1
                redeem_code_limit: 1
                bonus:
                  - sku: com.xsolla.elven_sword_1
                    quantity: 1
                  - sku: com.xsolla.elven_shield_1
                    quantity: 2
                  - sku: com.xsolla.elven_gloves_1
                    quantity: 2
            simple discount:
              value:
                external_id: promo_code_external_id
                promotion_periods:
                  - date_from: '2020-04-15T18:16:00+05:00'
                    date_until: '2020-04-25T18:16:00+05:00'
                name:
                  en-US: New Year Discount
                  de-DE: Neujahrsrabatt
                redeem_total_limit: 100
                redeem_user_limit: 1
                redeem_code_limit: 1
                discount:
                  percent: '10.10'
            personalized:
              value:
                external_id: coupon_external_id
                promotion_periods:
                  - date_from: '2020-04-15T18:16:00+05:00'
                    date_until: '2020-04-25T18:16:00+05:00'
                name:
                  en-US: New Year Discount
                  de-DE: Neujahrsrabatt
                redeem_total_limit: 100
                redeem_user_limit: 1
                redeem_code_limit: 1
                discount:
                  percent: '10.10'
                attribute_conditions:
                  - attribute: account_status
                    type: string
                    operator: eq
                    value: golden
                    can_be_missing: false
            with price conditions:
              value:
                external_id: promo_code_external_id
                promotion_periods:
                  - date_from: '2020-04-15T18:16:00+05:00'
                    date_until: '2020-04-25T18:16:00+05:00'
                name:
                  en-US: New Year Bonus
                  de-DE: Neujahrsbonus
                redeem_total_limit: 100
                redeem_user_limit: 1
                redeem_code_limit: 1
                bonus:
                  - sku: com.xsolla.elven_sword_2
                    quantity: 1
                  - sku: com.xsolla.elven_shield_2
                    quantity: 2
                  - sku: com.xsolla.elven_gloves_2
                    quantity: 2
                price_conditions:
                  - operator: ge
                    value: '10.5000'
                  - operator: lt
                    value: '50.0000'
            with item price conditions:
              value:
                external_id: promo_code_external_id
                promotion_periods:
                  - date_from: '2020-04-15T18:16:00+05:00'
                    date_until: '2020-04-25T18:16:00+05:00'
                name:
                  en-US: New Year Bonus
                  de-DE: Neujahrsbonus
                redeem_total_limit: 100
                redeem_user_limit: 1
                redeem_code_limit: 1
                discount:
                  percent: '10.10'
                bonus:
                  - sku: com.xsolla.elven_sword_3
                    quantity: 1
                  - sku: com.xsolla.elven_shield_3
                    quantity: 2
                  - sku: com.xsolla.elven_gloves_3
                    quantity: 2
                item_price_conditions:
                  - operator: ge
                    value: '10.5000'
                  - operator: lt
                    value: '50.0000'
            with excluded promotions:
              value:
                external_id: coupon_external_id
                promotion_periods:
                  - date_from: '2020-04-15T18:16:00+05:00'
                    date_until: '2020-04-25T18:16:00+05:00'
                name:
                  en-US: New Year Discount
                  de-DE: Neujahrsrabatt
                redeem_total_limit: 100
                redeem_user_limit: 1
                redeem_code_limit: 1
                discount:
                  percent: '10.10'
                excluded_promotions:
                  - 12
                  - 789
    Promotions_promocode-update:
      content:
        application/json:
          schema:
            type: object
            required:
              - name
            properties:
              promotion_periods:
                $ref: '#/components/schemas/promotion_periods'
              name:
                $ref: '#/components/schemas/Promotions_coupon_name'
              bonus:
                $ref: '#/components/schemas/Promotions_coupon_bonus'
              redeem_total_limit:
                $ref: '#/components/schemas/Promotions_coupon-redeem_total_limit'
              redeem_user_limit:
                $ref: '#/components/schemas/Promotions_coupon-redeem_user_limit'
              redeem_code_limit:
                $ref: '#/components/schemas/Promotions_redeem_code_limit'
              discount:
                type:
                  - object
                  - 'null'
                properties:
                  percent:
                    $ref: '#/components/schemas/Promotions_promotion_discount_percent'
                example:
                  percent: '10.10'
              discounted_items:
                $ref: '#/components/schemas/Promotions_discounted_items'
              attribute_conditions:
                $ref: >-
                  #/components/schemas/promotion_user-attribute_conditions_model-post
              price_conditions:
                $ref: '#/components/schemas/price_conditions_promocode'
              item_price_conditions:
                $ref: '#/components/schemas/item_price_conditions_promocode'
              excluded_promotions:
                $ref: '#/components/schemas/excluded_promotions'
          examples:
            simple bonus:
              value:
                promotion_periods:
                  - date_from: '2020-04-15T18:16:00+05:00'
                    date_until: '2020-04-25T18:16:00+05:00'
                  - date_from: '2020-05-15T18:16:00+05:00'
                    date_until: '2020-05-25T18:16:00+05:00'
                name:
                  en-US: New Year Bonus
                  de-DE: Neujahrsbonus
                redeem_total_limit: 100
                redeem_user_limit: 1
                redeem_code_limit: 1
                bonus:
                  - sku: com.xsolla.elven_sword_1
                    quantity: 1
                  - sku: com.xsolla.elven_shield_1
                    quantity: 2
                  - sku: com.xsolla.elven_gloves_1
                    quantity: 2
            simple discount:
              value:
                promotion_periods:
                  - date_from: '2020-04-15T18:16:00+05:00'
                    date_until: '2020-04-25T18:16:00+05:00'
                name:
                  en-US: New Year Discount
                  de-DE: Neujahrsrabatt
                redeem_total_limit: 100
                redeem_user_limit: 1
                redeem_code_limit: 1
                discount:
                  percent: '10.10'
            personalized:
              value:
                promotion_periods:
                  - date_from: '2020-04-15T18:16:00+05:00'
                    date_until: '2020-04-25T18:16:00+05:00'
                name:
                  en-US: New Year Discount
                  de-DE: Neujahrsrabatt
                redeem_total_limit: 100
                redeem_user_limit: 1
                redeem_code_limit: 1
                discount:
                  percent: '10.10'
                attribute_conditions:
                  - attribute: account_status
                    type: string
                    operator: eq
                    value: golden
                    can_be_missing: false
            with price conditions:
              value:
                promotion_periods:
                  - date_from: '2020-04-15T18:16:00+05:00'
                    date_until: '2020-04-25T18:16:00+05:00'
                name:
                  en-US: New Year Bonus
                  de-DE: Neujahrsbonus
                redeem_total_limit: 100
                redeem_user_limit: 1
                redeem_code_limit: 1
                bonus:
                  - sku: com.xsolla.elven_sword_2
                    quantity: 1
                  - sku: com.xsolla.elven_shield_2
                    quantity: 2
                  - sku: com.xsolla.elven_gloves_2
                    quantity: 2
                price_conditions:
                  - operator: gt
                    value: '10.5000'
                  - operator: lt
                    value: '50.0000'
            with item price conditions:
              value:
                promotion_periods:
                  - date_from: '2020-04-15T18:16:00+05:00'
                    date_until: '2020-04-25T18:16:00+05:00'
                name:
                  en-US: New Year Bonus
                  de-DE: Neujahrsbonus
                redeem_total_limit: 100
                redeem_user_limit: 1
                redeem_code_limit: 1
                discount:
                  percent: '10.10'
                bonus:
                  - sku: com.xsolla.elven_sword_3
                    quantity: 1
                  - sku: com.xsolla.elven_shield_3
                    quantity: 2
                  - sku: com.xsolla.elven_gloves_3
                    quantity: 2
                item_price_conditions:
                  - operator: gt
                    value: '10.5000'
                  - operator: lt
                    value: '50.0000'
            with excluded promotions:
              value:
                promotion_periods:
                  - date_from: '2020-04-15T18:16:00+05:00'
                    date_until: '2020-04-25T18:16:00+05:00'
                name:
                  en-US: New Year Discount
                  de-DE: Neujahrsrabatt
                redeem_total_limit: 100
                redeem_user_limit: 1
                redeem_code_limit: 1
                discount:
                  percent: '10.10'
                excluded_promotions:
                  - 12
                  - 789
    Promotions_create-update-item-promotion:
      content:
        application/json:
          schema:
            type: object
            properties:
              name:
                type: object
                description: |-
                  프로모션의 이름입니다. 키/값 쌍을 포함해야 합니다.
                  여기에서 키는 "^[a-z]{2}-[A-Z]{2}$" 형식의 로케일이며 값은 문자열입니다.
                additionalProperties:
                  type: string
                example:
                  en-US: Promotion
                  ru-RU: Акция
              promotion_periods:
                $ref: '#/components/schemas/promotion_periods'
              discount:
                type: object
                properties:
                  percent:
                    type: string
                    description: >-
                      퍼센트 할인입니다.

                      이 퍼센트를 사용하여 계산한 값을 사용하여 아이템의 가격이 낮아지게 한 다음 소수점 이하 2자리로
                      반올림합니다.
                    example: 10
                required:
                  - percent
              items:
                type: array
                items:
                  description: 할인 대상 아이템 목록입니다.
                  type: object
                  properties:
                    sku:
                      type: string
                      description: 아이템 SKU입니다.
                      default: elven_sword
                  required:
                    - sku
              attribute_conditions:
                $ref: >-
                  #/components/schemas/promotion_user-attribute_conditions_model-post
              price_conditions:
                $ref: '#/components/schemas/price_conditions_discount'
              limits:
                $ref: '#/components/schemas/Promotions_promotion_limits'
              excluded_promotions:
                $ref: '#/components/schemas/excluded_promotions'
              is_enabled:
                $ref: '#/components/schemas/Promotions_is_enabled'
            required:
              - items
              - discount
              - name
          examples:
            simple:
              value:
                promotion_periods:
                  - date_from: '2020-04-15T18:16:00+05:00'
                    date_until: '2020-04-25T18:16:00+05:00'
                  - date_from: '2020-05-16T18:16:00+05:00'
                    date_until: '2020-05-25T18:16:00+05:00'
                discount:
                  percent: '10.00'
                items:
                  - sku: com.xsolla.elven_sword_1
                  - sku: com.xsolla.elven_helmet_1
                  - sku: com.xsolla.elven_armor_1
                name:
                  en-US: Promotion
                  ru-RU: Акция
                is_enabled: true
            personalized:
              value:
                promotion_periods:
                  - date_from: '2020-04-15T18:16:00+05:00'
                    date_until: '2020-04-25T18:16:00+05:00'
                discount:
                  percent: '24.00'
                items: []
                is_enabled: true
                name:
                  en-US: Ork set discount
                  ru-RU: Скидка на набор для орка
                attribute_conditions:
                  - type: string
                    attribute: race
                    operator: eq
                    value: ork
                  - type: number
                    attribute: level
                    operator: eq
                    value: '10'
                    can_be_missing: true
            with price condition:
              value:
                promotion_periods:
                  - date_from: '2020-04-15T18:16:00+05:00'
                    date_until: '2020-04-25T18:16:00+05:00'
                discount:
                  percent: '24.00'
                items: []
                name:
                  en-US: Ork set discount
                  ru-RU: Скидка на набор для орка
                price_conditions:
                  - operator: ge
                    value: '10.5000'
                  - operator: lt
                    value: '20.5000'
            with excluded promotions:
              value:
                promotion_periods:
                  - date_from: '2020-04-15T18:16:00+05:00'
                    date_until: '2020-04-25T18:16:00+05:00'
                discount:
                  percent: '24.00'
                items: []
                name:
                  en-US: Ork set discount
                  ru-RU: Скидка на набор для орка
                excluded_promotions:
                  - 12
                  - 789
                is_enabled: true
      description: 프로모션 데이터가 있는 개체입니다.
      required: true
    Promotions_create-update-bonus-promotion:
      content:
        application/json:
          schema:
            type: object
            required:
              - condition
              - bonus
              - name
            properties:
              id:
                type: integer
                description: 프로모션 ID입니다. 프로젝트 내부의 고유 프로모션 식별자입니다.
              promotion_periods:
                $ref: '#/components/schemas/promotion_periods'
              name:
                type: object
                description: >-
                  프로모션의 이름입니다. 키가 "^[a-z]{2}-[A-Z]{2}$" 형식의 로케일인 키/값 쌍을 포함해야 하며
                  값은 문자열입니다.
                additionalProperties:
                  type: string
                example:
                  en-US: Summer season bonus
                  de-DE: Sommersaison Bonus
              condition:
                type:
                  - array
                  - 'null'
                description: >-
                  프로모션을 적용하기 위해 구매 항목에 포함되어야 하는 아이템 세트입니다. 이 매개 변수가 `null`이면
                  프로젝트 내의 모든 구매 항목에 프로모션이 적용됩니다.
                items:
                  type: object
                  properties:
                    sku:
                      type: string
                      description: 아이템 SKU입니다.
                      default: elven_sword
              attribute_conditions:
                $ref: >-
                  #/components/schemas/promotion_user-attribute_conditions_model-post
              bonus:
                type:
                  - array
                  - 'null'
                items:
                  description: 사용자의 구매 항목에 보너스로 추가될 아이템의 목록입니다.
                  type: object
                  properties:
                    sku:
                      type: string
                      description: 아이템 SKU입니다.
                      default: elven_shield
                    quantity:
                      type: number
                      description: 아이템 수량입니다.
                      default: 1
              limits:
                $ref: '#/components/schemas/Promotions_promotion_limits'
              price_conditions:
                $ref: '#/components/schemas/price_conditions_bonus'
              excluded_promotions:
                $ref: '#/components/schemas/excluded_promotions'
              is_enabled:
                $ref: '#/components/schemas/Promotions_is_enabled'
          examples:
            simple:
              value:
                promotion_periods:
                  - date_from: '2020-04-15T18:16:00+05:00'
                    date_until: '2020-04-25T18:16:00+05:00'
                  - date_from: '2020-05-15T18:16:00+05:00'
                    date_until: '2020-05-25T18:16:00+05:00'
                name:
                  en-US: New Year Bonus
                  de-DE: Neujahrsbonus
                condition:
                  - sku: com.xsolla.elven_boots_1
                  - sku: com.xsolla.elven_knife_1
                bonus:
                  - sku: com.xsolla.elven_sword_1
                    quantity: 1
                  - sku: com.xsolla.elven_shield_1
                    quantity: 2
                  - sku: com.xsolla.elven_gloves_1
                    quantity: 2
            personalized:
              value:
                promotion_periods:
                  - date_from: '2020-04-15T18:16:00+05:00'
                    date_until: '2020-04-25T18:16:00+05:00'
                name:
                  en-US: New Year Bonus
                  de-DE: Neujahrsbonus
                condition:
                  - sku: com.xsolla.year_1_season_pass
                attribute_conditions:
                  - attribute: account_status
                    type: string
                    operator: eq
                    value: golden
                    can_be_missing: false
                bonus:
                  - sku: com.xsolla.mp_credits
                    quantity: 50000
            with price conditions:
              value:
                promotion_periods:
                  - date_from: '2020-04-15T18:16:00+05:00'
                    date_until: '2020-04-25T18:16:00+05:00'
                name:
                  en-US: New Year Bonus
                  de-DE: Neujahrsbonus
                condition:
                  - sku: com.xsolla.elven_boots_2
                  - sku: com.xsolla.elven_knife_2
                bonus:
                  - sku: com.xsolla.elven_sword_2
                    quantity: 1
                  - sku: com.xsolla.elven_shield_2
                    quantity: 2
                  - sku: com.xsolla.elven_gloves_2
                    quantity: 2
                price_conditions:
                  - operator: gt
                    value: '10.0000'
                  - operator: lt
                    value: '20.0000'
            with excluded promotions:
              value:
                promotion_periods:
                  - date_from: '2020-04-15T18:16:00+05:00'
                    date_until: '2020-04-25T18:16:00+05:00'
                name:
                  en-US: New Year Bonus
                  de-DE: Neujahrsbonus
                condition:
                  - sku: com.xsolla.year_1_season_pass
                bonus:
                  - sku: com.xsolla.mp_credits
                    quantity: 50000
                excluded_promotions:
                  - 12
                  - 789
    Promotions_unique_catalog_offer-create:
      content:
        application/json:
          schema:
            type: object
            required:
              - external_id
              - name
            properties:
              external_id:
                $ref: '#/components/schemas/Promotions_coupon-external_id'
              date_start:
                $ref: '#/components/schemas/Promotions_coupon_date_start'
              date_end:
                $ref: '#/components/schemas/Promotions_coupon_date_end'
              name:
                $ref: '#/components/schemas/Promotions_coupon_name'
              items:
                type: array
                $ref: '#/components/schemas/Promotions_unique_catalog_offer_items'
              redeem_user_limit:
                $ref: '#/components/schemas/Promotions_coupon-redeem_user_limit'
              redeem_code_limit:
                $ref: '#/components/schemas/Promotions_redeem_code_limit'
              redeem_total_limit:
                $ref: '#/components/schemas/Promotions_coupon-redeem_total_limit'
          examples:
            simple:
              value:
                external_id: offer_external_id
                date_start: '2020-04-15T18:16:00+05:00'
                date_end: '2020-04-25T18:16:00+05:00'
                name:
                  en-US: New Year Offer
                  de-DE: Neujahrsangebot
                items:
                  - elven_sword
                  - elven_boots
            limited:
              value:
                external_id: offer_external_id
                date_start: '2020-04-15T18:16:00+05:00'
                date_end: '2020-04-25T18:16:00+05:00'
                name:
                  en-US: New Year Offer
                  de-DE: Neujahrsangebot
                items:
                  - elven_sword
                  - elven_boots
                redeem_total_limit: 100
                redeem_user_limit: 1
                redeem_code_limit: 1
    Promotions_unique_catalog_offer-update:
      content:
        application/json:
          schema:
            type: object
            required:
              - name
            properties:
              promotion_periods:
                $ref: '#/components/schemas/promotion_periods'
              name:
                $ref: '#/components/schemas/Promotions_coupon_name'
              items:
                $ref: '#/components/schemas/Promotions_unique_catalog_offer_items'
              redeem_total_limit:
                $ref: '#/components/schemas/Promotions_coupon-redeem_total_limit'
              redeem_user_limit:
                $ref: '#/components/schemas/Promotions_coupon-redeem_user_limit'
              redeem_code_limit:
                $ref: '#/components/schemas/Promotions_redeem_code_limit'
          examples:
            simple:
              value:
                promotion_periods:
                  - date_from: '2020-04-15T18:16:00+05:00'
                    date_until: '2020-04-25T18:16:00+05:00'
                  - date_from: '2020-05-15T18:16:00+05:00'
                    date_until: '2020-05-25T18:16:00+05:00'
                name:
                  en-US: New Year Offer
                  de-DE: Neujahrsangebot
                items:
                  - elven_sword
                  - elven_boots
            limited:
              value:
                promotion_periods:
                  - date_from: '2020-04-15T18:16:00+05:00'
                    date_until: '2020-04-25T18:16:00+05:00'
                name:
                  en-US: New Year Offer
                  de-DE: Neujahrsangebot
                items:
                  - elven_sword
                  - elven_boots
                redeem_total_limit: 100
                redeem_user_limit: 1
                redeem_code_limit: 1
    personalized-catalog_create-update-body:
      content:
        application/json:
          schema:
            $ref: >-
              #/components/schemas/user-attribute_personalized-catalog-body-required
          example:
            name: Ork race armor rule
            is_enabled: true
            attribute_conditions:
              - attribute: race
                operator: eq
                value: ork
                type: string
                can_be_missing: false
            items:
              - item_id: 1
            is_satisfied_for_unauth: false
    reset-user-limits:
      content:
        application/json:
          schema:
            type: object
            required:
              - user
            properties:
              user:
                $ref: '#/components/schemas/User-limit_user'
          example:
            user:
              user_external_id: d342dad2-9d59-11e9-a384-42010aa8003f
    reset-user-limits-flexible:
      content:
        application/json:
          schema:
            type: object
            required:
              - user
            properties:
              user:
                $ref: '#/components/schemas/User-limit_user_flexible'
          example:
            user:
              user_external_id: d342dad2-9d59-11e9-a384-42010aa8003f
    update-user-limits-flexible:
      content:
        application/json:
          schema:
            type: object
            required:
              - user
              - available
            properties:
              user:
                $ref: '#/components/schemas/User-limit_user'
              available:
                $ref: '#/components/schemas/User-limit_available_flexible'
          example:
            user:
              user_external_id: d342dad2-9d59-11e9-a384-42010aa8003f
            available: 0
    update-user-limits-strict:
      content:
        application/json:
          schema:
            type: object
            required:
              - user
              - available
            properties:
              user:
                $ref: '#/components/schemas/User-limit_user'
              available:
                $ref: '#/components/schemas/User-limit_available'
          example:
            user:
              user_external_id: d342dad2-9d59-11e9-a384-42010aa8003f
            available: 1
    create-value-point:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/admin_value_points-create'
          examples:
            default:
              summary: Value point for reward chain
              value:
                sku: com.xsolla.reward_vp_1
                name:
                  en: Reward VP 1
                is_enabled: true
                description:
                  en: Value points for reward system.
                long_description:
                  en: >-
                    Value points given to users to get new rewards in a reward
                    chain.
                image_url: >-
                  https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
                media_list: []
                order: 1
            clan:
              summary: Value point for clan reward chain
              value:
                sku: com.xsolla.clan_value_point_1
                name:
                  en: Clan Reward VP 1
                is_enabled: true
                description:
                  en: Value points for clan reward system.
                long_description:
                  en: >-
                    Value points given to clans to get new rewards in a reward
                    chain.
                image_url: >-
                  https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
                media_list: []
                order: 3
                is_clan: true
    set-item-value-point-reward:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/item-value-point-reward-set'
          example:
            - sku: com.xsolla.booster_1
              amount: 100
            - sku: com.xsolla.booster_mega
              amount: 200
    set-item-value-point-reward-for-patch:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/item-value-point-reward-set-for-patch'
          example:
            - sku: booster_1
              amount: 100
            - sku: booster_mega
              amount: 0
    create-reward-chain:
      content:
        application/json:
          schema:
            oneOf:
              - $ref: '#/components/schemas/create-reward-chain-model'
              - $ref: '#/components/schemas/create-clan-reward-chain-model'
          examples:
            default:
              summary: Reward chain example
              value:
                name:
                  en: Reward chain
                description:
                  en: Reward chain description.
                long_description:
                  en: Reward chain long description.
                is_enabled: true
                image_url: >-
                  https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
                order: 1
                periods:
                  - date_from: '2026-01-01T01:00:00+05:00'
                    date_until: '2026-01-31T23:59:59+05:00'
                  - date_from: '2026-02-01T01:00:00+05:00'
                    date_until: '2026-02-28T23:59:59+05:00'
                value_point:
                  sku: com.xsolla.value_point_1
                steps:
                  - name:
                      en: First step of the reward chain
                    image_url: >-
                      https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
                    reward:
                      - sku: com.xsolla.item_1
                        quantity: 5
                      - sku: com.xsolla.item_2
                        quantity: 1
                    price:
                      amount: 10
                  - name:
                      en: Second step of the reward chain
                    image_url: >-
                      https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
                    reward:
                      - sku: com.xsolla.item_3
                        quantity: 5
                      - sku: com.xsolla.item_4
                        quantity: 1
                    price:
                      amount: 15
                recurrent_schedule:
                  interval_type: weekly
                  day_of_week: 1
                  time: 01:00:00+08:00
                attribute_conditions:
                  - attribute: race
                    operator: eq
                    value: ork
                    type: string
                    can_be_missing: false
                is_always_visible: true
                is_reset_after_end: true
            clan:
              summary: Clan reward chain example
              value:
                name:
                  en: Clan reward chain
                description:
                  en: Clan reward chain description.
                long_description:
                  en: Clan reward chain long description.
                is_enabled: true
                image_url: >-
                  https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
                order: 1
                periods:
                  - date_from: '2026-01-01T01:00:00+05:00'
                    date_until: '2026-01-31T23:59:59+05:00'
                  - date_from: '2026-02-01T01:00:00+05:00'
                    date_until: '2026-02-28T23:59:59+05:00'
                value_point:
                  sku: com.xsolla.clan_value_point_1
                steps:
                  - name:
                      en: First step of the reward chain
                    image_url: >-
                      https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
                    reward:
                      - sku: com.xsolla.item_1
                        quantity: 5
                      - sku: com.xsolla.item_2
                        quantity: 1
                    price:
                      amount: 10
                  - name:
                      en: Second step of the reward chain
                    image_url: >-
                      https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
                    reward:
                      - sku: com.xsolla.item_3
                        quantity: 5
                      - sku: com.xsolla.item_4
                        quantity: 1
                    price:
                      amount: 15
                recurrent_schedule:
                  interval_type: weekly
                  day_of_week: 1
                  time: 01:00:00+08:00
                popup_header:
                  en: How to unlock rewards
                popup_instruction:
                  en: >-
                    You must be a clan member to get clan rewards. You join a
                    clan when a clan member invites you to the clan, and you
                    accept the invite. You can also create your own clan.
                popup_image_url: >-
                  https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
                clan_type: guild
    update-reward-chain:
      content:
        application/json:
          schema:
            oneOf:
              - $ref: '#/components/schemas/update-reward-chain-model'
              - $ref: '#/components/schemas/update-clan-reward-chain-model'
          examples:
            default:
              summary: Reward chain example
              value:
                name:
                  en: Reward chain
                description:
                  en: Reward chain description.
                long_description:
                  en: Reward chain long description.
                is_enabled: true
                image_url: >-
                  https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
                order: 1
                periods:
                  - date_from: '2026-01-01T01:00:00+05:00'
                    date_until: '2026-01-31T23:59:59+05:00'
                  - date_from: '2026-02-01T01:00:00+05:00'
                    date_until: '2026-02-28T23:59:59+05:00'
                steps:
                  - name:
                      en: First step of the reward chain
                    step_id: 1
                    image_url: >-
                      https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
                    reward:
                      - sku: com.xsolla.item_1
                        quantity: 5
                      - sku: com.xsolla.item_2
                        quantity: 1
                    price:
                      amount: 10
                  - name:
                      en: Second step of the reward chain
                    step_id: 2
                    image_url: >-
                      https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
                    reward:
                      - sku: com.xsolla.item_3
                        quantity: 5
                      - sku: com.xsolla.item_4
                        quantity: 1
                    price:
                      amount: 15
                recurrent_schedule:
                  interval_type: weekly
                  day_of_week: 1
                  time: 01:00:00+08:00
                attribute_conditions:
                  - attribute: race
                    operator: eq
                    value: ork
                    type: string
                    can_be_missing: false
                is_always_visible: true
                is_reset_after_end: true
            clan:
              summary: Clan reward chain example
              value:
                name:
                  en: Clan reward chain
                description:
                  en: Clan reward chain description.
                long_description:
                  en: Clan reward chain long description.
                is_enabled: true
                image_url: >-
                  https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
                order: 1
                periods:
                  - date_from: '2026-01-01T01:00:00+05:00'
                    date_until: '2026-01-31T23:59:59+05:00'
                  - date_from: '2026-02-01T01:00:00+05:00'
                    date_until: '2026-02-28T23:59:59+05:00'
                steps:
                  - name:
                      en: First step of the reward chain
                    step_id: 1
                    image_url: >-
                      https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
                    reward:
                      - sku: com.xsolla.item_1
                        quantity: 5
                      - sku: com.xsolla.item_2
                        quantity: 1
                    price:
                      amount: 10
                  - name:
                      en: Second step of the reward chain
                    step_id: 2
                    image_url: >-
                      https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
                    reward:
                      - sku: com.xsolla.item_3
                        quantity: 5
                      - sku: com.xsolla.item_4
                        quantity: 1
                    price:
                      amount: 15
                recurrent_schedule:
                  interval_type: weekly
                  day_of_week: 1
                  time: 01:00:00+08:00
                popup_header:
                  en: How to unlock rewards
                popup_instruction:
                  en: >-
                    You should be a clan member to get clan rewards. You join a
                    clan when a clan member invited you to the clan, and you
                    accepted the invite. You can create your own clan.
                popup_image_url: >-
                  https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
                clan_type: guild
    create-daily-chain:
      content:
        application/json:
          schema:
            oneOf:
              - $ref: '#/components/schemas/create-calendar-hard-daily-chain-model'
              - $ref: >-
                  #/components/schemas/create-rolling-skippable-daily-chain-model
              - $ref: >-
                  #/components/schemas/create-rolling-unskippable-daily-chain-model
          examples:
            calendar_hard:
              summary: Daily reward with `calendar_hard` type
              value:
                name:
                  en: New daily reward
                  ru: Новая ежедневная награда
                description:
                  en: New daily reward short description
                order: 4
                date_start: '2023-04-15T18:16:00+05:00'
                is_enabled: true
                steps:
                  - step_number: 1
                    items:
                      - sku: vg_enabled_shown_in_store_1
                        quantity: 2
                  - step_number: 2
                    items:
                      - sku: >-
                          bundle_enabled_shown_in_store_with_2_enabled_shown_in_store_vg
                        quantity: 2
                  - step_number: 3
                    items:
                      - sku: >-
                          vcp_enabled_shown_in_store_1_of_10_vc_enabled_shown_in_store_1
                        quantity: 2
                  - step_number: 4
                    items:
                      - sku: vg_enabled_shown_in_store_1
                        quantity: 1
                  - step_number: 5
                    items:
                      - sku: >-
                          bundle_enabled_shown_in_store_with_2_enabled_shown_in_store_vg
                        quantity: 1
                  - step_number: 6
                    items:
                      - sku: >-
                          vcp_enabled_shown_in_store_1_of_10_vc_enabled_shown_in_store_1
                        quantity: 1
                type: calendar_hard
            rolling_skippable:
              summary: Daily reward with `rolling_skippable` type
              value:
                name:
                  en: New skippable login reward
                description:
                  en: New skippable login reward short description
                order: 1
                date_start: '2023-05-01T10:00:00+05:00'
                date_end: '2023-05-31T10:00:00+05:00'
                is_enabled: true
                is_recurrent: true
                steps:
                  - step_number: 1
                    items:
                      - sku: monday_reward_item_one
                        quantity: 1
                  - step_number: 2
                    items:
                      - sku: tuesday_reward_item_two
                        quantity: 1
                  - step_number: 3
                    items:
                      - sku: wednesday_reward_item_three
                        quantity: 1
                  - step_number: 4
                    items:
                      - sku: thursday_reward_item_four
                        quantity: 1
                  - step_number: 5
                    items:
                      - sku: friday_reward_item_five
                        quantity: 1
                  - step_number: 6
                    items:
                      - sku: saturday_reward_item_six
                        quantity: 1
                  - step_number: 7
                    items:
                      - sku: sunday_reward_item_seven
                        quantity: 1
                type: rolling_skippable
            rolling_unskippable:
              summary: Daily reward with `rolling_unskippable` type
              value:
                name:
                  en: New unskippable login reward
                description:
                  en: New unskippable login reward short description
                order: 2
                date_start: '2023-06-01T10:00:00+05:00'
                date_end: '2023-06-30T10:00:00+05:00'
                is_enabled: true
                is_recurrent: false
                steps:
                  - step_number: 1
                    items:
                      - sku: monday_reward_item_one
                        quantity: 1
                  - step_number: 2
                    items:
                      - sku: tuesday_reward_item_two
                        quantity: 1
                  - step_number: 3
                    items:
                      - sku: wednesday_reward_item_three
                        quantity: 1
                  - step_number: 4
                    items:
                      - sku: thursday_reward_item_four
                        quantity: 1
                  - step_number: 5
                    items:
                      - sku: friday_reward_item_five
                        quantity: 1
                type: rolling_unskippable
    update-daily-chain:
      content:
        application/json:
          schema:
            oneOf:
              - $ref: '#/components/schemas/update-calendar-hard-daily-chain-model'
              - $ref: >-
                  #/components/schemas/update-rolling-skippable-daily-chain-model
              - $ref: >-
                  #/components/schemas/update-rolling-unskippable-daily-chain-model
          examples:
            calendar_hard:
              summary: Daily reward with `calendar_hard` type
              value:
                name:
                  en: Updated daily reward
                  ru: Обновленная ежедневная награда
                description:
                  en: Updated daily reward description
                order: 4
                date_start: '2023-04-15T18:16:00+05:00'
                is_enabled: true
                steps:
                  - step_number: 1
                    items:
                      - sku: vg_enabled_shown_in_store_1
                        quantity: 1
                  - step_number: 2
                    items:
                      - sku: vg_enabled_shown_in_store_2
                        quantity: 1
                  - step_id: 10
                    step_number: 3
                    items:
                      - sku: vg_not_shown_in_store
                        quantity: 1
                  - step_id: 8
                    step_number: 4
                    items:
                      - sku: >-
                          bundle_enabled_shown_in_store_with_2_enabled_shown_in_store_vg
                        quantity: 1
                  - step_number: 5
                    items:
                      - sku: >-
                          vcp_enabled_shown_in_store_1_of_10_vc_enabled_shown_in_store_1
                        quantity: 1
                type: calendar_hard
            rolling_skippable:
              summary: Daily reward with `rolling_skippable` type
              value:
                name:
                  en: Updated login reward
                description:
                  en: Updated login reward description
                order: 4
                date_start: '2023-08-01T10:00:00+05:00'
                date_end: '2023-08-31T10:00:00+05:00'
                is_enabled: true
                steps:
                  - step_number: 1
                    items:
                      - sku: monday_reward_item_one
                        quantity: 1
                  - step_number: 2
                    items:
                      - sku: tuesday_reward_item_two
                        quantity: 1
                  - step_number: 3
                    items:
                      - sku: wednesday_reward_item_three
                        quantity: 1
                  - step_number: 4
                    items:
                      - sku: thursday_reward_item_four
                        quantity: 1
                  - step_number: 5
                    items:
                      - sku: friday_reward_item_five
                        quantity: 1
                  - step_number: 6
                    items:
                      - sku: saturday_reward_item_six
                        quantity: 1
                  - step_number: 7
                    items:
                      - sku: sunday_reward_item_seven
                        quantity: 1
                type: rolling_skippable
            rolling_unskippable:
              summary: Daily reward with `rolling_unskippable` type
              value:
                name:
                  en: Updated unskippable login reward
                description:
                  en: Updated unskippable login reward description
                order: 2
                date_start: '2023-09-01T10:00:00+05:00'
                date_end: '2023-09-30T10:00:00+05:00'
                is_enabled: true
                steps:
                  - step_number: 1
                    items:
                      - sku: monday_reward_item_one
                        quantity: 1
                  - step_number: 2
                    items:
                      - sku: tuesday_reward_item_two
                        quantity: 1
                  - step_number: 3
                    items:
                      - sku: wednesday_reward_item_three
                        quantity: 1
                  - step_number: 4
                    items:
                      - sku: thursday_reward_item_four
                        quantity: 1
                  - step_number: 5
                    items:
                      - sku: friday_reward_item_five
                        quantity: 1
                type: rolling_unskippable
    create-offer-chain:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/create-offer-chain-model'
          examples:
            default:
              summary: Non-personalized offer chain example
              value:
                name:
                  en: New offer chain
                  ru: Новая цепочка предложений
                  de: Neue Angebotskette
                  fr: Nouvelle chaîne d'offres
                  it: Nuova catena di offerte
                description:
                  en: A short description of a regular offer chain
                  ru: Краткое описание обычной цепочки предложений
                  de: Eine kurze Beschreibung einer regulären Angebotskette
                  fr: Une brève description d'une chaîne d'offres régulière
                  it: Una breve descrizione di una catena di offerte regolare
                order: 4
                date_start: '2023-04-15T18:16:00+05:00'
                date_end: null
                recurrent_schedule: null
                is_enabled: true
                steps:
                  - step_number: 1
                    is_free: false
                    items:
                      - sku: chain_step_1_paid_bundle_sku
                        quantity: 2
                  - step_number: 2
                    is_free: true
                    items:
                      - sku: chain_step_2_free_virtual_good_sku
                        quantity: 1
                  - step_number: 3
                    is_free: false
                    items:
                      - sku: chain_step_3_paid_virtual_currency_package_sku
                        quantity: 5
                  - step_number: 4
                    is_free: true
                    items:
                      - sku: chain_step_4_free_bundle_sku
                        quantity: 1
                is_always_visible: true
            recurrent:
              summary: Recurrent offer chain example
              value:
                name:
                  en: New recurrent offer chain
                  ru: Новая рекуррентная цепочка предложений
                  de: Neue wiederkehrende Angebotskette
                  fr: Nouvelle chaîne d'offres récurrente
                  it: Nuova catena di offerte ricorrente
                description:
                  en: >-
                    A recurring offer chain that resets weekly on Wednesdays at
                    07:00 AM GMT+3
                  ru: >-
                    Рекуррентная цепочка предложений, которая сбрасывается
                    еженедельно по средам в 07:00 по GMT+3
                  de: >-
                    Eine wiederkehrende Angebotskette, die wöchentlich mittwochs
                    um 07:00 Uhr GMT+3 zurückgesetzt wird
                  fr: >-
                    Une chaîne d'offres récurrente qui se réinitialise chaque
                    semaine le mercredi à 07h00 GMT+3
                  it: >-
                    Una catena di offerte ricorrente che si resetta
                    settimanalmente il mercoledì alle 07:00 GMT+3
                order: 1
                date_start: '2023-04-15T18:16:00+05:00'
                date_end: '2025-04-25T18:16:00+05:00'
                is_enabled: false
                recurrent_schedule:
                  interval_type: weekly
                  day_of_week: 3
                  time: 07:00:00+03:00
                steps:
                  - step_number: 1
                    is_free: false
                    items:
                      - sku: chain_step_1_paid_bundle_sku
                        quantity: 2
                  - step_number: 2
                    is_free: true
                    items:
                      - sku: chain_step_2_free_virtual_good_sku
                        quantity: 3
                is_always_visible: true
            personalized-default:
              summary: >-
                Offer chain displayed when no personalized offer chains are
                found example
              value:
                name:
                  en: New personalized default offer chain
                  ru: Новая персонализированная цепочка предложений по умолчанию
                  de: Neue personalisierte Standard-Angebotskette
                  fr: Nouvelle chaîne d'offres personnalisée par défaut
                  it: Nuova catena di offerte personalizzata predefinita
                description:
                  en: >-
                    Default personalized offer chain for users that do not meet
                    the conditions of other personalized chains
                  ru: >-
                    Персонализированная цепочка по умолчанию для пользователей,
                    не подходящих под условия других персонализированных цепочек
                  de: >-
                    Standard-personalisierte Angebotskette für Benutzer, die die
                    Bedingungen anderer personalisierter Ketten nicht erfüllen
                  fr: >-
                    Chaîne d'offres personnalisée par défaut pour les
                    utilisateurs qui ne répondent pas aux conditions des autres
                    chaînes personnalisées
                  it: >-
                    Catena di offerte personalizzata predefinita per gli utenti
                    che non soddisfano le condizioni di altre catene
                    personalizzate
                order: 4
                date_start: '2023-04-15T18:16:00+05:00'
                date_end: null
                recurrent_schedule: null
                is_enabled: true
                steps:
                  - step_number: 1
                    is_free: false
                    items:
                      - sku: chain_x_step_1_item_default
                        quantity: 1
                  - step_number: 2
                    is_free: false
                    items:
                      - sku: chain_x_step_2_item_default
                        quantity: 2
                  - step_number: 3
                    is_free: true
                    items:
                      - sku: chain_x_step_3_free_item_default
                        quantity: 1
                is_always_visible: false
            personalized-with-conditions:
              summary: Personalized offer chain with user attribute conditions example
              value:
                name:
                  en: New personalized offer chain
                  ru: Новая персонализированная цепочка предложений
                  de: Neue personalisierte Angebotskette
                  fr: Nouvelle chaîne d'offres personnalisée
                  it: Nuova catena di offerte personalizzata
                description:
                  en: >-
                    Personalized offer chain with user attribute conditions -
                    for level 10 and above elves who reached level 10 no later
                    than 2026-01-01 00:00:00, inclusive
                  ru: >-
                    Персонализированная цепочка предложений с условиями по
                    атрибутам пользователя - для эльфов уровня 10 и выше,
                    достигших 10 уровня не позднее 2026-01-01 00:00:00
                    включительно
                  de: >-
                    Personalisierte Angebotskette mit
                    Benutzerattributbedingungen - für Elfen der Stufe 10 und
                    höher, die Stufe 10 spätestens am 2026-01-01 00:00:00
                    erreicht haben, einschließlich
                  fr: >-
                    Chaîne d'offres personnalisée avec des conditions d'attribut
                    utilisateur - pour les elfes de niveau 10 et plus qui ont
                    atteint le niveau 10 au plus tard le 2026-01-01 00:00:00,
                    inclus
                  it: >-
                    Catena di offerte personalizzata con condizioni di attributo
                    utente - per elfi di livello 10 e superiore che hanno
                    raggiunto il livello 10 non più tardi del 2026-01-01
                    00:00:00, inclusi
                order: 4
                date_start: '2023-04-15T18:16:00+05:00'
                date_end: null
                recurrent_schedule: null
                is_enabled: true
                steps:
                  - step_number: 1
                    is_free: false
                    items:
                      - sku: chain_x_step_1_item_for_elves_level_10_and_above
                        quantity: 1
                  - step_number: 2
                    is_free: false
                    items:
                      - sku: chain_x_step_2_item_for_elves_level_10_and_above
                        quantity: 2
                  - step_number: 3
                    is_free: true
                    items:
                      - sku: chain_x_step_3_free_item_for_elves_level_10_and_above
                        quantity: 1
                is_always_visible: false
                attribute_conditions:
                  - attribute: race
                    operator: eq
                    value: elf
                    type: string
                    can_be_missing: false
                  - attribute: level
                    operator: ge
                    value: '10'
                    type: number
                    can_be_missing: false
                  - attribute: 10_level_up_date
                    operator: le
                    value: '2026-01-01T00:00:00'
                    type: date
                    can_be_missing: false
    update-offer-chain:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/modify-offer-chain-model'
          examples:
            default:
              summary: Default example
              value:
                name:
                  en: Updated offer chain
                  ru: Обновляемая цепочка предложений
                  de: Aktualisierte Angebotskette
                  fr: Chaîne d'offres mise à jour
                  it: Catena di offerte aggiornata
                description:
                  en: A short description of a regular offer chain
                  ru: Краткое описание обычной цепочки предложений
                  de: Eine kurze Beschreibung einer regulären Angebotskette
                  fr: Une brève description d'une chaîne d'offres régulière
                  it: Una breve descrizione di una catena di offerte regolare
                order: 4
                date_start: '2023-04-15T18:16:00+05:00'
                date_end: null
                recurrent_schedule: null
                is_enabled: true
                steps:
                  - step_id: 10
                    step_number: 1
                    is_free: false
                    items:
                      - sku: chain_step_1_paid_bundle_sku
                        quantity: 2
                  - step_number: 2
                    is_free: true
                    items:
                      - sku: chain_step_2_free_virtual_good_sku
                        quantity: 1
                  - step_number: 3
                    is_free: false
                    items:
                      - sku: chain_step_3_paid_virtual_currency_package_sku
                        quantity: 5
                  - step_id: 9
                    step_number: 4
                    is_free: true
                    items:
                      - sku: chain_step_4_free_bundle_sku
                        quantity: 1
                is_always_visible: true
            recurrent:
              summary: Recurrent offer chain example
              value:
                id: 1
                name:
                  en: Updated recurrent offer chain
                  ru: Обновляемая рекуррентная цепочка предложений
                  de: Aktualisierte wiederkehrende Angebotskette
                  fr: Chaîne d'offres récurrente mise à jour
                  it: Catena di offerte ricorrente aggiornata
                description:
                  en: >-
                    Updated offer chain that becomes recurrent and resets
                    monthly on the 2nd day at 03:00 AM GMT+8
                  ru: >-
                    Обновляемая цепочка предложений, которая становится
                    рекуррентной и сбрасывается ежемесячно во 2-й день в 03:00
                    по GMT+8
                  de: >-
                    Aktualisierte Angebotskette, die wiederkehrend wird und
                    monatlich am 2. Tag um 03:00 Uhr GMT+8 zurückgesetzt wird
                  fr: >-
                    Chaîne d'offres mise à jour qui devient récurrente et se
                    réinitialise mensuellement le 2e jour à 03h00 GMT+8
                  it: >-
                    Catena di offerte aggiornata che diventa ricorrente e si
                    resetta mensilmente il 2° giorno alle 03:00 GMT+8
                order: 4
                date_start: '2023-04-15T17:16:00+05:00'
                date_end: '2025-04-25T19:16:00+05:00'
                is_enabled: true
                recurrent_schedule:
                  interval_type: monthly
                  day_of_month: 2
                  time: 03:00:00+08:00
                steps:
                  - step_number: 1
                    is_free: false
                    items:
                      - sku: chain_bundle_sku
                        quantity: 6
                  - step_number: 1
                    is_free: true
                    items:
                      - sku: chain_bundle_sku
                        quantity: 2
            personalized-default:
              summary: Personalized default offer chain example
              value:
                name:
                  en: New personalized default offer chain
                  ru: Новая персонализированная цепочка предложений по умолчанию
                  de: Neue personalisierte Standard-Angebotskette
                  fr: Nouvelle chaîne d'offres personnalisée par défaut
                  it: Nuova catena di offerte personalizzata predefinita
                description:
                  en: >-
                    Default personalized offer chain for users that do not meet
                    the conditions of other personalized chains
                  ru: >-
                    Персонализированная цепочка по умолчанию для пользователей,
                    не подходящих под условия других персонализированных цепочек
                  de: >-
                    Standard-personalisierte Angebotskette für Benutzer, die die
                    Bedingungen anderer personalisierter Ketten nicht erfüllen
                  fr: >-
                    Chaîne d'offres personnalisée par défaut pour les
                    utilisateurs qui ne répondent pas aux conditions des autres
                    chaînes personnalisées
                  it: >-
                    Catena di offerte personalizzata predefinita per gli utenti
                    che non soddisfano le condizioni di altre catene
                    personalizzate
                order: 4
                date_start: '2023-04-15T18:16:00+05:00'
                date_end: null
                recurrent_schedule: null
                is_enabled: true
                steps:
                  - step_id: 10
                    step_number: 1
                    is_free: false
                    items:
                      - sku: chain_x_step_1_item_default
                        quantity: 1
                  - step_number: 2
                    is_free: false
                    items:
                      - sku: chain_x_step_2_item_default
                        quantity: 2
                  - step_id: 9
                    step_number: 3
                    is_free: true
                    items:
                      - sku: chain_x_step_3_free_item_default
                        quantity: 1
                is_always_visible: false
            personalized-with-conditions:
              summary: Personalized offer chain with user attribute conditions example
              value:
                name:
                  en: New personalized offer chain
                  ru: Новая персонализированная цепочка предложений
                  de: Neue personalisierte Angebotskette
                  fr: Nouvelle chaîne d'offres personnalisée
                  it: Nuova catena di offerte personalizzata
                description:
                  en: >-
                    Personalized offer chain with user attribute conditions -
                    for level 10 and above elves who reached level 10 no later
                    than 2026-01-01 00:00:00, inclusive
                  ru: >-
                    Персонализированная цепочка предложений с условиями по
                    атрибутам пользователя - для эльфов уровня 10 и выше,
                    достигших 10 уровня не позднее 2026-01-01 00:00:00
                    включительно
                  de: >-
                    Personalisierte Angebotskette mit
                    Benutzerattributbedingungen - für Elfen der Stufe 10 und
                    höher, die Stufe 10 spätestens am 2026-01-01 00:00:00
                    erreicht haben, einschließlich
                  fr: >-
                    Chaîne d'offres personnalisée avec des conditions d'attribut
                    utilisateur - pour les elfes de niveau 10 et plus qui ont
                    atteint le niveau 10 au plus tard le 2026-01-01 00:00:00,
                    inclus
                  it: >-
                    Catena di offerte personalizzata con condizioni di attributo
                    utente - per elfi di livello 10 e superiore che hanno
                    raggiunto il livello 10 non più tardi del 2026-01-01
                    00:00:00, inclusi
                order: 4
                date_start: '2023-04-15T18:16:00+05:00'
                date_end: null
                recurrent_schedule: null
                is_enabled: true
                steps:
                  - step_id: 10
                    step_number: 1
                    is_free: false
                    items:
                      - sku: chain_x_step_1_item_for_elves_level_10_and_above
                        quantity: 1
                  - step_id: 8
                    step_number: 2
                    is_free: false
                    items:
                      - sku: chain_x_step_2_item_for_elves_level_10_and_above
                        quantity: 2
                  - step_number: 3
                    is_free: true
                    items:
                      - sku: chain_x_step_3_free_item_for_elves_level_10_and_above
                        quantity: 1
                is_always_visible: false
                attribute_conditions:
                  - attribute: race
                    operator: eq
                    value: elf
                    type: string
                    can_be_missing: false
                  - attribute: level
                    operator: ge
                    value: '10'
                    type: number
                    can_be_missing: false
                  - attribute: 10_level_up_date
                    operator: le
                    value: '2026-01-01T00:00:00'
                    type: date
                    can_be_missing: false
    update-upsell:
      content:
        application/json:
          schema:
            oneOf:
              - $ref: '#/components/schemas/Upsell-model'
              - $ref: '#/components/schemas/Upsell-model-not-fixed-list'
          examples:
            fixed_list:
              summary: Example of upsell with fixed list of items
              value:
                is_enabled: true
                type: fixed_list
                items:
                  - game_sku_1
                  - game_sku_2
                  - game_sku_3
            special_type_promotions:
              summary: Example of upsell with promotion items only
              value:
                is_enabled: true
                type: only_promotions
                items: []
            special_type_most_sellable:
              summary: Example of upsell with most sellable items for last 30 days
              value:
                is_enabled: true
                type: most_sellable
                items: []
    create-upsell:
      content:
        application/json:
          schema:
            oneOf:
              - $ref: '#/components/schemas/Upsell-model'
              - $ref: '#/components/schemas/Upsell-model-not-fixed-list'
          examples:
            fixed_list:
              summary: Example of upsell with fixed list of items
              value:
                is_enabled: true
                type: fixed_list
                items:
                  - game_sku_1
                  - game_sku_2
                  - game_sku_3
            special_type_promotions:
              summary: Example of upsell with promotion items only
              value:
                is_enabled: true
                type: only_promotions
                items: []
            special_type_most_sellable:
              summary: Example of upsell with most sellable items for last 30 days
              value:
                is_enabled: true
                type: most_sellable
                items: []
    debit-point-balance:
      required: true
      content:
        application/json:
          schema:
            type: object
            required:
              - amount
              - reason
            properties:
              amount:
                type: number
                format: double
                description: 차감할 로열티 포인트 금액입니다. 양수여야 합니다.
                example: 50
              reason:
                type: string
                description: '자유 텍스트 형식의 잔액 변경 사유입니다(예: 리워드, 보상, 수동 조정).'
                example: Manual adjustment
          examples:
            request:
              value:
                amount: 50
                reason: Manual adjustment
    credit-point-balance:
      required: true
      content:
        application/json:
          schema:
            type: object
            required:
              - amount
              - reason
            properties:
              amount:
                type: number
                format: double
                description: 적립할 로열티 포인트 금액입니다. 양수여야 합니다.
                example: 50
              reason:
                type: string
                description: '자유 텍스트 형식의 잔액 변경 사유입니다(예: 리워드, 보상, 수동 조정).'
                example: Manual adjustment
          examples:
            request:
              value:
                amount: 50
                reason: Manual adjustment
x-tagGroups:
  - name: 프로모션
    tags:
      - promotions-overview
      - promotions-common
      - promotions-coupons
      - promotions-promo-codes
      - promotions-unique-catalog-offers
      - promotions-discounts
      - promotions-bonuses
  - name: 개인화
    tags:
      - personalized-catalog
  - name: 제한 사항
    tags:
      - promotion-limits-overview
      - user-limits-admin
  - name: 보상 체인 및 밸류 포인트
    tags:
      - reward-chain-value-points-overview
      - reward-chain-value-points-admin
      - reward-chain-client
      - clan-reward-chain-client
  - name: 일일 체인
    tags:
      - daily-chain-overview
      - daily-chain-admin
      - daily-chain-client
  - name: 혜택 체인
    tags:
      - offer-chains-overview
      - offer-chain-admin
      - offer-chain-client
  - name: 업셀링
    tags:
      - upsell-overview
      - upsell-admin
      - upsell-client
  - name: 로열티 서비스
    tags:
      - loyalty-program-overview
      - loyalty-program-admin
