openapi: 3.1.0
info:
  description: "# Descripción general\n\n* **Versión:** 2.0.0\n* **Servidores**: `https://store.xsolla.com/api`\n* **[Contacte con nosotros por correo electrónico](mailto:integration@xsolla.com)**\n* **URL de contacto:** https://xsolla.com/\n* **Versión TLS requerida:** 1.2\n\nLiveOps es un conjunto de herramientas para estimular el compromiso continuo de los jugadores a través de promociones y ofertas personalizadas.\n\nUtilice la API para gestionar las siguientes funciones:\n\n* **Promociones**: crear y gestionar cupones, códigos promocionales, descuentos y campañas de bonificaciones.\n* **Personalización**: especificar las condiciones para mostrar el catálogo de artículos y aplicar promociones solo para ciertos usuarios autorizados.\n* **Límites de promoción**: establecer un límite en cuántas veces un usuario puede utilizar una promoción y configurar reinicios programados para estos límites.\n* **Cadenas de recompensas y puntos de valor**: configurar progresiones de recompensas vinculadas a la acumulación de puntos de valor.\n* **Cadenas diarias**: configurar recompensas diarias recurrentes para estimular inicios de sesión regulares.\n* **Cadenas de ofertas**: construir ofertas de compra secuenciales con precios por cada paso y opciones de recompensa gratuita.\n* **Venta adicional**: un método de ventas en el que se ofrece al usuario comprar un artículo que posee un valor adicional.\n\n## Llamadas API\n\nLa API se divide en los **siguientes grupos**:\n\n* **<nt>Admin</nt>**: llamadas para crear, actualizar, activar y eliminar campañas y configuraciones de cadenas. Se autentican a través de [autenticación básica de acceso](https://developers.xsolla.com/es/payment-ui-and-flow/payment-ui/how-to-get-payment-token/#payments_solution_get_user_auth_token_basic_auth) con sus credenciales de comerciante o de proyecto.\n* **<nt>Client</nt>**: llamadas para recuperar promociones disponibles, obtener cadenas activas, canjear códigos y reclamar recompensas en nombre de usuarios finales autenticados. Se autentican a través del JWT del usuario.\n\n# Autenticación\n\nLas llamadas API requieren autenticación ya sea en nombre de un usuario o en nombre de un proyecto. El esquema de autenticación utilizado se especifica en la sección **Seguridad** en la descripción de cada llamada.\n\n## Autenticación mediante el JWT del usuario\n\nLa autenticación mediante el JWT del usuario se utiliza cuando se envía una solicitud desde un navegador, aplicación móvil o juego. Por defecto, se aplica el esquema `XsollaLoginUserJWT`. Para obtener más detalles sobre cómo crear un token, consulte la [documentación del API de Xsolla Login](/es/api/login/authentication-schemes#getting-user-token).\n\nEl token se transmite en el encabezado `Authorization` con el siguiente formato: `Authorization: Bearer <user_JWT>`, en el que `<user_JWT>` es el token de usuario. El token identifica al usuario y proporciona acceso a datos personalizados.\n\nTambién puede utilizar un [token para abrir la interfaz de pago](/es/api/pay-station/token/create-token).\n\n## Autenticación HTTP básica\n\nLa autenticación HTTP básica se utiliza para interacciones de servidor a servidor, cuando una llamada API se envía directamente desde tu servidor en lugar de desde el navegador de un usuario o aplicación móvil. Normalmente, se usa la autenticación HTTP básica con una [clave de API](/es/api/getting-started/#api_keys_overview).\n\n<div class=\"note\"><b>Nota:</b><br><br>La clave de API es confidencial y no debe almacenarse ni usarse en aplicaciones cliente.</div>\n\nCon la autenticación básica del lado del servidor, todas las solicitudes de API deben incluir el siguiente encabezado:\n\n- para `basicAuth` — `Authorization: Basic <your_authorization_basic_key>`, en las que `your_authorization_basic_key` es el par `project_id:api_key` codificado en Base64\n- para `basicMerchantAuth` — `Authorization: Basic <your_authorization_basic_key>`, en las que `your_authorization_basic_key` es el par `merchant_id:api_key` codificado en Base64\n\nPuede encontrar los valores de parámetro en [Cuenta del editor](https://publisher.xsolla.com/):\n\n- Se muestra `merchant_id`:\n  - En **Configuración de la empresa > Empresa**.\n  - En la URL en la barra de direcciones del navegador en cualquier página de Cuenta del editor. La URL tiene el siguiente formato: `https://publisher.xsolla.com/<merchant_id>`.\n- Se muestra `project_id`:\n  - Junto al nombre del proyecto en Cuenta del editor.\n  - En la URL en la barra de direcciones del navegador al trabajar en un proyecto en la Cuenta del editor. La URL tiene el siguiente formato: `https://publisher.xsolla.com/<merchant_id>/projects/<project_id>`.\n- `api_key` se muestra en Cuenta del editor solo en el momento de la creación y debe almacenarse de forma segura en su servidor. Puede crear una clave de API en las siguientes secciones:\n  - [Configuración de la empresa > Claves de API](https://publisher.xsolla.com/0/settings/api_key)\n  - [Configuración del proyecto > Clave de API](https://publisher.xsolla.com/0/projects/0/edit/api_key)\n\n<div class=\"notice\"><b>Aviso:</b><br><br>Si una llamada\_API requerida no incluye el parámetro de ruta <code>project_id</code>, utilice una clave de API que sea válida para todos los proyectos de la empresa para la autorización.</div>\n\nPara obtener más información sobre cómo trabajar con claves de API, consulte las [referencias de la API](/es/api/getting-started/#api_keys_overview).\n\n## Autenticación con compatibilidad con el acceso de invitado\n\nEl esquema de autenticación `AuthForCart` se utiliza para las compras con cesta y admite dos modos:\n\n1. **Autenticación con el JWT de un usuario.** El token se transmite en el encabezado `Authorization` en el siguiente formato: `Authorization: Bearer <user_JWT>`, en el que `<user_JWT>` es el token del usuario. El token identifica al usuario y proporciona acceso a datos personalizados. De forma alternativa, puede usar un [token para abrir la interfaz de pago](/es/api/pay-station/token/create-token).\n\n2. **Modo simplificado sin encabezado \"Authorization\".** Este modo se utiliza solo para usuarios no autorizados y puede aplicarse solo para [ventas de claves de juego](/es/doc/buy-button/how-to/set-up-authentication/#guides_buy_button_selling_items_not_authenticated_users). En lugar de un token, la solicitud debe incluir los siguientes encabezados:\n   - `x-unauthorized-id` con un ID de solicitud\n   - `x-user` con la dirección de correo electrónico del usuario codificada en Base64\n\n## Enlaces útiles\n\n- [Llamadas API por modelo de interacción](https://developers.xsolla.com/es/api/catalog/)\n- [Tipos de puntos finales](https://developers.xsolla.com/es/api/catalog/)\n- [Gestión de errores](https://developers.xsolla.com/es/api/catalog/)\n- [Claves de API](https://developers.xsolla.com/es/api/catalog/)\n\n# Estructura de la entidad principal\n\nLos artículos de todos los tipos (artículos virtuales, lotes, moneda virtual y claves) emplean una estructura de datos similar. Comprender la estructura básica simplifica el trabajo con la API y le ayuda a orientarse más fácilmente en la documentación.\n\n<div class=\"note\"><b>Nota:</b><br><br>Algunas llamadas pueden incluir campos adicionales, pero no cambian la estructura básica.</div>\n\n**Identificación**\n\n- `merchant_id` — ID de la empresa en [Cuenta del editor](https://publisher.xsolla.com/)\n- `project_id` — ID del proyecto en Cuenta del editor\n- `sku` — SKU del artículo, único dentro del proyecto\n\n**Visualización en la tienda**\n\n- `name` — nombre del artículo\n- `description` — descripción del artículo\n- `image_url` — URL de la imagen\n- `is_enabled` — disponibilidad del artículo\n- `is_show_in_store` — si el artículo se muestra o no en el catálogo\n\nPara obtener más información sobre la gestión de la disponibilidad de artículos en el catálogo, consulte la [documentación](/es/items-catalog/catalog-features/items-availability/).\n\n**Organización**\n\n- `type` — tipo de artículo, p.\_ej., un artículo virtual (`virtual_item`) o lote (`bundle`)\n- `groups` — grupos a los que pertenece el artículo\n- `order` — orden de visualización en el catálogo\n\n**Condiciones de venta**\n\n- `prices` — precios en moneda real o virtual\n- `limits` — límites de compra\n- `periods` — periodos de disponibilidad\n- `regions` — restricciones regionales\n\n**Ejemplo de estructura de entidad principal:**\n\n```json\n{\n  \"attributes\": [],\n  \"bundle_type\": \"virtual_currency_package\",\n  \"content\": [\n    {\n      \"description\": {\n        \"en\": \"Main in-game currency\"\n      },\n      \"image_url\": \"https://.../image.png\",\n      \"name\": {\n        \"en\": \"Crystals\",\n        \"de\": \"Kristalle\"\n      },\n      \"quantity\": 500,\n      \"sku\": \"com.xsolla.crystal_2\",\n      \"type\": \"virtual_currency\"\n    }\n  ],\n  \"description\": {\n    \"en\": \"Crystals x500\"\n  },\n  \"groups\": [],\n  \"image_url\": \"https://.../image.png\",\n  \"is_enabled\": true,\n  \"is_free\": false,\n  \"is_show_in_store\": true,\n  \"limits\": {\n    \"per_item\": null,\n    \"per_user\": null,\n    \"recurrent_schedule\": null\n  },\n  \"long_description\": null,\n  \"media_list\": [],\n  \"name\": {\n    \"en\": \"Medium crystal pack\"\n  },\n  \"order\": 1,\n  \"periods\": [\n    {\n      \"date_from\": null,\n      \"date_until\": \"2020-08-11T20:00:00+03:00\"\n    }\n  ],\n  \"prices\": [\n    {\n      \"amount\": 20,\n      \"country_iso\": \"US\",\n      \"currency\": \"USD\",\n      \"is_default\": true,\n      \"is_enabled\": true\n    }\n  ],\n  \"regions\": [],\n  \"sku\": \"com.xsolla.crystal_pack_2\",\n  \"type\": \"bundle\",\n  \"vc_prices\": []\n}\n```\n\n# Flujo de compra básico\n\nLa API de Xsolla le permite implementar la lógica de una tienda en el juego, incluyendo la recuperación del catálogo de artículos, la gestión de la cesta, la creación de pedidos y el seguimiento de su estado. Dependiendo del escenario de integración, las llamadas API se dividen en subsecciones de **Admin** y **Catálogo**, que usan diferentes [esquemas de autenticación](/es/api/catalog/section/authentication).\n\nEl siguiente ejemplo muestra un flujo básico para establecer y operar una tienda, desde la creación de artículos hasta la compra.\n\n## Crear artículos y grupos (Admin)\n\nCree un catálogo de artículos para su tienda, como artículos virtuales, lotes o moneda virtual.\n\nEjemplos de llamadas API:\n- [Crear artículo virtual](/es/api/catalog/virtual-items-currency-admin/admin-create-virtual-item)\n- [Crear lote](/es/api/catalog/bundles-admin/admin-create-bundle)\n- [Crear moneda virtual](/es/api/catalog/virtual-items-currency-admin/admin-create-virtual-currency)\n\n## Establecer promociones, cadenas y límites (Admin)\n\nConfigure herramientas de adquisición de usuarios y monetización, como descuentos, bonificaciones, recompensas diarias o cadenas de ofertas.\n\nEjemplos de llamadas API:\n- [Crear promoción de bonificación](/es/api/liveops/promotions-bonuses/create-bonus-promotion)\n- [Crear recompensa diaria](/es/api/liveops/daily-chain-admin/admin-create-daily-chain)\n- [Crear promoción de oferta única del catálogo](/es/api/liveops/promotions-unique-catalog-offers/admin-create-unique-catalog-offer)\n\n## Obtener información del artículo (cliente)\n\nConfigure la visualización de artículos en su aplicación.\n\n<div class=\"notice\">\n  <b>Aviso:</b><br><br>\n    No utilice llamadas API de la subsección Admin para crear un catálogo de usuarios. Estas llamadas API tienen <a href=\"https://developers.xsolla.com/es/api/getting-started/#api_rate_limits\" target=\"_blank\">límites de frecuencia</a> y no están destinadas para el tráfico de usuarios.\n</div>\n\n<br>\n\nEjemplos de llamadas a la API:\n- [Obtener lista de artículos virtuales](/es/api/catalog/virtual-items-currency-catalog/get-virtual-items)\n- [Obtener lista de grupos de artículos](/es/api/catalog/virtual-items-currency-catalog/get-item-groups)\n- [Obtener lista de lotes](/es/api/catalog/bundles-catalog/get-bundle-list)\n- [Obtener lista de artículos vendibles](/es/api/catalog/common-catalog/get-sellable-items)\n\n<div class=\"note\">\n  <b>Nota:</b><br><br>\n    Por defecto, las llamadas API del catálogo devuelven artículos que están actualmente disponibles en la tienda en el momento de la solicitud. Para recuperar artículos que aún no están disponibles o que ya no lo están, incluya el parámetro <code>\"show_inactive_time_limited_items\": 1</code> en la solicitud del catálogo.\n</div>\n\n## Vender artículos\n\nPuede vender artículos utilizando los siguientes métodos:\n- Compra rápida: venda un código de artículo (SKU) varias veces.\n- Compra con cesta: el usuario añade artículos a la cesta, elimina artículos y actualiza cantidades dentro de un solo pedido.\n\nSi un artículo se compra utilizando moneda virtual en lugar de dinero real, utilice la llamada API [Crear pedido con artículo especificado comprado con moneda virtual](/es/api/catalog/virtual-payment/create-order-with-item-for-virtual-currency). La interfaz de pago no es necesaria, ya que el cargo se procesa cuando se ejecuta la llamada API.\n\nPara la compra de artículos gratuitos, utilice la llamada API [Crear pedido con artículo gratuito especificado](/es/api/catalog/free-item/create-free-order-with-item) o la llamada API [Crear pedido con cesta gratuita](/es/api/catalog/free-item/create-free-order). La interfaz de pago no es necesaria: el pedido se establece inmediatamente con el estado <code>done</code>.\n\n### Compra rápida\n\nUtilice la llamada API del lado del cliente para [crear un pedido con un artículo especificado](/es/api/catalog/payment-client-side/create-order-with-item). La llamada devuelve un token utilizado para abrir la interfaz de pago.\n\n<div class=\"note\">\n  <b>Nota:</b><br><br>\n    La información de descuento está disponible para el usuario únicamente en la interfaz de pago. Los códigos promocionales no son compatibles.\n</div>\n\n### Compra con cesta\n\nLa configuración y compra de la cesta se puede realizar en el cliente o en el lado del servidor.\n\n**Configurar y comprar una cesta en el cliente**\n\nImplemente la lógica de añadir y eliminar artículos por usted mismo. Antes de llamar a la API para establecer una cesta, no tendrá información sobre qué promociones se aplicarán a la compra. Esto implica que el coste total y los detalles de los artículos de bonificación añadidos no se conocerán.\n\nImplemente la siguiente lógica de cesta:\n1. Después de que el jugador haya llenado una cesta, utilice la llamada API [Llenar la cesta con artículos](/es/api/shop-builder/operation/cart-fill/). La llamada devuelve la información actual sobre los artículos seleccionados (precios antes y después de descuentos y artículos de bonificación).\n2. Actualice el contenido de la cesta basándose en las acciones de los usuarios:\n   - Para añadir un artículo o cambiar la cantidad del artículo, utilice la llamada API [Actualizar artículo de la cesta por ID de la cesta](/es/api/shop-builder/operation/put-item-by-cart-id/).\n   - Para eliminar un artículo, utilice la llamada API [Eliminar artículo de la cesta por ID de la cesta](/es/api/shop-builder/operation/delete-item-by-cart-id/).\n\n<div class=\"note\">\n  <b>Nota:</b><br><br>\n    Para obtener el estado actual de la cesta, utilice la llamada API Obtener la cesta del usuario actual.\n</div>\n\n3. Utilice la llamada API [Crear pedido con todos los artículos de la cesta actual](/es/api/shop-builder/operation/create-order/). La llamada devuelve el ID del pedido y el token de pago. El pedido recién creado se establece por defecto con el estado <code>new</code>.\n\n**Configurar y comprar una cesta en el servidor**\n\nEsta opción de configuración puede requerir más tiempo para configurar la cesta, ya que cada modificación que se realice en ella debe ir acompañada de llamadas API.\n\nImplemente la siguiente lógica de cesta:\n1. Después de que el jugador haya llenado una cesta, utilice la llamada API [Llenar la cesta con artículos](/es/api/catalog/cart-server-side). La llamada devuelve la información actual sobre los artículos seleccionados (precios antes y después de descuentos, y artículos de bonificación).\n2. Utilice la llamada API [Crear pedido con todos los artículos de la cesta actual](/es/api/shop-builder/operation/create-order/). La llamada devuelve el ID del pedido y el token de pago. El pedido recién creado se establece por defecto con el estado <code>new</code>.\n\n## Abrir interfaz de pago\n\nUtilice el token devuelto para abrir la interfaz de pago en una nueva ventana. Otras formas de abrir la interfaz de pago se describen en la [documentación](/es/payment-ui-and-flow/payment-ui/how-to-open-payment-ui/#open_payment_ui).\n\n| Acción                          | Punto final                                                                  |\n|:--------------------------------|:--------------------------------------------------------------------------|\n| Abrir en entorno de producción. | <code>https://secure.xsolla.com/paystation4/?token={token}</code>         |\n| Abrir en modo sandbox.          | <code>https://sandbox-secure.xsolla.com/paystation4/?token={token}</code> |\n\n<div class=\"note\">\n  <b>Nota:</b><br><br>\n    Utilice el modo sandbox durante el desarrollo y las pruebas. Las compras de prueba no hacen cargos en cuentas reales. Puede usar <a href=\"https://developers.xsolla.com/es/dev-resources/testing/test-cards/\">tarjetas bancarias de prueba</a>.\n\n    Tras realizar el primer pago real, se aplica una política estricta de pagos en aislador de proceso (sandbox). Un pago en modo sandbox está disponible solo para los usuarios especificados en [Cuenta del Editor > Configuración de la empresa > Usuarios](https://publisher.xsolla.com/0/settings/users).\n\n    Comprar moneda virtual y artículos con moneda real es posible solamente después de firmar un acuerdo de licencia con Xsolla. Para hacerlo, en [Cuenta del editor](https://publisher.xsolla.com/), vaya a **Acuerdos e impuestos > Acuerdos**, rellene el formulario de acuerdo y espere la confirmación. La revisión del acuerdo puede tardar hasta tres\_días laborables.\n</div>\n\nPara habilitar o deshabilitar el modo sandbox, cambie el valor del parámetro `sandbox` en la solicitud para compra rápida y compra con cesta. El modo sandbox está desactivado por defecto.\n\nPosibles estados del pedido:\n- `new`: pedido creado\n- `paid`: pago recibido\n- `done`: artículo entregado\n- `canceled`: pedido cancelado\n- `expired`: pedido expirado\n\nHaga un seguimiento del estado del pedido usando uno de los siguientes métodos:\n- [webhooks configurados en su servidor](/es/virtual-goods/own-ui/server-side-token-generation/set-up-order-tracking/#payments_integration_order_tracking)\n- [sondeo corto](/es/virtual-goods/own-ui/client-side-token-generation/set-up-order-tracking/#guides_shop_builder_integrate_store_get_order_status_via_short_polling)\n- [API de WebSocket](/es/virtual-goods/own-ui/client-side-token-generation/set-up-order-tracking/#guides_shop_builder_integrate_store_get_order_status_via_websocket_api)\n\n## Enlaces útiles\n\n- Autenticación\n- [Llamadas API por modelo de interacción](/es/api/catalog/section/authentication)\n- [Pruebas de pago](/es/dev-resources/testing/general-info/#general_overview)\n- [Establecer el seguimiento del estado del pedido](/es/virtual-goods/own-ui/client-side-token-generation/set-up-order-tracking/?link=200-api#payments_integration_order_tracking)\n- [Webhooks](/es/webhooks/overview)\n- [Límites de frecuencia](/es/api/login/rate-limits)\n- [Gestión de errores](/es/api/getting-started/#api_errors_handling)\n- [Claves de API](/es/api/getting-started/#api_keys_overview)\n\n# Paginación\n\nLas llamadas API que devuelven grandes conjuntos de registros (p.\_ej., al crear un catálogo) devuelven datos en páginas. La paginación es un mecanismo que limita el número de artículos devueltos en una sola respuesta de API y le permite recuperar páginas posteriores de manera secuencial.\n\nUtilice los siguientes artículos para controlar el número de artículos devueltos:\n\n- `limit` — número de artículos por página\n- `offset` — índice del primer artículo de la página (la numeración comienza desde 0)\n- `has_more` — indica si hay otra página disponible\n- `total_items_count` — número total de artículos\n\nEjemplo de solicitud:\n\n```\nGET /items?limit=20&offset=40\n```\n\nEjemplo de respuesta:\n\n```json\n{\n  \"items\": [...],\n  \"has_more\": true,\n  \"total_items_count\": 135\n}\n```\n\nSe recomienda enviar solicitudes posteriores hasta que la respuesta devuelva `has_more = false`.\n\n# Formato de fecha y hora\n\nLas fechas y valores de tiempo se transmiten en el formato [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601).\n\nSe admiten los siguientes:\n\n- Desfase UTC (tiempo universal coordinado)\n- Valor `null` cuando no hay restricción de tiempo para mostrar un artículo\n- [Marca de tiempo Unix](https://www.unixtimestamp.com/) (en segundos) utilizada en algunos campos\n\nFormato: `AAAA-MM-DDTHH:MM:SS±HH:MM`\n\nEjemplo: `2026-03-16T10:00:00+03:00`\n\n# Localización\n\nXsolla admite la localización de campos visibles por el usuario, como el nombre y la descripción del artículo. Los valores localizados se transmiten como un objeto en el que el código de idioma se utiliza como la clave. La lista completa de idiomas admitidos está disponible en la [documentación](/es/doc/shop-builder/references/supported-languages/).\n\n**Campos admitidos**\n\nLa localización puede especificarse para los siguientes parámetros:\n\n- `name`\n- `description`\n- `long_description`\n\n**Formato de configuración regional**\n\nLa clave de configuración regional puede especificarse en uno de los siguientes formatos:\n\n- Código de idioma de dos\_letras: `en`, `ru`\n- Código de idioma de cinco\_letras: `en-US`, `ru-RU`, `de-DE`\n\n**Ejemplos**\n\nEjemplo con un código de idioma de dos\_letras:\n\n```json\n{\n  \"name\": {\n    \"en\": \"Starter Pack\",\n    \"ru\": \"Стартовый набор\"\n  }\n}\n```\n\nEjemplo con un código de idioma de cinco\_letras:\n\n```json\n{\n  \"description\": {\n    \"en-US\": \"Premium bundle\",\n    \"de-DE\": \"Premium-Paket\"\n  }\n}\n```\n\n# Formato de respuesta de error\n\nSi ocurre un error, la API devuelve un estado HTTP y un cuerpo de respuesta JSON. La lista completa de errores relacionados con la tienda está disponible en la [documentación](/es/dev-resources/references/errors/store-errors/).\n\n**Ejemplo de respuesta:**\n\n```json\n{\n  \"errorCode\": 1102,\n  \"errorMessage\": \"Validation error\",\n  \"statusCode\": 422,\n  \"transactionId\": \"c9e1a...\"\n}\n```\n\n- `errorCode` — código de error.\n- `errorMessage` — descripción breve del error.\n- `statusCode` — estado de la respuesta HTTP.\n- `transactionId` — ID de la solicitud. Se devuelve solo en algunos casos.\n- `errorMessageExtended` — detalles adicionales del error, como los parámetros de la solicitud. Se devuelve solo en algunos casos.\n\n**Ejemplo de respuesta ampliada:**\n\n```json\n{\n  \"errorCode\": 7001,\n  \"errorMessage\": \"Chain not found\",\n  \"errorMessageExtended\": {\n    \"chain_id\": \"test_chain_id\",\n    \"project_id\": \"test_project_id\",\n    \"step_number\": 2\n  },\n  \"statusCode\": 404\n}\n```\n\n**Códigos de estado HTTP habituales**\n\n- `400` — solicitud no válida\n- `401` — error de autenticación\n- `403` — permisos insuficientes\n- `404` — recurso no encontrado\n- `422` — error de validación\n- `429` — límite de frecuencia excedido\n\n**Recomendaciones**\n\n- Gestione el estado HTTP y el cuerpo de la respuesta juntos.\n- Utilice `errorCode` para procesar errores relacionados con la lógica de la aplicación.\n- Utilice `transactionId` para identificar solicitudes más rápidamente al analizar errores."
  version: 2.0.0
  title: API de LiveOps
servers:
  - url: https://store.xsolla.com/api
tags:
  - name: promotion-limits-overview
    x-displayName: Descripción general
    description: >-
      Los límites de uso de promociones le permiten restringir el número de
      veces que un usuario específico puede usar una promoción. También puede
      configurar restablecimientos programados de los límites.


      Los límites se almacenan en el lado de Xsolla y se configuran en la
      configuración de la promoción en [Cuenta del
      editor](https://publisher.xsolla.com/0/projects/0/storefront/promotions) o
      a través del objeto `limits` en las siguientes llamadas API:

      * [Crear promoción de descuento para un
      artículo](/es/api/liveops/promotions-discounts/create-item-promotion/) o
      [Actualizar promoción de
      descuento](/es/api/liveops/promotions-discounts/update-item-promotion)

      * [Crear promoción de
      bonificación](/es/api/liveops/promotions-bonuses/create-bonus-promotion/)
      o [Actualizar la promoción de
      bonificación](/es/api/liveops/promotions-bonuses/update-bonus-promotion)


      La información de los límites se devuelve en el objeto
      `items.promotions.limits` en las siguientes llamadas API para recuperar el
      catálogo de artículos:

      * [Obtener lista de artículos
      virtuales](/es/api/catalog/virtual-items-currency-catalog/get-virtual-items/)

      * [Obtener lista de monedas
      virtuales](/es/api/catalog/virtual-items-currency-catalog/get-virtual-currency/)

      * [Obtener lista de paquetes de moneda
      virtual](/es/api/catalog/virtual-items-currency-catalog/get-virtual-currency-package/)

      * [Obtener lista de
      lotes](/es/api/catalog/bundles-catalog/get-bundle-list/)

      * [Obtener lista de
      juegos](/es/api/catalog/game-keys-catalog/get-games-list/)


      Las llamadas de API en la subsección **Gestión** del grupo **Límites** le
      permiten recuperar el estado actual de los límites y actualizarlos para un
      usuario específico; por ejemplo, reiniciar el contador después de realizar
      una misión o ajustar manualmente la cantidad restante.


      <div class="note">
        <b>Nota:</b><br><br>
        Para obtener información detallada sobre cómo configurar los límites en el catálogo, consulte la sección <a href="/es/liveops/promotion-tools/liveops-number-limits/">Límites de uso de promociones</a>.
      </div>


      Puede configurar
      [limits.per_user](/es/api/liveops/promotions-discounts/create-item-promotion#promotions-discounts/create-item-promotion/t=request&path=limits):
      un límite en el número de veces que un solo usuario puede usar una
      promoción.


      Los usuarios no autenticados siempre ven el número máximo de veces que se
      puede usar la promoción.


      Para mostrar los usos restantes de la promoción del usuario con el límite
      activo aplicado, transmita los datos de autorización del usuario al
      solicitar el catálogo de artículos.


      Para configurar un periodo de restablecimiento programado —diario, semanal
      o mensual— transmita el objeto `limits.recurrent_schedule` al
      [crear](/es/api/liveops/promotions-discounts/create-item-promotion#promotions-discounts/create-item-promotion/t=request&path=limits/recurrent_schedule)
      o
      [actualizar](/es/api/liveops/promotions-discounts/update-item-promotion#promotions-discounts/update-item-promotion/t=request&path=limits/recurrent_schedule)
      una promoción.


      **Escenario de configuración y aplicación de límites**


      1. Crea una promoción usando la llamada API [Crear promoción de descuento
      para un
      artículo](/es/api/liveops/promotions-discounts/create-item-promotion/) o
      [Crear promoción de
      bonificación](/es/api/liveops/promotions-bonuses/create-bonus-promotion/)
      y pasa el objeto `limits`.

      2. Solicita el catálogo para un usuario no autenticado: la respuesta
      devuelve el número máximo de usos de la promoción en el objeto
      `items.promotions.limits`.

      3. El usuario inicia sesión.

      4. Solicita el catálogo con el token de autorización del usuario: la
      respuesta devuelve el número restante de usos con el límite activo
      aplicado.

      5. El usuario selecciona un artículo promocional y hace una compra.

      6. Después del pago realizado correctamente, Xsolla actualiza el valor
      `items.promotions.limits.per_user`. Cuando llega a `0`, el artículo se
      devuelve en las llamadas API del catálogo sin descuento ni bonificación.

      7. Puede actualizar el límite usando las llamadas API de la subsección
      **Gestión**:
         * [actualizar todos los límites de promoción para un usuario especificado](/es/api/liveops/user-limits-admin/reset-all-user-promotions-limit/) o [actualizar los límites para una promoción específica](/es/api/liveops/user-limits-admin/reset-user-promotion-limit/)
         * [establecer un valor de límite específico](/es/api/liveops/user-limits-admin/set-user-promotion-limit/)
         * [aumentar](/es/api/liveops/user-limits-admin/add-user-promotion-limit/) o [disminuir el número disponible de usos](/es/api/liveops/user-limits-admin/remove-user-promotion-limit/)
      8. Recupera el valor de límite actualizado en `items.promotions.limits` en
      la siguiente solicitud de catálogo realizada con el token de autorización
      del usuario y lo muestra al usuario.


      ![Límites de
      promoción](https://cdn.xsolla.net/developers/current/images/api_docs/promotion-limit.svg)
  - name: promotions-overview
    x-displayName: Descripción general
    description: >-
      Las promociones son herramientas de marketing diseñadas para atraer nuevos
      usuarios y aumentar las ventas. Usando la API de Xsolla, puede configurar
      las siguientes promociones:


      * Descuentos: precios reducidos en artículos seleccionados.

      * Bonificaciones: artículos concedidos a los usuarios junto con su compra.

      * Cupones: códigos que permiten a los usuarios recibir uno o más artículos
      de bonificación al canjearlos.

      * Códigos promocionales: códigos que permiten a los usuarios recibir
      artículos de bonificación, un descuento en un artículo específico o un
      descuento en toda la cesta. A diferencia de los cupones que se canjean
      después de que el usuario los introduce, los códigos promocionales se
      canjean durante una compra (en el momento del pago).

      * Ofertas únicas: artículos ocultos que se muestran en el catálogo a los
      usuarios que han introducido un código de oferta única. Si no se introduce
      el código, los artículos no se muestran.


      Flujo de ejemplo para configurar una promoción de descuento:

      1. Cree artículos usando las llamadas de la subsección **Admin** de los
      grupos [Artículos virtuales y
      moneda](/es/api/catalog/virtual-items-currency-admin/admin-get-virtual-items-list/),
      [Lotes](/es/api/catalog/bundles-admin/admin-create-bundle) o [Claves del
      juego](/es/api/catalog/game-keys-admin).

      2. Cree una promoción usando la llamada [Crear promoción de descuento para
      un artículo](/es/api/liveops/promotions-discounts/create-item-promotion/).
      En la matriz `items`, transmita los SKU de los artículos correspondientes.

      3. Configure los periodos de validez de la promoción. Para hacerlo,
      invoque los métodos [Crear promoción de descuento para un
      artículo](/es/api/liveops/promotions-discounts/create-item-promotion/) o
      [Actualizar promoción del
      artículo](/es/api/liveops/promotions-discounts/update-item-promotion/), y
      transmita el campo `promotion_periods` como una matriz de objetos en la
      cual `date_from` define la fecha de inicio y `date_until` define la fecha
      de finalización del periodo de validez.

      4. Active una promoción usando la llamada [Actualizar la promoción del
      artículo](/es/api/liveops/promotions-discounts/update-item-promotion/).
      Transmita el parámetro `"is_enabled": true`.

      5. Para obtener información sobre los precios de los artículos, incluidos
      los precios con descuento, llame a los métodos de la API del cliente para
      obtener un catálogo de artículos de las subsecciones [Común >
      Catálogo](/es/api/catalog/tag/common-catalog/), [Artículos virtuales y
      moneda >
      Catálogo](/es/api/catalog/virtual-items-currency-catalog/get-virtual-items/),
      y [Lotes > Catálogo](/es/api/catalog/bundles-catalog/get-bundle-list/).


      ![Ejemplo de configuración de
      promoción](https://cdn.xsolla.net/developers/current/images/api_docs/promo-overview.svg)


      Consulte nuestra documentación para obtener información detallada sobre la
      configuración de promociones:

      *
      [Descuentos](https://developers.xsolla.com/es/liveops/promotion-tools/discounts/)

      *
      [Bonificaciones](https://developers.xsolla.com/es/liveops/promotion-tools/bonuses/)

      *
      [Cupones](https://developers.xsolla.com/es/liveops/promotion-tools/coupons/)

      * [Códigos
      promocionales](https://developers.xsolla.com/es/liveops/promotion-tools/promo-codes/)

      * [Ofertas exclusivas de
      catálogo](https://developers.xsolla.com/es/liveops/promotion-tools/unique-offer/)
  - name: promotions-common
    x-displayName: Llamadas comunes de API
    description: >-
      Puede llamar a los métodos API de esta subsección para gestionar
      diferentes tipos de promociones.
  - name: promotions-coupons
    x-displayName: Cupones
    description: >-
      Llame a los métodos API de esta subsección para configurar y gestionar
      promociones de cupones.


      <div class="note">
        <p><b>Nota:</b></p>
        <p>Consulte nuestra <a href="https://developers.xsolla.com/es/liveops/promotion-tools/coupons/">documentación</a> para obtener información detallada sobre los cupones.</p>
      </div>
  - name: promotions-promo-codes
    x-displayName: Códigos promocionales
    description: >-
      Llame a los métodos API de esta subsección para configurar y gestionar
      promociones de códigos promocionales.


      <div class="note">
        <p><b>Nota:</b></p>
        <p>Consulte nuestra <a href="https://developers.xsolla.com/es/liveops/promotion-tools/promo-codes/">documentación</a> para obtener información detallada sobre los códigos promocionales.</p>
      </div>
  - name: promotions-unique-catalog-offers
    x-displayName: Ofertas únicas por catálogo
    description: >-
      Llame a los métodos API de esta subsección para configurar y gestionar
      ofertas exclusivas de catálogo.


      <div class="note">
        <p><b>Nota:</b></p>
        <p>Consulte nuestra <a href="https://developers.xsolla.com/es/liveops/promotion-tools/unique-offer/">documentación</a> para obtener información detallada sobre las ofertas exclusivas.</p>
      </div>
  - name: promotions-discounts
    x-displayName: Descuentos
    description: >-
      Llame a los métodos API de esta subsección para configurar y gestionar
      promociones de descuento.


      <div class="note">
        <p><b>Nota:</b></p>
        <p>Consulte nuestra <a href="https://developers.xsolla.com/es/liveops/promotion-tools/discounts/">documentación</a> para obtener información detallada sobre los descuentos.</p>
      </div>
  - name: promotions-bonuses
    x-displayName: Bonificaciones
    description: >-
      Llame a los métodos API de esta subsección para configurar y gestionar
      promociones de bonificaciones.


      <div class="note">
        <p><b>Nota:</b></p>
        <p>Consulte nuestra <a href="https://developers.xsolla.com/es/liveops/promotion-tools/bonuses/">documentación</a> para obtener información detallada sobre las bonificaciones.</p>
      </div>
  - name: personalized-catalog
    x-displayName: Catálogo personalizado
    description: >-
      La personalización le permite especificar las condiciones para mostrar el
      catálogo de artículos y aplicar promociones únicamente para usuarios
      autorizados específicos. Las condiciones se definen en función de los
      atributos de usuario y le permiten ofrecer artículos y promociones que
      sean más relevantes para usuarios concretos.


      Los siguientes tipos de personalización están disponibles:


      * [Personalización en el lado de
      Xsolla](/es/liveops/promotion-tools/personalization/#guides_personalization_on_xsolla_side).
      Las reglas y la lógica de personalización se configuran y almacenan en el
      lado de Xsolla. Transmite los atributos del usuario, y Xsolla los utiliza
      para generar un catálogo personalizado.

      * [Personalización del lado del
      socio](/es/liveops/promotion-tools/personalization/#guides_personalization_on_partner_side).
      Configura las reglas y la lógica de personalización en su lado y envía una
      carga útil del catálogo final para un usuario específico a Xsolla.


      <div class="note">
        <b>Nota:</b><br><br>
        Solo puede usar un tipo de personalización. Para cambiarlo, siga las
        <a href="/es/liveops/promotion-tools/personalization/#guides_personalization_change">instrucciones</a>.
      </div>


      Para configurar la personalización en el lado de Xsolla usando la API de
      Xsolla:


      1. Cree artículos usando las llamadas API de la subsección **Admin** de
      los grupos [Artículos virtuales y
      moneda](/es/api/catalog/virtual-items-currency-admin/admin-get-virtual-items-list/),
      [Lotes](/es/api/catalog/bundles-admin/admin-create-bundle) o [Claves del
      juego](/es/api/catalog/game-keys-admin).

      2. [Configure los atributos del usuario usando la API de Xsolla
      Login](/es/liveops/promotion-tools/personalization/#web_shop_guide_personalization_setting_attributes)
      y manténgalos sincronizados actualizando los datos en Xsolla cada vez que
      se produzcan cambios en su juego.

      3. Configure la personalización para artículos o promociones:
          * Para personalizar el catálogo de artículos, defina las reglas de visualización del catálogo usando la llamada API [Crear regla de filtrado del catálogo](/es/api/liveops/personalized-catalog/create-filter-rule):
              * En la matriz [attribute_conditions](/es/api/liveops/personalized-catalog/create-filter-rule#personalized-catalog/create-filter-rule/t=request&path=attribute_conditions), especifica las condiciones que determinan la disponibilidad de los artículos en función de los atributos del usuario.
              * En la matriz [artículos](/es/api/liveops/personalized-catalog/create-filter-rule#personalized-catalog/create-filter-rule/t=request&path=items), facilite la lista de artículos que deberían ser visibles para el usuario si sus atributos coinciden con las condiciones especificadas.
          * Para configurar promociones personalizadas, use las [llamadas API de creación y actualización para el tipo de promoción requerido](/es/api/liveops/promotions-discounts/create-item-promotion). En la matriz [attribute_conditions](/es/api/liveops/promotions-discounts/create-item-promotion), especifique las condiciones que determinan la disponibilidad de la promoción en función de los atributos del usuario.

      4. Transmita el [JWT del
      usuario](/es/api/login/getting-user-token?#getting-user-token) con los
      atributos del usuario a las [llamadas API de recuperación de
      catálogo](https://developers.xsolla.com/es/api/catalog/virtual-items-currency-catalog/get-virtual-items)
      para recibir un catálogo personalizado.


      **Secuencia para configurar y aplicar la personalización en el lado de
      Xsolla para el catálogo de artículos:**


      ![Personalización para el catálogo de
      artículos](https://cdn.xsolla.net/developers/current/images/api_docs/personalization-catalog.png)


      **Secuencia para configurar y aplicar la personalización en el lado de
      Xsolla para las promociones:**


      ![Personalización para las
      promociones](https://cdn.xsolla.net/developers/current/images/api_docs/personalization-liveops.png)


      <div class="note">

      <b>Nota:</b><br><br>

      Se proporciona información detallada:

      <ul>
        <li>en la <a href="/es/liveops/promotion-tools/personalization/">guía para configurar la personalización en el lado de Xsolla y del socio</a></li>
        <li>en el tutorial paso a paso sobre <a href="/es/doc/shop-builder/tutorials/personalization-tutorial/">personalización del catálogo de artículos en el lado de Xsolla</a></li>
      </ul>

      </div>
  - name: user-limits-admin
    x-displayName: Gestión
  - name: reward-chain-value-points-overview
    x-displayName: Descripción general
    description: >-
      Las cadenas de recompensas animan a los usuarios a comprar en la tienda
      utilizando moneda real. Por cada compra, los usuarios ganan puntos de
      valor y avanzan en la cadena de recompensas. Si los usuarios forman parte
      de clanes, sus compras aportan puntos de valor a todo el clan. Para
      obtener información detallada sobre cómo configurar las cadenas de
      recompensas, consulte la sección [Sistema de
      recompensas](https://developers.xsolla.com/es/liveops/promotion-tools/reward-system/).


      Para configurar las cadenas de recompensas, utilice las llamadas API de la
      subsección **Admin**. Para mostrar las cadenas y reclamar recompensas,
      utilice las llamadas API de la subsección **Client**. Para gestionar las
      cadenas de recompensas de clanes, utilice las llamadas API de la
      subsección **Clans client**.


      <b>Ejemplo del flujo de configuración de la cadena de recompensas:</b>


      1. Cree artículos usando las llamadas API de la subsección **Admin** de
      los grupos [Artículos virtuales y
      moneda](https://developers.xsolla.com/es/api/catalog/virtual-items-currency-overview)
      o [Lotes](https://developers.xsolla.com/es/api/catalog/bundles-admin).

      2. Cree puntos de valor mediante la llamada API [Crear punto de
      valor](https://developers.xsolla.com/es/api/liveops/reward-chain-value-points-admin/admin-create-value-points).

      3. Asigne puntos de valor a los artículos mediante la llamada API [Fijar
      puntos de valor para los
      artículos](https://developers.xsolla.com/es/api/liveops/reward-chain-value-points-admin/admin-set-items-value-point-reward).
      Los usuarios reciben puntos de valor tras comprar estos artículos.

      4. Cree una cadena mediante la llamada API  [Crear cadena de
      recompensas](https://developers.xsolla.com/es/api/liveops/reward-chain-value-points-admin/admin-create-reward-chain).
      Para activar la cadena, transmita el parámetro `is_enabled: true`.

      5. Implemente la visualización de la cadena de recompensas. Para ello,
      solicite la lista de cadenas disponibles mediante la llamada API [Obtener
      las cadenas de recompensas del usuario
      actual](https://developers.xsolla.com/es/api/liveops/reward-chain-client/get-reward-chains-list).
      La respuesta contiene todas las cadenas activas con sus pasos y estados.

      6. Implemente la visualización del saldo de puntos de valor. Para ello,
      utilice la llamada API [Obtener el saldo de puntos de valor del usuario
      actual](https://developers.xsolla.com/es/api/liveops/reward-chain-client/get-user-reward-chain-balance).

      7. Implemente la reclamación de recompensas por pasos. Para ello, utilice
      la llamada API [Reclamar recompensa por
      paso](https://developers.xsolla.com/es/api/liveops/reward-chain-client/claim-user-reward-chain-step-reward).

      8. Configure el seguimiento del estado de los pedidos, por ejemplo,
      mediante
      [webhooks](https://developers.xsolla.com/es/webhooks/section/overview),
      para recibir sin demora los datos sobre las recompensas reclamadas y
      concedérselas al usuario.


      ![Flujo de configuración de la cadena de
      recompensas](https://cdn.xsolla.net/developers/current/images/api_docs/reward-chains-and-value-points-overview.svg)
  - name: reward-chain-value-points-admin
    x-displayName: Admin
  - name: reward-chain-client
    x-displayName: Cliente
  - name: clan-reward-chain-client
    x-displayName: Cliente de clanes
  - name: daily-chain-overview
    x-displayName: Descripción general
    description: >-
      Daily rewards motivate users to log into the store every day to receive
      free items. The behavior when a day is skipped depends on the [chain
      type](/es/api/liveops/daily-chain-admin/admin-create-daily-chain#daily-chain-admin/admin-create-daily-chain/t=request&path=&oneof=0/type).
      For daily rewards to work correctly, you need to configure [user
      authentication](/es/api/catalog#section/Authentication). Unauthenticated
      users can see the full daily reward chain but cannot claim rewards. For
      detailed information on configuring daily rewards, refer to the [Daily
      rewards](/es/liveops/promotion-tools/daily-rewards/) section.


      Chains are configured using the API calls from the **Admin** subsection.
      To grant rewards, use the API calls from the **Client** subsection.


      Daily chain configuration scenario:


      1. Create items using the API calls from the **Admin** subsection of the
      [Virtual items and
      currency](/es/api/catalog/virtual-items-currency-admin/admin-get-virtual-items-list/)
      or [Bundles](/es/api/catalog/bundles-admin/admin-create-bundle) groups.

      2. Create a chain using the [Create daily
      reward](/es/api/liveops/daily-chain-admin/admin-create-daily-chain) API
      call.

      3. Activate the chain by passing the `"is_enabled": true` parameter to the
      [Create daily
      reward](/es/api/liveops/daily-chain-admin/admin-create-daily-chain/) API
      call.

      4. Request the list of available chains using the [Get current user's
      daily rewards](/es/api/liveops/daily-chain-client/get-daily-chains-list)
      API call, passing the [user
      JWT](/es/api/catalog/section/authentication/authentication-using-user's-jwt).
      The response contains all active chains with their steps and statuses.

      5. Set up item granting via
      [webhooks](/es/webhooks/section/osnovnye-polozheniya).

      6. Grant the user their daily reward using the [Claim daily reward
      step](/es/api/liveops/daily-chain-client/claim-user-daily-chain-step-reward)
      API call, passing `daily_chain_id` and `step_number`.


      ![Recompensas
      diarias](https://cdn.xsolla.net/developers/current/images/api_docs/daily-rewards.svg)
  - name: daily-chain-admin
    x-displayName: Admin
  - name: daily-chain-client
    x-displayName: Cliente
  - name: offer-chains-overview
    x-displayName: Descripción general
    description: >-
      Las cadenas de ofertas son una secuencia de pasos, cada uno de los cuales
      contiene un artículo que los usuarios reciben gratis o que compran como
      parte de una oferta activa. Las cadenas de ofertas pueden incluir
      artículos exclusivos que solo están disponibles dentro de la cadena, así
      como artículos a precios rebajados en comparación con los precios de
      tienda. Para obtener información detallada sobre cómo configurar esta
      herramienta de marketing, consulte la sección [Offer
      chains](https://developers.xsolla.com/es/liveops/promotion-tools/offer-chains/).


      Para configurar las cadenas de ofertas, utilice las llamadas API de la
      subsección **Admin**. Para mostrar las cadenas e implementar la lógica
      para gestionar los artículos que reciben los usuarios, utilice las
      llamadas API de la subsección **Client**.


      <b>Ejemplo del flujo de configuración de la cadena de ofertas:</b>


      1. Cree artículos usando las llamadas API de la subsección **Admin** de
      los grupos [Artículos virtuales y
      moneda](https://developers.xsolla.com/es/api/catalog/virtual-items-currency-overview)
      o [Lotes](https://developers.xsolla.com/es/api/catalog/bundles-admin).


      2. Cree una cadena mediante la llamada API [Crear cadena de
      ofertas](https://developers.xsolla.com/es/api/liveops/offer-chain-admin/admin-create-offer-chain).
      Para activar la cadena, transmita el parámetro `is_enabled: true`.


      3. Implemente la visualización de la cadena de ofertas. Para ello,
      solicite la lista de cadenas disponibles mediante la llamada API [Obtener
      las cadenas de ofertas del usuario
      actual](https://developers.xsolla.com/es/api/liveops/offer-chain-client/get-offer-chains-list).
      La respuesta contiene todas las cadenas activas con sus pasos y estados.


      4. Implemente la lógica para gestionar los artículos que reciben los
      usuarios:

          - Si el artículo del paso es gratuito, utilice la llamada API [Reclamar paso de cadena de ofertas gratuito](https://developers.xsolla.com/es/api/liveops/offer-chain-client/claim-user-offer-chain-step-reward). Transmita `offer_chain_id` y `step_number` en la solicitud.

          - Si el artículo del paso es de pago, utilice la llamada API [Crear pedido para el paso de cadena de ofertas de pago](https://developers.xsolla.com/es/api/liveops/offer-chain-client/order-user-offer-chain-step-reward). Transmita `offer_chain_id` y `step_number` en la solicitud. La respuesta devuelve un `order_id` y un token para abrir la interfaz de pago.

      5. Configure el seguimiento del estado de los pedidos, por ejemplo,
      mediante
      [webhooks](https://developers.xsolla.com/es/webhooks/section/overview),
      para recibir sin demora los datos de los artículos reclamados o comprados
      y concedérselos al usuario.


      ![Flujo de configuración de la cadena de
      recompensas](https://cdn.xsolla.net/developers/current/images/api_docs/offer-chains-overview.svg)
  - name: offer-chain-admin
    x-displayName: Admin
  - name: offer-chain-client
    x-displayName: Cliente
  - name: upsell-overview
    x-displayName: Descripción general
    description: >-
      Upsell is a sales method in which the user is offered to buy an item with
      additional value. For example, this could be the item that is in the
      greatest demand among other users. You can also configure regional
      restrictions for upsell items. For detailed information, refer to the
      [Upsell](/es/liveops/promotion-tools/upsell/) section.


      The list of items configured for upsell and the upsell status (enabled or
      disabled) are returned by the [Get information about upsell in
      project](/es/api/liveops/upsell-admin/get-upsell-configurations-for-project-admin)
      API method. On the client side, the list of items is returned by the [Get
      list of upsell items in
      project](/es/api/liveops/upsell-client/get-upsell-for-project-client) API
      method and displayed to the user at the appropriate point in the purchase
      flow.


      Upsell configuration scenario:


      1. Create items using the API calls from the **Admin** subsection of the
      [Virtual items and
      currency](/es/api/catalog/virtual-items-currency-admin/admin-get-virtual-items-list/),
      [Bundles](/es/api/catalog/bundles-admin/admin-create-bundle), or [Game
      keys](/es/api/catalog/game-keys-admin) groups.

      2. Set up the upsell using the [Create
      upsell](/es/api/liveops/upsell-admin/post-upsell) API call. Pass the SKUs
      of the required items in the `items` array.

      3. Activate upsell for the project using the [Activate/Deactivate
      project's
      upsell](/es/api/liveops/upsell-admin/put-upsell-toggle-active-inactive)
      API call.

      4. Display the upsell offer to the user at the appropriate point in the
      purchase flow using the [Get list of upsell items in
      project](/es/api/liveops/upsell-client/get-upsell-for-project-client) API
      call.

      5. Implement the opening of the payment UI to pay for the order. For
      example, you can use the [Create order with all items from particular
      cart](/es/api/catalog/payment-client-side/create-order-by-cart-id) API
      call. The response returns a token to open the payment UI.

      6. Configure order status tracking, e.g., using
      [webhooks](/es/webhooks/overview), to promptly receive data about
      successfully paid items and grant them to the user.


      ![Upsell
      scenario](https://cdn.xsolla.net/developers/current/images/api_docs/Upsell.svg)
  - name: upsell-admin
    x-displayName: Admin
  - name: upsell-client
    x-displayName: Cliente
paths:
  /v3/project/{project_id}/admin/promotion:
    get:
      summary: Obtener toda la lista de promociones
      description: Obtiene la lista de promociones de un proyecto.
      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: Activar promoción
      description: Activa una promoción.
      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: La promoción se activó correctamente.
        '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: Desactivar promoción
      description: Desactiva una promoción.
      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: La promoción se desactivó correctamente.
        '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: Obtener promoción canjeable por código
      description: >-
        Obtiene la promoción mediante un código promocional o un código de
        cupón.
      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: Canjear código de cupón
      description: >-
        Canjea un código de cupón. El usuario recibe una bonificación tras
        canjear un cupón. <br>


        <div class="note">
          <strong>Nota:</strong><br><br>
            Esta llamada API utiliza un JWT de usuario para la autorización.<br><br>
            Incluya el token en el encabezado <code>Authorization</code> con el siguiente formato: <code>Bearer &lt;user_JWT&gt;</code>. Para obtener más información sobre el JWT de usuario, consulte el bloque <strong>Seguridad</strong> para esta llamada.
        </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: Consigue recompensas en forma de cupones
      description: >-
        Obtiene recompensas en forma de cupones por su código.

        Puede usarse para permitir a los usuarios elegir uno de muchos artículos
        como bonificación.

        El caso más habitual es elegir un DRM si el cupón contiene un juego como
        bonificación (`type=unit`). <br>


        <div class="note">
          <strong>Nota:</strong><br><br>
            Esta llamada API utiliza un JWT de usuario para la autorización.<br><br>
            Incluya el token en el encabezado <code>Authorization</code> con el siguiente formato: <code>Bearer &lt;user_JWT&gt;</code>. Para obtener más información sobre el JWT de usuario, consulte el bloque <strong>Seguridad</strong> para esta llamada.
        </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: Crear promoción de cupones
      description: Crea una promoción de cupones.
      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: El cupón se creó correctamente.
          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: Obtener la lista de promociones de cupones
      description: Obtiene la lista de promociones de cupones de un proyecto.
      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: Actualizar promoción de cupones
      description: Actualiza una promoción de cupones.
      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: El cupón se actualizó correctamente.
        '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: Obtener promoción de cupones
      description: Obtiene una promoción de cupones especificada.
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
      responses:
        '200':
          description: El cupón se recibió correctamente.
          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: Eliminar una promoción de cupones
      description: >-
        Elimina la [promoción de
        cupones](https://developers.xsolla.com/es/doc/shop-builder/features/coupons/).
        La promoción eliminada:

        * Desaparece de la lista de promociones establecidas en su proyecto.

        * Ya no se aplica al catálogo de artículos ni a la cesta. El usuario no
        puede obtener artículos de bonificación con esta promoción.


        Después de eliminarla, la promoción no se puede restaurar.

        Los códigos de cupón procedentes de la promoción eliminada pueden
        [añadirse](https://developers.xsolla.com/es/api/shop-builder/operation/create-coupon-code/)
        a las promociones existentes.
      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: La promoción de cupones se eliminó correctamente.
        '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: Activar promoción de cupones
      description: >-
        Activa una promoción de cupones.

        La promoción de cupones creada está deshabilitada por defecto.

        No estará lista para el canje hasta que la active.

        Utilice este punto final para habilitar y activar una promoción de
        cupones.
      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: El cupón se activó correctamente.
        '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: Desactivar promoción de cupones
      description: >-
        Desactiva una promoción de cupones.

        La promoción de cupones creada está deshabilitada por defecto.

        No estará lista para su canje hasta que la active.

        Utilice este punto final para deshabilitar y desactivar una promoción de
        cupones.
      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: El cupón se desactivó correctamente.
        '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: Crear código de cupón
      description: Crea un código de cupón.
      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: Obtener códigos de cupón
      description: >-
        Obtiene códigos de cupón.


        La respuesta incluye el número total de códigos de la promoción
        (`total_count`) y los códigos de la página actual (`codes`). Para
        obtener la página siguiente, aumente el `offset` según el valor de
        `limit` (por ejemplo, `“offset”: 100` y, a continuación, `“offset”:
        200`) hasta que haya obtenido todos los códigos.


        En la mayoría de los casos, `“limit”: 100` o `“limit”: 1000` es
        suficiente. Reserve los valores más altos, como `“limit”: 10000` , para
        exportaciones masivas puntuales y evite usar `“limit”: 50000` salvo que
        sea necesario.
      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: Generar códigos de cupón
      description: "Genera códigos de cupón.\n\nDirectrices para la generación de códigos:\n\n* No hay un número máximo total de códigos por promoción, pero cada solicitud está limitada a 50\_000 códigos. Las solicitudes con un número superior devuelven el error `422 Unprocessable Entity`. Si necesita más de 50\_000 códigos, envíe varias solicitudes.\n\n* Para una mayor fiabilidad, recomendamos generar los códigos en lotes más pequeños, de hasta 10\_000 por solicitud. Por ejemplo, para crear 100\_000 códigos, envíe 10 solicitudes con `\"count\": 10000` en lugar de 2 solicitudes con `\"count\": 50000`. Espere a recibir una respuesta para cada solicitud antes de enviar la siguiente.\n\n* Tenga en cuenta que el límite de solicitudes está fijado en 15 por segundo. Cuando genere grandes volúmenes, envíe las solicitudes de forma secuencial para evitar superar el límite y recibir un error `429`.\n\n* Para obtener la lista de códigos, llame al método [Obtener códigos de cupón](/es/api/liveops/promotions-coupons/get-coupon-codes).\n\n| Parámetro | Valor |\n|---|---|\n| Número mínimo de códigos por solicitud. | 1 |\n| Número máximo de códigos por solicitud. Úselo únicamente cuando necesite el lote más grande posible en una sola operación. | 50\_000 |\n| Número recomendado de códigos por solicitud. | Hasta\_10,000. Si necesita crear más, envíe varias solicitudes consecutivas. |"
      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: Los códigos se generaron correctamente.
          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: Canjear código promocional
      description: >-
        Canjea una promoción de códigos promocionales.

        Tras canjear un código promocional, el usuario obtendrá artículos
        gratuitos o se reducirá el precio de la cesta o de determinados
        artículos.
      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: Eliminar código promocional de la cesta
      description: >-
        Elimina un código promocional de una cesta.

        Una vez eliminado el código promocional, el precio total de todos los
        artículos de la cesta se volverá a calcular sin bonificaciones ni
        descuentos proporcionados por un código promocional.
      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: Obtener recompensas de códigos promocionales
      description: >-
        Obtiene recompensas de códigos promocionales por su código.

        Puede usarse para permitir a los usuarios elegir uno de muchos artículos
        como bonificación.

        El caso habitual es elegir un DRM si el código promocional contiene un
        juego como bonificación (`type=unit`). <br>


        <div class="note">
          <strong>Nota:</strong><br><br>
            Esta llamada API utiliza un JWT de usuario para la autorización.<br><br>
            Incluya el token en el encabezado <code>Authorization</code> con el siguiente formato: <code>Bearer &lt;user_JWT&gt;</code>. Para obtener más información sobre el JWT de usuario, consulte el bloque <strong>Seguridad</strong> para esta llamada.
        </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: Crear promoción de códigos promocionales
      description: Crea una promoción de códigos promocionales.
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
      tags:
        - promotions-promo-codes
      security:
        - basicAuth: []
      requestBody:
        $ref: '#/components/requestBodies/Promotions_promocode-create'
      responses:
        '201':
          description: El código promocional se creó correctamente.
          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: Obtener la lista de promociones de códigos promocionales
      description: Obtiene la lista de códigos promocionales de un proyecto.
      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: Actualizar promoción de códigos promocionales
      description: Actualiza una promoción de códigos promocionales.
      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: El código promocional se actualizó correctamente.
        '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: Obtener promoción de códigos promocionales
      description: Obtiene una promoción de códigos promocionales especificada.
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
      responses:
        '200':
          description: El código promocional se recibió correctamente.
          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: Eliminar promoción de códigos promocionales
      description: >-
        Elimina la [promoción de códigos
        promocionales](https://developers.xsolla.com/es/doc/shop-builder/features/promo-codes/).
        La promoción eliminada:

        * Desaparece de la lista de promociones establecidas en su proyecto.

        * Ya no se aplica al catálogo de artículos ni a la cesta. El usuario no
        puede obtener artículos de bonificación ni comprar artículos usando esta
        promoción.


        Después de eliminarla, la promoción no se puede restaurar.

        Los códigos promocionales de la promoción eliminada se pueden
        [añadir](https://developers.xsolla.com/es/api/shop-builder/operation/create-promo-code-code/)
        a las promociones existentes.
      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: La promoción de códigos promocionales se eliminó correctamente.
        '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: Activar promoción de códigos promocionales
      description: >-
        Activa una promoción de códigos promocionales.


        La promoción de códigos promocionales creada está desactivada por
        defecto.

        No estará lista para el canje hasta que la active.

        Utilice este punto final para habilitar y activar una promoción de
        códigos promocionales.
      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: El código promocional se activó correctamente.
        '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: Desactivar promoción de códigos promocionales
      description: >-
        Desactiva una promoción de códigos promocionales.


        La promoción de códigos promocionales creada está deshabilitada por
        defecto.

        No estará lista para el canje hasta que la active.

        Utilice este punto final para deshabilitar y desactivar una promoción de
        códigos promocionales.
      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: El cupón se desactivó correctamente.
        '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: Crear código de promoción de códigos promocionales
      description: Crea un código para una promoción de códigos promocionales.
      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: Obtener códigos de una promoción de códigos promocionales
      description: >-
        Obtiene los códigos de una promoción de códigos promocionales.


        La respuesta incluye el número total de códigos de la promoción
        (`total_count`) y los códigos de la página actual (`codes`). Para
        obtener la página siguiente, aumente el `offset` según el valor de
        `limit` (por ejemplo, `“offset”: 100` y, a continuación, `“offset”:
        200`) hasta que haya obtenido todos los códigos.


        En la mayoría de los casos, `“limit”: 100` o `“limit”: 1000` es
        suficiente. Reserve los valores más altos, como `“limit”: 10000` , para
        exportaciones masivas puntuales y evite usar `“limit”: 50000` salvo que
        sea necesario.
      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: Generar códigos para una promoción de códigos promocionales
      description: "Genera códigos para una promoción de códigos promocionales.\n\nDirectrices para la generación de códigos:\n\n* No hay un número máximo total de códigos por promoción, pero cada solicitud está limitada a 50\_000 códigos. Las solicitudes con un número superior devuelven el error `422 Unprocessable Entity`. Si necesita más de 50\_000 códigos, envíe varias solicitudes.\n\n* Para una mayor fiabilidad, recomendamos generar los códigos en lotes más pequeños, de hasta 10\_000 por solicitud. Por ejemplo, para crear 100\_000 códigos, envíe 10 solicitudes con `\"count\": 10000` en lugar de 2 solicitudes con `\"count\": 50000`. Espere a recibir una respuesta para cada solicitud antes de enviar la siguiente.\n\n* Tenga en cuenta que el límite de solicitudes está fijado en 15 por segundo. Cuando genere grandes volúmenes, envíe las solicitudes de forma secuencial para evitar superar el límite y recibir un error `429`.\n\n* Para obtener la lista de códigos, llame al método [Obtener códigos de una promoción de códigos promocionales](/es/api/liveops/promotions-promo-codes/get-promocode-codes).\n\n| Parámetro | Valor |\n|---|---|\n| Número mínimo de códigos por solicitud. | 1 |\n| Número máximo de códigos por solicitud. Úselo únicamente cuando necesite el lote más grande posible en una sola operación. | 50\_000 |\n| Número recomendado de códigos por solicitud. | Hasta\_10,000. Si necesita crear más, envíe varias solicitudes consecutivas. |"
      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: Los códigos se generaron correctamente.
          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: Crear promoción de descuento para un artículo
      description: >-
        Crea una promoción de descuento para un artículo.


        Las promociones proporcionan un descuento (%) en los artículos.

        El descuento se aplicará a todos los precios de los artículos
        especificados.
      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: Obtener lista de promociones del artículo
      description: >-
        Obtenga la lista de promociones de artículos de un proyecto.


        Las promociones proporcionan un descuento (%) en los artículos.

        El descuento se aplicará a todos los precios de los artículos
        especificados.
      parameters:
        - name: project_id
          in: path
          required: true
          description: ID del proyecto.
          schema:
            type: integer
            default: 59080
        - name: limit
          in: query
          required: false
          description: Límite para el número de elementos presentes en la página.
          schema:
            type: integer
        - name: offset
          in: query
          required: false
          description: >-
            Número del elemento a partir del cual se genera la lista (el conteo
            empieza desde el 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: Actualizar la promoción del artículo
      description: >-
        Actualiza la promoción.


        <div class='note'><b>Nota</b><br><br>Los nuevos datos sustituirán a los
        antiguos. Si desea actualizar solo una parte de una promoción, deberá
        transferir también todos los datos requeridos en la solicitud.</div>


        Las promociones proporcionan un descuento (%) en los artículos.

        El descuento se aplicará a todos los precios de los artículos
        especificados.
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/promotion_id-path-param'
      responses:
        '204':
          description: La promoción se actualizó correctamente.
        '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: Obtener promoción del artículo
      description: >-
        Obtiene la promoción aplicada a artículos concretos.


        Las promociones proporcionan un descuento (%) en los artículos.

        El descuento se aplicará a todos los precios de los artículos
        especificados.
      responses:
        '200':
          description: La promoción del artículo se recibió correctamente.
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: integer
                    description: >-
                      ID de promoción. Identificador único de la promoción en el
                      proyecto.
                  promotion_periods:
                    $ref: '#/components/schemas/promotion_periods'
                  is_enabled:
                    $ref: '#/components/schemas/Promotions_is_enabled'
                  name:
                    type: object
                    description: >-
                      Nombre de la promoción. Debe contener pares clave/valor,

                      en los cuales la clave es la configuración regional con el
                      formato "^[a-z]{2}-[A-Z]{2}$", el valor es una cadena
                      (string).
                    additionalProperties:
                      type: string
                      example:
                        en-US: Promotion
                        ru-RU: Акция
                  discount:
                    type: object
                    properties:
                      percent:
                        type:
                          - string
                          - 'null'
                        description: >-
                          Porcentaje del descuento.

                          El precio del artículo se reducirá en función del
                          valor calculado de este porcentaje.
                        default: '10.00'
                  items:
                    type:
                      - array
                      - 'null'
                    items:
                      description: >-
                        La lista de artículos a los que se aplicará el
                        descuento.
                      type: object
                      properties:
                        sku:
                          type: string
                          description: SKU del artículo.
                          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: >-
            Promoción no encontrada. Asegúrese de que el `promotion_id` es
            correcto.
          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: Eliminar la promoción de artículos
      tags:
        - promotions-discounts
      security:
        - basicAuth: []
      operationId: delete-item-promotion
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      description: >-
        Elimina la [promoción de
        descuento](https://developers.xsolla.com/es/doc/shop-builder/features/discounts/).
        La promoción eliminada:

        * Desaparece de la lista de promociones establecidas en su proyecto.

        * Ya no se aplica al catálogo de artículos ni a la cesta. El usuario no
        puede obtener artículos con esta promoción.


        Después de eliminarla, la promoción no se puede restaurar.
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/promotion_id-path-param'
      responses:
        '204':
          description: La promoción se eliminó correctamente.
        '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: Crear promoción de bonificaciones
      description: >-
        Crea la promoción de bonificaciones.


        La promoción añade artículos de bonificación gratuitos a la compra
        realizada por un usuario.

        La promoción puede aplicarse a cada compra dentro de un proyecto o a una
        compra que incluya artículos concretos.
      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: Obtenga la lista de promociones de bonificaciones
      description: >-
        Obtiene la lista de promociones de bonificaciones de un proyecto.


        La promoción añade artículos de bonificación gratuitos a la compra
        realizada por un usuario.

        La promoción puede aplicarse a cada compra dentro de un proyecto o a una
        compra que incluya artículos concretos.
      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: Actualizar la promoción de bonificación
      description: >-
        Actualiza la promoción.


        <div class='note'><b>Nota</b><br><br>Los nuevos datos sustituirán a los
        antiguos. Si desea actualizar solo una parte de una promoción, deberá
        transferir también todos los datos requeridos en la solicitud.</div>


        La promoción añade artículos de bonificación gratuitos a la compra
        realizada por un usuario.

        La promoción puede aplicarse a cada compra dentro de un proyecto o a una
        compra que incluya artículos concretos.
      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: La promoción se actualizó correctamente.
        '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: Obtener una promoción de bonificación
      description: >-
        Obtiene la promoción de bonificaciones.


        La promoción añade artículos de bonificación gratuitos a la compra
        realizada por un usuario.

        La promoción puede aplicarse a cada compra dentro de un proyecto o a una
        compra que incluya artículos concretos.
      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: Eliminar la promoción de bonificaciones
      tags:
        - promotions-bonuses
      security:
        - basicAuth: []
      operationId: delete-bonus-promotion
      x-badges:
        - name: Server-side
          color: '#95ff80'
        - name: Admin
          color: '#d7dee0'
      description: >-
        Elimina la [promoción de
        bonificaciones](https://developers.xsolla.com/es/doc/shop-builder/features/bonuses/).
        La promoción eliminada:

        * Desaparece de la lista de promociones establecidas en su proyecto.

        * Ya no se aplica al catálogo de artículos ni a la cesta. El usuario no
        puede obtener artículos de bonificación con esta promoción.


        Después de eliminarla, la promoción no se puede restaurar.
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/promotion_id-path-param'
      responses:
        '204':
          description: La promoción se eliminó correctamente.
        '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: Verificar el código de promoción
      description: >-
        Determina si el código es un código promocional o un código de cupón, y
        si el usuario puede aplicarlo. <br>


        <div class="note">
          <strong>Nota:</strong><br><br>
            Esta llamada API utiliza un JWT de usuario para la autorización.<br><br>
            Incluya el token en el encabezado <code>Authorization</code> con el siguiente formato: <code>Bearer &lt;user_JWT&gt;</code>. Para obtener más información sobre el JWT de usuario, consulte el bloque <strong>Seguridad</strong> para esta llamada.
        </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: Crear una promoción única de ofertas por catálogo
      description: Crea una promoción de oferta exclusiva de catálogo.
      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: Se ha creado correctamente una oferta exclusiva de catálogo.
          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: Obtenga una lista de promociones de ofertas exclusivas de catálogo
      description: >-
        Obtiene la lista de promociones de ofertas exclusivas de catálogo de un
        proyecto.
      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: Actualizar la promoción de ofertas exclusivas de catálogo
      description: Actualiza la promoción de oferta exclusiva de catálogo.
      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: La oferta exclusiva de catálogo se ha actualizado correctamente.
        '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: Consiga una promoción de oferta de catálogo única
      description: Obtiene la promoción de oferta de catálogo única especificada.
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/external_id-promotion-path-param'
      responses:
        '200':
          description: Se ha recibido correctamente una oferta exclusiva de catálogo.
          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: Eliminar la promoción de oferta única de catálogo
      description: >-
        Elimina la [promoción única de oferta de
        catálogo](https://developers.xsolla.com/es/doc/shop-builder/features/unique-offer/).
        La promoción eliminada:

        * Desaparece de la lista de promociones establecidas en su proyecto.

        * Ya no se aplica al catálogo de artículos ni a la cesta. El usuario no
        puede comprar artículos con esta promoción.


        Después de eliminarla, la promoción no se puede restaurar.
      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: La oferta exclusiva de catálogo se eliminó correctamente.
        '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: Activar promoción de oferta exclusiva de catálogo
      description: >-
        Activa una promoción de oferta exclusiva de catálogo.

        La promoción de oferta única de catálogo creada está desactivada por
        defecto.

        No se puede canjear hasta que la active.

        Utilice este punto final para activar y activar una promoción de
        cupones.
      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: La oferta exclusiva de catálogo se ha activado correctamente.
        '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: Desactivar la promoción de oferta exclusiva de catálogo
      description: >-
        Desactiva una promoción de oferta exclusiva de catálogo.

        La promoción de oferta única de catálogo creada está desactivada por
        defecto.

        No se puede canjear hasta que la active.

        Utilice este punto final para desactivar y desactivar una promoción de
        cupones.
      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: La oferta exclusiva de catálogo se ha desactivado correctamente.
        '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: Crear un código de oferta exclusiva de catálogo
      description: Crea un código de oferta exclusiva de catálogo.
      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: Obtenga códigos de oferta exclusiva de catálogo
      description: Obtiene códigos de oferta exclusiva de catálogo.
      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: Generar códigos de oferta exclusiva de catálogo
      description: Genera códigos de oferta exclusiva de catálogo.
      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: Los códigos se han generado correctamente.
          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: Obtener el límite de códigos promocionales para el usuario especificado
      description: >-
        Obtiene el número restante de veces que el usuario especificado puede
        utilizar el código promocional.


        La API de límite del usuario permite limitar el número de veces que los
        usuarios pueden utilizar un código promocional. Para configurar el
        límite del usuario, vaya a Admin:

        * [Promo
        Codes](https://developers.xsolla.com/es/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: Artículo no encontrado.
          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: Solicitud no válida.
          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: Obtener el límite de cupones para un usuario especificado
      description: >-
        Obtiene el número restante de veces que el usuario especificado puede
        utilizar el cupón.


        La API de límite del usuario le permite limitar el número de veces que
        los usuarios pueden utilizar un cupón. Para configurar este límite de
        usuario, vaya a Admin:

        *
        [Coupons](https://developers.xsolla.com/es/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: Artículo no encontrado.
          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: Solicitud no válida.
          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: Obtener límite del código promocional para los códigos
      description: >-
        Obtiene el número restante de veces que se pueden utilizar los códigos.
        Para filtrar los códigos, utilice el parámetro de consulta `codes`.


        Para configurar el límite de códigos propiamente dicho, vaya a Admin:

        * [Promo
        Codes](https://developers.xsolla.com/es/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: Artículo no encontrado.
          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: Solicitud no válida.
          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: Obtener límites de código único de cupón
      description: >-
        Obtiene el número restante de veces que se pueden utilizar los códigos.
        Para filtrar los códigos, utilice el parámetro de consulta `codes`.


        Para configurar el límite de códigos propiamente dicho, vaya a Admin:

        *
        [Coupons.](https://developers.xsolla.com/es/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: Artículo no encontrado.
          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: Solicitud no válida.
          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: Obtener lista de reglas de filtrado del catálogo
      description: Obtiene todas las reglas que se aplican a los atributos de usuario.
      responses:
        '200':
          description: Las reglas se recibieron correctamente.
          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: Crear regla de filtrado del catálogo
      description: Crear regla para atributos de usuario.
      responses:
        '201':
          description: La regla se creó correctamente.
          content:
            application/json:
              schema:
                type: object
                properties:
                  rule_id:
                    type: number
                    description: ID de regla.
              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: >-
        Obtener todas las reglas del catálogo para la búsqueda en el lado del
        cliente
      description: >-
        Obtiene una lista de todas las reglas del catálogo para buscar en el
        lado del cliente.


        <div class="notice"><strong>Atención:</strong><br><br>Devuelve solamente
        el ID de la regla, el nombre y is_enabled</div>
      responses:
        '200':
          description: Las reglas se recibieron correctamente.
          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: Obtener regla de filtro del catálogo
      description: Obtiene una regla específica que se aplica a los atributos del usuario.
      responses:
        '200':
          description: La regla se recibió correctamente.
          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: Actualizar regla de filtro del catálogo
      description: >-
        Actualiza una regla específica que se aplica a los atributos de usuario.
        Se utilizará el valor por defecto para una propiedad no especificada (si
        la propiedad no es obligatoria).
      responses:
        '204':
          description: Actualización realizada correctamente.
        '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: Revisar regla de filtro del catálogo
      description: >-
        Actualiza una regla específica que se aplica a los atributos de usuario.
        Se utilizará el valor actual para una propiedad no especificada.
      responses:
        '204':
          description: La actualización se realizó correctamente.
        '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: Eliminar regla de filtro del catálogo
      description: Elimina una regla específica.
      responses:
        '204':
          description: La eliminación se realizó correctamente.
        '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: >-
        Actualizar todos los límites de la promoción para un usuario
        especificado
      description: >-
        Actualiza todos los límites de todas las promociones destinadas al
        usuario especificado para que pueda utilizar estas promociones de nuevo.


        La API de límite del usuario le permite limitar el número de veces que
        los usuarios pueden utilizar una promoción. Para configurar el límite
        del usuario, vaya a la sección Admin del tipo de promoción deseada:

        * [Discount
        Promotions](https://developers.xsolla.com/es/api/shop-builder/tag/promotions-discounts/)

        * [Bonus
        Promotions](https://developers.xsolla.com/es/api/shop-builder/tag/promotions-bonuses/)
      responses:
        '200':
          description: El límite de la promoción se actualizó correctamente.
        '401':
          $ref: '#/components/responses/Common_401-invalid-basic-auth'
        '404':
          description: Artículo no encontrado.
          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: Solicitud no válida.
          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: Actualizar el límite de promoción para los usuarios
      description: >-
        Actualiza el límite de la promoción para que un usuario pueda utilizar
        esta promoción de nuevo. Si el parámetro *user* es `null`, esta llamada
        actualiza este límite para todos los usuarios.


        La API de límite del usuario le permite limitar el número de veces que
        los usuarios pueden utilizar una promoción. Para configurar el límite
        del usuario, vaya a la sección Admin del tipo de promoción deseada:

        * [Discount
        Promotions](https://developers.xsolla.com/es/api/shop-builder/tag/promotions-discounts/)

        * [Bonus
        Promotions](https://developers.xsolla.com/es/api/shop-builder/tag/promotions-bonuses/)
      responses:
        '200':
          description: El límite de la promoción se actualizó correctamente.
        '401':
          $ref: '#/components/responses/Common_401-invalid-basic-auth'
        '404':
          description: Artículo no encontrado.
          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: Solicitud no válida.
          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: Obtener el límite de promoción para el usuario especificado
      description: >-
        Obtiene el número restante de veces que el usuario especificado puede
        utilizar la promoción dentro del límite aplicado.


        La API de límite del usuario le permite limitar el número de veces que
        los usuarios pueden utilizar una promoción. Para configurar el límite
        del usuario, vaya a la sección Admin del tipo de promoción deseada:

        * [Discount
        Promotions](https://developers.xsolla.com/es/api/shop-builder/tag/promotions-discounts/)

        * [Bonus
        Promotions](https://developers.xsolla.com/es/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: Artículo no encontrado.
          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: Solicitud no válida.
          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: Aumentar el límite de la promoción para el usuario especificado
      description: >-
        Aumenta el número restante de veces que el usuario especificado puede
        utilizar la promoción dentro del límite aplicado.


        La API de límite del usuario le permite limitar el número de veces que
        los usuarios pueden utilizar una promoción. Para configurar el límite
        del usuario, vaya a la sección Admin del tipo de promoción deseada:

        * [Discount
        Promotions](https://developers.xsolla.com/es/api/shop-builder/tag/promotions-discounts/)

        * [Bonus
        Promotions](https://developers.xsolla.com/es/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: Artículo no encontrado.
          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: Solicitud no válida.
          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: Establecer el límite de la promoción para el usuario especificado
      description: >-
        Establece el número de veces que el usuario especificado puede usar una
        promoción dentro del límite aplicado después de que se haya aumentado o
        reducido.


        La API de límite del usuario le permite limitar el número de veces que
        los usuarios pueden utilizar una promoción. Para configurar el límite
        del usuario, vaya a la sección Admin del tipo de promoción deseada:

        * [Discount
        Promotions](https://developers.xsolla.com/es/api/shop-builder/tag/promotions-discounts/)

        * [Bonus
        Promotions](https://developers.xsolla.com/es/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: Artículo no encontrado.
          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: Solicitud no válida.
          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: Reducir el límite de la promoción para el usuario especificado
      description: >-
        Reduce el número de veces que el usuario especificado puede utilizar una
        promoción dentro del límite aplicado.


        La API de límite del usuario le permite limitar el número de veces que
        los usuarios pueden utilizar una promoción. Para configurar el límite
        del usuario, vaya a la sección Admin del tipo de promoción deseada:

        * [Discount
        Promotions](https://developers.xsolla.com/es/api/shop-builder/tag/promotions-discounts/)

        * [Bonus
        Promotions](https://developers.xsolla.com/es/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: Artículo no encontrado.
          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: Solicitud no válida.
          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: Obtener lista de puntos de valor
      description: >-
        Obtiene la lista de puntos de valor dentro de un proyecto para su
        administración.
      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: Crear un punto de valor
      description: Crea un punto de valor.
      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: Obtener punto de valor
      description: >-
        Obtiene un punto de valor por el SKU dentro de un proyecto para su
        administración.
      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: Actualizar punto de valor
      description: Actualiza un punto de valor identificado por un 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: El punto de valor se actualizó correctamente.
          content: {}
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
        '422':
          $ref: '#/components/responses/422-admin-create-update-rc-vp-invalid-request'
    delete:
      summary: Eliminar puntos de valor
      description: Elimina un punto de valor identificado por un 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: El punto de valor se eliminó correctamente.
          content: {}
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
  /v2/project/{project_id}/admin/items/{value_point_sku}/value_points/rewards:
    get:
      summary: Obtener lista de artículos con puntos de valor
      description: >-
        Obtiene la lista de todos los artículos con puntos de valor dentro de un
        proyecto para su administración.
      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: Establecer puntos de valor para los artículos
      description: >-
        Asigna puntos de valor a uno o varios artículos por un SKU. Los usuarios
        reciben puntos de valor después de comprar estos artículos.


        Recuerde que esta solicitud PUT sobrescribe todos los puntos de valor
        establecidos previamente para los artículos del proyecto.


        Para evitar la eliminación involuntaria de puntos de valor, incluya
        todos los artículos y sus respectivos puntos de valor en cada solicitud
        PUT.


        Si solo desea actualizar los puntos de valor de un artículo específico
        conservando los puntos de valor de otros artículos, debe recuperar el
        conjunto actual de puntos de valor mediante una solicitud GET, modificar
        los puntos de valor del artículo deseado y, luego, devolver el conjunto
        modificado de puntos de valor con los puntos de valor actualizados para
        el artículo específico.
      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: >-
            Se actualizaron correctamente las recompensas de puntos de valor
            para los artículos.
          content: {}
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/sellable-item-by-sku_404'
    patch:
      summary: Actualizar parcialmente los puntos de valor para los artículos
      description: "Actualiza parcialmente la cantidad de puntos de valor de uno o más artículos según el SKU del artículo. Los usuarios reciben estos puntos de valor después de comprar los artículos especificados.\n\nPrincipios de actualización de los puntos de valor:\n  * Si un artículo aún no tiene puntos de valor, el envío de un valor distinto de cero en el campo `amount` los genera.\n  * Si un artículo ya tiene puntos de valor, enviar un valor distinto de cero en el campo `amount` los actualiza.\n  * Si `amount` se establece en 0, se eliminan los puntos de valor existentes para ese artículo.\n\nA diferencia del método `PUT` ([Establecer puntos de valor para artículos](https://developers.xsolla.com/es/api/shop-builder/operation/admin-set-items-value-point-reward/)), este método `PATCH` no sobrescribe todos los puntos de valor existentes para los artículos del proyecto, solo actualiza los artículos especificados.\n\nUna sola solicitud puede actualizar hasta 100\_artículos. No se pueden incluir SKU de artículos duplicados en la misma solicitud."
      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: >-
            Se actualizaron correctamente las recompensas de puntos de valor
            para los artículos.
          content: {}
        '401':
          $ref: '#/components/responses/401-invalid-basic-auth'
        '404':
          $ref: '#/components/responses/sellable-item-by-sku_404'
    delete:
      summary: Eliminar puntos de valor de los artículos
      description: Elimina las recompensas de puntos de valor de TODOS los artículos.
      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: >-
            Las recompensas de puntos de valor para los artículos se eliminaron
            correctamente.
          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: Obtener las cadenas de recompensas del usuario actual
      description: "Punto final de cliente. Obtiene las cadenas de recompensas del usuario actual.\n\n<div class=\"notice\">\n  <strong>Atención:</strong><br><br>\n    Todos los proyectos tienen una limitación en el número de artículos que puede\n    obtener en la respuesta. El valor predeterminado y máximo es de <strong>50\_artículos\n    por cada respuesta.</strong> Para obtener más datos página por página, utilice los campos <b>limit</b>\n    y <b>offset</b>.</div>\n\n<br>\n\n<div class=\"note\">\n  <strong>Nota:</strong><br><br>\n    Esta llamada API utiliza un JWT de usuario para la autorización.<br><br>\n    Incluya el token en el encabezado <code>Authorization</code> con el siguiente formato: <code>Bearer &lt;user_JWT&gt;</code>. Para obtener más información sobre el JWT de usuario, consulte el bloque <strong>Seguridad</strong> para esta llamada.\n</div>"
      security:
        - XsollaLoginUserJWT: []
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/limit-query-param'
        - $ref: '#/components/parameters/offset-query-param'
      responses:
        '200':
          $ref: '#/components/responses/200-client-get-reward-chains-list'
  /v2/project/{project_id}/user/reward_chain/{reward_chain_id}/balance:
    get:
      tags:
        - reward-chain-client
      operationId: get-user-reward-chain-balance
      x-badges:
        - name: Client-side
          color: '#80eaff'
      summary: Obtener el saldo de puntos de valor del usuario actual
      description: >-
        Punto final del cliente. Obtiene el saldo actual de puntos de valor del
        usuario. <br>


        <div class="note">
          <strong>Nota:</strong><br><br>
            Esta llamada API utiliza un JWT de usuario para la autorización.<br><br>
            Incluya el token en el encabezado <code>Authorization</code> con el siguiente formato: <code>Bearer &lt;user_JWT&gt;</code>. Para obtener más información sobre el JWT de usuario, consulte el bloque <strong>Seguridad</strong> para esta llamada.
        </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: Reclamar recompensa por paso
      description: >-
        Punto final del cliente. Reclama la recompensa por paso del usuario
        actual en una cadena de recompensas. <br>


        <div class="note">
          <strong>Nota:</strong><br><br>
            Esta llamada API utiliza un JWT de usuario para la autorización.<br><br>
            Incluya el token en el encabezado <code>Authorization</code> con el siguiente formato: <code>Bearer &lt;user_JWT&gt;</code>. Para obtener más información sobre el JWT de usuario, consulte el bloque <strong>Seguridad</strong> para esta llamada.
        </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: >-
            Ha reclamado correctamente la recompensa por paso del usuario actual
            de una cadena de recompensas.
        '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: >-
            La lista de los 10 principales contribuyentes a la cadena de
            recompensas del clan.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    name:
                      type: string
                      example: Rocket
                      description: >-
                        User ID. This is the ID sending to Xsolla during
                        authorization and links the user to your Xsolla Login
                        project.
                    contributed_amount:
                      type: integer
                      example: 100
                      description: The amount of value points contributed by the user.
              examples:
                clan:
                  summary: User has a clan
                  value:
                    - name: winner
                      contributed_amount: 555
                    - name: Rocket
                      contributed_amount: 398
                    - name: MrJoe
                      contributed_amount: 201
                    - name: beginner
                      contributed_amount: 1
                without-clan:
                  summary: User doesn't belong to a clan
                  value: []
      security:
        - XsollaLoginUserJWT: []
      parameters:
        - name: project_id
          in: path
          required: true
          description: ID del proyecto.
          schema:
            type: integer
            example: 44056
        - name: reward_chain_id
          in: path
          required: true
          description: ID de la cadena de recompensas.
          schema:
            type: integer
            example: 101
      summary: Obtén los 10 mejores contribuyentes a la cadena de recompensas bajo clan
      description: "Recupera la lista de los 10\_principales contribuyentes a la cadena de recompensas específica a la que pertenece el clan del usuario actual. Si un usuario no pertenece a ningún clan, la llamada devuelve una matriz vacía. <br>\n\n<div class=\"note\">\n  <strong>Nota:</strong><br><br>\n    Esta llamada API utiliza un JWT de usuario para la autorización.<br><br>\n    Incluya el token en el encabezado <code>Authorization</code> con el siguiente formato: <code>Bearer &lt;user_JWT&gt;</code>. Para obtener más información sobre el JWT de usuario, consulte el bloque <strong>Seguridad</strong> para esta llamada.\n</div>"
  /v2/project/{project_id}/user/clan/update:
    put:
      tags:
        - clan-reward-chain-client
      operationId: user-clan-update
      x-badges:
        - name: Client-side
          color: '#80eaff'
      responses:
        '200':
          $ref: '#/components/responses/200-client-update-user-clan'
        '401':
          $ref: '#/components/responses/Promotions_401-invalid-client-auth'
      security:
        - XsollaLoginUserJWT: []
      parameters:
        - name: project_id
          in: path
          required: true
          description: ID del proyecto.
          schema:
            type: integer
            default: 44056
      summary: Actualice el clan del usuario actual
      description: >-
        Actualiza el clan de un usuario actual a través de los atributos de
        usuario. Reclama todas las recompensas de las cadenas de recompensas que
        no se reclamaron para un clan anterior y las devuelve en la respuesta.
        Si el usuario estaba en un clan y ahora no lo está, se revocará su
        inclusión en el clan. Si el usuario cambió de clan, se cambiará el clan.
        <br>


        <div class="note">
          <strong>Nota:</strong><br><br>
            Esta llamada API utiliza un JWT de usuario para la autorización.<br><br>
            Incluya el token en el encabezado <code>Authorization</code> con el siguiente formato: <code>Bearer &lt;user_JWT&gt;</code>. Para obtener más información sobre el JWT de usuario, consulte el bloque <strong>Seguridad</strong> para esta llamada.
        </div>
  /v3/project/{project_id}/admin/reward_chain:
    get:
      summary: Obtener lista de cadenas de recompensas
      description: >-
        Obtiene la lista de cadenas de recompensas.


        <div class="notice"><strong>Atención</strong><br><br>Todos los proyectos
        tienen la limitación del número de artículos que se pueden obtener en la
        respuesta. El valor por defecto y máximo es <strong>10 artículos por
        respuesta.</strong> Para obtener más datos página por página, utilice
        los campos <b>limit</b> y <b>offset</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: Crear una cadena de recompensas
      description: Crea una cadena de recompensas.
      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: Obtener cadena de recompensas
      description: Consigue una cadena de recompensas concreta.
      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: Actualizar cadena de recompensas
      description: Actualiza una cadena de recompensas concreta.
      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: Eliminar cadena de recompensas
      description: Elimina una cadena de recompensas concreta.
      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: Activar/desactivar cadena de recompensas
      description: Habilitar/deshabilitar cadena de recompensas.
      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: Restablecer cadena de recompensas
      description: >-
        Restablece el saldo de puntos de valor y el progreso de todos los
        usuarios en la cadena de recompensas.<br> El saldo está vinculado al
        tipo de puntos de valor, no a una cadena de recompensas concreta. Si
        estos puntos de valor se utilizan en otras cadenas, el saldo se
        restablecerá en todas las cadenas que utilicen dichos puntos de
        valor.<br> Tras el reinicio, podrá actualizar el periodo de validez de
        la cadena de recompensas y los usuarios podrán volver a progresar en
        ella.<br> El saldo del clan se calcula como la suma de los saldos de sus
        miembros. Por lo tanto, tras reiniciar, el saldo del clan también se
        reinicia.<br> Esta solicitud es irreversible y se aplica a todos los
        usuarios del proyecto.


        <div class="notice"><strong>Aviso</strong>
          <br><br>
         No debe restablecer la cadena de recompensas durante su periodo de validez. En este caso, los usuarios pueden perder los puntos de valor ganados antes de reclamar su recompensa.
        </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: Obtener lista de recompensas diarias
      description: "Obtiene una lista de recompensas diarias para su administración.\n\n<div class=\"notice\"><strong>Aviso:</strong><br><br>Un método devuelve una lista paginada de artículos. El valor máximo y por defecto es de <strong>50\_artículos por respuesta.</strong> Para obtener más artículos de la lista, utilice los parámetros `limit` y `offset` y obtenga más páginas. Por ejemplo, al llamar a un método con `limit = 25` y `offset = 100`, la respuesta devuelve 25\_artículos comenzando desde el artículo 101 en la lista global.</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: Crear recompensa diaria
      description: Crea una recompensa diaria.
      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: Obtener recompensa diaria
      description: Obtiene una recompensa diaria concreta para su administración.
      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: Actualizar recompensa diaria
      description: Actualiza una recompensa diaria concreta.
      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: La recompensa diaria se ha actualizado correctamente.
          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: Eliminar recompensa diaria
      description: Elimina una recompensa diaria concreta.
      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: La recompensa diaria se ha eliminado correctamente.
          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: Activar o desactivar recompensa diaria
      description: Activa o desactiva una recompensa diaria.
      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: Se ha desactivado o activado la recompensa diaria.
          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: Restablecer recompensa diaria
      description: >-
        Restablece el progreso de todos los usuarios en la recompensa diaria.
        Solo se aplica a las recompensas diarias del tipo `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: Se ha restablecido la recompensa diaria.
          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: Obtener recompensas diarias del usuario actual
      description: "Punto final del cliente. Obtiene las recompensas diarias del usuario actual.\n\n<div class=\"notice\"><strong>Aviso:</strong><br><br>Un método devuelve una lista paginada de artículos. El valor máximo y por defecto es de <strong>50\_artículos por respuesta.</strong> Para obtener más artículos de la lista, utilice los parámetros <code>limit</code> y <code>offset</code> y obtenga más páginas. Por ejemplo, al llamar a un método con <code>limit = 25</code> y <code>offset = 100</code>, la respuesta devuelve 25\_artículos comenzando desde el artículo 101 en la lista global.</div>\n\n<br>\n\n<div class=\"note\">\n  <strong>Nota:</strong><br><br>\n    Esta llamada API utiliza un JWT de usuario para la autorización.<br><br>\n    Incluya el token en el encabezado <code>Authorization</code> con el siguiente formato: <code>Bearer &lt;user_JWT&gt;</code>. Para obtener más información sobre el JWT de usuario, consulte el bloque <strong>Seguridad</strong> para esta llamada.\n</div>"
      security:
        - XsollaLoginUserJWT: []
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/limit-query-param'
        - $ref: '#/components/parameters/offset-query-param'
      responses:
        '200':
          $ref: '#/components/responses/200-client-get-daily-chains-list'
        '401':
          $ref: '#/components/responses/401-client-auth-error'
  /v2/project/{project_id}/user/daily_chain/{daily_chain_id}:
    get:
      tags:
        - daily-chain-client
      operationId: get-user-daily-chain-by-id
      x-badges:
        - name: Client-side
          color: '#80eaff'
      summary: Obtener recompensa diaria del usuario actual por su ID
      description: >-
        Punto final del cliente. Obtiene la recompensa diaria del usuario actual
        por su ID. <br>


        <div class="note">
          <strong>Nota:</strong><br><br>
            Esta llamada API utiliza un JWT de usuario para la autorización.<br><br>
            Incluya el token en el encabezado <code>Authorization</code> con el siguiente formato: <code>Bearer &lt;user_JWT&gt;</code>. Para obtener más información sobre el JWT de usuario, consulte el bloque <strong>Seguridad</strong> para esta llamada.
        </div>
      security:
        - XsollaLoginUserJWT: []
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/daily_chain_id-path-param'
      responses:
        '200':
          description: La recompensa diaria del usuario se ha obtenido correctamente.
          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: Reclamar paso de recompensa diaria
      description: >-
        Punto final de cliente. Reclama la recompensa por pasos del usuario
        actual de una recompensa diaria. Todos los pasos solo pueden reclamarse
        en orden secuencial. La recompensa por un paso omitido no se puede
        obtener a cambio de moneda virtual o real, ni viendo un anuncio. <br>


        <div class="note">
          <strong>Nota:</strong><br><br>
            Esta llamada API utiliza un JWT de usuario para la autorización.<br><br>
            Incluya el token en el encabezado <code>Authorization</code> con el siguiente formato: <code>Bearer &lt;user_JWT&gt;</code>. Para obtener más información sobre el JWT de usuario, consulte el bloque <strong>Seguridad</strong> para esta llamada.
        </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: >-
            Se ha reclamado correctamente la recompensa por pasos del usuario
            actual para un paso de recompensa diaria.
        '401':
          $ref: '#/components/responses/401-client-auth-error'
        '404':
          $ref: '#/components/responses/404-daily-chain-step-not-found'
        '422':
          description: El paso no se puede reclamar.
          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: Obtener las cadenas de ofertas del usuario actual
      description: >-
        Obtiene las cadenas de ofertas del usuario actual.


        <div class="notice"><strong>Aviso</strong><br><br>Todos los proyectos
        tienen un límite de número de artículos que pueden devolverse en una
        sola respuesta. El valor por defecto y máximo es <strong>30 artículos
        por respuesta</strong>. Para obtener más datos, utilice los parámetros
        de consulta <code>limit</code> y <code>offset</code> para la
        paginación.</div>


        <br>


        <div class="note">
          <strong>Nota:</strong><br><br>
            Esta llamada API utiliza un JWT de usuario para la autorización.<br><br>
            Incluya el token en el encabezado <code>Authorization</code> con el siguiente formato: <code>Bearer &lt;user_JWT&gt;</code>. Para obtener más información sobre el JWT de usuario, consulte el bloque <strong>Seguridad</strong> para esta llamada.
        </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: Obtener la cadena de ofertas del usuario actual por ID
      description: >-
        Obtiene la cadena de ofertas del usuario actual por el ID de la cadena
        de ofertas. <br>


        <div class="note">
          <strong>Nota:</strong><br><br>
            Esta llamada API utiliza un JWT de usuario para la autorización.<br><br>
            Incluya el token en el encabezado <code>Authorization</code> con el siguiente formato: <code>Bearer &lt;user_JWT&gt;</code>. Para obtener más información sobre el JWT de usuario, consulte el bloque <strong>Seguridad</strong> para esta llamada.
        </div>
      security:
        - XsollaLoginUserJWT: []
      parameters:
        - $ref: '#/components/parameters/project_id-path-param'
        - $ref: '#/components/parameters/offer_chain_id-path-param'
      responses:
        '200':
          description: La cadena de ofertas del usuario se ha obtenido correctamente.
          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: Reclamar paso de cadena de ofertas gratuito
      description: >-
        Completa la progresión del usuario actual por el paso de la cadena de
        ofertas y concede la recompensa asociada.


        <div class="notice">
          <strong>Aviso</strong><br><br>
         Utilice esta llamada solo para los pasos gratuitos de la cadena de ofertas.
         Para los pasos que requieran un pago en moneda real, utilice la llamada <a href="/es/api/shop-builder/operation/order-user-offer-chain-step-reward">Crear pedido para el paso de cadena de ofertas de pago</a>.
        </div>


        <br>


        <div class="note">
          <strong>Nota:</strong><br><br>
            Esta llamada API utiliza un JWT de usuario para la autorización.<br><br>
            Incluya el token en el encabezado <code>Authorization</code> con el siguiente formato: <code>Bearer &lt;user_JWT&gt;</code>. Para obtener más información sobre el JWT de usuario, consulte el bloque <strong>Seguridad</strong> para esta llamada.
        </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: >-
            El paso gratuito se ha reclamado correctamente y se ha concedido la
            recompensa.
          content:
            application/json:
              schema:
                type: object
                properties:
                  order_id:
                    type: integer
                    description: ID del pedido.
              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: >-
            El paso no se puede reclamar. Asegúrese de que se han completado
            todos los pasos anteriores y de que el paso se indica como gratuito.
          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: Crear pedido para el paso de cadena de ofertas de pago
      description: >-
        Crea un pedido para el artículo asociado al paso de la cadena de ofertas
        de pago especificado. El pedido creado obtiene el estado de pedido
        `new`.


        Para abrir la interfaz de pago en una nueva ventana, utilice el
        siguiente enlace:
        `https://secure.xsolla.com/paystation4/?token={token}`, en el cual
        `{token}` es el token recibido.


        Para realizar pruebas, utilice esta URL:
        `https://sandbox-secure.xsolla.com/paystation4/?token={token}`.


        <div class="notice">
          <strong>Aviso</strong> <br><br>
         Este método debe utilizarse en el lado del cliente. La dirección IP del usuario se utiliza para determinar el país, lo que afecta a la moneda y a los métodos de pago disponibles. El uso de este método en el lado del servidor puede dar lugar a la detección incorrecta de la moneda y afectar a los métodos de pago en <a href="https://developers.xsolla.com/es/doc/pay-station/">Pay Station</a>.
        </div>


        <br>


        <div class="notice">
          <strong>Aviso</strong><br><br>
         Utilice esta llamada solo para los pasos de cadena de ofertas de pago.
         Para los pasos gratuitos, utilice la llamada <a href="/es/api/shop-builder/operation/claim-user-offer-chain-step-reward">Reclamar paso de cadena de ofertas gratuito</a>.
        </div>


        <br>


        <div class="note">
          <strong>Nota:</strong><br><br>
            Esta llamada API utiliza un JWT de usuario para la autorización.<br><br>
            Incluya el token en el encabezado <code>Authorization</code> con el siguiente formato: <code>Bearer &lt;user_JWT&gt;</code>. Para obtener más información sobre el JWT de usuario, consulte el bloque <strong>Seguridad</strong> para esta llamada.
        </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: El paso no se puede comprar.
          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: Obtener lista de cadenas de ofertas
      description: >-
        Obtiene la lista de cadenas de ofertas para su administración.


        <div class="notice"><strong>Aviso</strong><br><br>Todos los proyectos
        tienen un límite en el número de artículos que se pueden devolver en una
        sola respuesta. El valor por defecto y máximo es <strong>10 artículos
        por respuesta</strong>. Para obtener más datos, utilice los parámetros
        de consulta <code>limit</code> y <code>offset</code> para la
        paginación.</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: Crear cadena de ofertas
      description: Crea una cadena de ofertas.
      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: Obtener cadena de ofertas
      description: Obtiene una cadena de ofertas concreta para su administración.
      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: Actualizar cadena de ofertas
      description: Actualiza una cadena de ofertas determinada.
      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: La cadena de ofertas se ha actualizado correctamente.
          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: Eliminar cadena de ofertas
      description: >-
        Elimina una cadena de ofertas determinada.


        Tras la eliminación:<ul><li>Se mantienen todas las recompensas ya
        recibidas por los usuarios.</li><li>Los pasos no completados dejan de
        estar disponibles y ya no se pueden obtener sus recompensas.</li></ul>


        A diferencia de la desactivación de la cadena de ofertas mediante la
        llamada <a
        href="/es/api/shop-builder/operation/admin-toggle-offer-chain">Activar o
        desactivar cadena de ofertas</a>, la eliminación es irreversible y no se
        mantiene el progreso del usuario.
      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: La cadena de ofertas se ha eliminado correctamente.
          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: Activar o desactivar cadena de ofertas
      description: >-
        Activa o desactiva una cadena de ofertas.


        Cuando se desactiva la cadena de ofertas, los usuarios pierden
        temporalmente el acceso a ella, pero se guarda su progreso.


        Cuando se vuelve a activar la cadena de ofertas, los usuarios pueden
        continuar desde el paso en el que lo dejaron.
      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: Se ha desactivado o activado la cadena de ofertas.
          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: >-
            La lista de detalles de configuración y artículos utilizados para la
            venta adicional en el proyecto.
          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: Obtener información sobre la venta adicional en proyecto
      description: >-
        Recupera la información sobre la venta adicional en el proyecto: si está
        activada, el tipo de venta adicional y la lista de SKU de los artículos
        que forman parte de esta venta adicional.
    post:
      tags:
        - upsell-admin
      operationId: post-upsell
      summary: Crear venta adicional
      description: |-
        Crea una venta adicional para un proyecto. <br>

        <div class="notice">
          <strong>Aviso</strong><br><br>
            Esta llamada API utiliza un JWT de usuario para autorización.<br><br>
            Incluya el token en el encabezado <code>Authorization</code> con el siguiente formato: <code>Bearer &lt;user_JWT&gt;</code>. Para obtener más información sobre el JWT de usuario, consulte el bloque <strong>Seguridad</strong> para esta llamada.
        </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: Se ha creado una venta adicional para el proyecto.
        '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: Actualizar venta adicional
      description: |-
        Actualiza una venta adicional para un proyecto. <br>

        <div class="notice">
          <strong>Aviso</strong><br><br>
            Esta llamada API utiliza un JWT de usuario para autorización.<br><br>
            Incluya el token en el encabezado <code>Authorization</code> con el siguiente formato: <code>Bearer &lt;user_JWT&gt;</code>. Para obtener más información sobre el JWT de usuario, consulte el bloque <strong>Seguridad</strong> para esta llamada.
        </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: Se ha actualizado la venta adicional del proyecto.
        '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: Se ha activado o desactivado una venta adicional en un proyecto.
        '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: Estado de activación.
          schema:
            type: string
            example: activate
      summary: Activar/Desactivar la venta adicional de un proyecto
      description: >-
        Cambia el estado de una venta adicional en un proyecto para que sea
        activa o inactiva. <br>


        <div class="notice">
          <strong>Aviso</strong><br><br>
            Esta llamada API utiliza un JWT de usuario para autorización.<br><br>
            Incluya el token en el encabezado <code>Authorization</code> con el siguiente formato: <code>Bearer &lt;user_JWT&gt;</code>. Para obtener más información sobre el JWT de usuario, consulte el bloque <strong>Seguridad</strong> para esta llamada.
        </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: Obtener lista de artículos de venta adicional en proyecto
      description: >-
        Obtiene una lista de artículos de venta adicional en un proyecto si ya
        han sido establecidos. <br>


        <div class="note">
          <strong>Nota:</strong><br><br>
            Esta llamada API utiliza un JWT de usuario para la autorización.<br><br>
            Incluya el token en el encabezado <code>Authorization</code> con el siguiente formato: <code>Bearer &lt;user_JWT&gt;</code>. Para obtener más información sobre el JWT de usuario, consulte el bloque <strong>Seguridad</strong> para esta llamada.
        </div>
components:
  securitySchemes:
    basicAuth:
      type: http
      description: >-
        Las llamadas del lado del servidor utilizan el esquema de autenticación
        `basicAuth`. Todas las solicitudes a la API deben

        contener el encabezado `Authorization: Basic
        <your_authorization_basic_key>`,

        donde `your_authorization_basic_key` es el par `project_id:api_key`

        codificado según el estándar Base64.


        Puede utilizar `merchant_id` en lugar de `project_id` si lo necesita. No
        afecta a la funcionalidad.


        Vaya a [Cuenta de editor](https://publisher.xsolla.com/) para encontrar
        los valores de los parámetros:


        * Se muestra `merchant_id`:
          * En la sección **Configuración de la empresa > Empresa**
          * En la URL en la barra de direcciones del navegador en cualquier página de Cuenta del editor. La URL tiene el siguiente formato: `https://publisher.xsolla.com/<merchant_id>`.
        * `api_key` se muestra en Cuenta del Editor solo una vez cuando se crea
        y debe almacenarse en su servidor. Puede crear una nueva clave en la
        siguiente sección:
          * [Configuración de la empresa > Claves API](https://publisher.xsolla.com/0/settings/api_key)
          * [Configuración del proyecto > Claves API](https://publisher.xsolla.com/0/projects/0/edit/api_key)

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

        **Aviso**


        Si una llamada API requerida no incluye el parámetro de ruta
        `project_id`, utilice una clave API que sea válida para todos los
        proyectos de la empresa para la autorización.

        {% /html %}


        * Se muestra `project_id`:
          * En Cuenta del Editor junto al nombre del proyecto.
          * En la URL de la barra de direcciones del navegador cuando se trabaja en el proyecto en Cuenta del Editor. La URL tiene el siguiente formato: `https://publisher.xsolla.com/<merchant_id>/projects/<project_id>`.

        Para más información sobre cómo trabajar con claves API, consulte la
        [referencia
        API](https://developers.xsolla.com/es/api/getting-started/#api_keys_overview).
      scheme: basic
    XsollaLoginUserJWT:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Las llamadas del lado del cliente utilizan el esquema de autenticación
        `XsollaLoginUserJWT`. a solicitud debe incluir el JWT del usuario en el
        encabezado `Authorization` con el siguiente formato: Bearer
        `<user_JWT>`. El token identifica al usuario y permite acceder a datos
        personalizados. Para obtener más información sobre cómo crear un token,
        consulte la [documentación de la API de Xsolla
        Login](/es/api/login/authentication-schemes#getting-user-token).


        También puede utilizar un [token para abrir la interfaz de
        pago](/es/api/pay-station/token/create-token).
    AuthForCart:
      type: http
      scheme: bearer
      description: >-
        El esquema de autenticación `AuthForCart` se utiliza para las compras
        con cesta y admite dos modos:


        1. Autenticación con el JWT de un usuario. El token se transmite en el
        encabezado Authorization con el siguiente formato: `Authorization:
        Bearer <user_JWT>`, en el que `<user_JWT>` es el token del usuario. El
        token identifica al usuario y proporciona acceso a datos personalizados.


        También puede utilizar un [token para abrir la interfaz de
        pago](/es/api/pay-station/token/create-token).


        2. Modo simplificado sin el encabezado `Authorization`. Este modo se
        utiliza únicamente para usuarios no autorizados y solo se puede aplicar
        a la [venta de claves de
        juegos](/es/doc/buy-button/how-to/set-up-authentication/#guides_buy_button_selling_items_not_authenticated_users).
        En lugar de un token, la solicitud debe incluir los siguientes
        encabezados:

        * `x-unauthorized-id` con un ID de solicitud

        * `x-user` con la dirección de correo electrónico del usuario codificada
        en Base64.
    basicMerchantAuth:
      type: http
      description: >-
        Las llamadas del lado del servidor emplean el esquema de autenticación
        `basicMerchantAuth`. Todas las solicitudes a la API deben

        contener el encabezado `Authorization: Basic
        <your_authorization_basic_key>`,

        en el que `your_authorization_basic_key` es el par `merchant_id:api_key`

        codificado según el estándar Base64.


        Vaya a [Cuenta de editor](https://publisher.xsolla.com/) para encontrar
        los valores de los parámetros:


        * `merchant_id` se muestra:
          * En la sección **Configuración de la empresa > Empresa**
          * En la URL en la barra de direcciones del navegador en cualquier página de Cuenta del editor. La URL tiene el siguiente formato: `https://publisher.xsolla.com/<merchant_id>`
        * `api_key` se muestra en Cuenta del editor solo una vez cuando se crea
        y debe almacenarse en su servidor. Puede crear una nueva clave en la
        sección [Configuración de la empresa > Claves de
        API](https://publisher.xsolla.com/0/settings/api_key).


        Para más información sobre cómo trabajar con claves API, consulte la
        [referencia
        API](https://developers.xsolla.com/es/api/getting-started/#api_keys_overview).
      scheme: basic
  parameters:
    project_id-path-param:
      name: project_id
      in: path
      required: true
      description: >-
        ID del proyecto. Encontrará este parámetro en su [Cuenta del
        editor](https://publisher.xsolla.com/0/projects/0/) junto al nombre del
        proyecto y en la barra de direcciones del navegador cuando se trabaja en
        un proyecto. La URL tiene el siguiente formato:
        `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: Límite para el número de elementos presentes en la página.
      schema:
        type: integer
        example: 50
        minimum: 1
    offset-query-param:
      name: offset
      in: query
      required: false
      example: 0
      description: >-
        Número del elemento a partir del cual se genera la lista (el conteo
        empieza desde el 0).
      schema:
        type: integer
        example: 0
        minimum: 0
    enabled-query-param:
      name: enabled
      in: query
      required: false
      description: Filtrar elementos por la marca `is_enabled`.
      schema:
        type: integer
    promotion_id-path-param:
      name: promotion_id
      in: path
      required: true
      description: ID de promoción. Identificador único de la promoción en el proyecto.
      schema:
        type: integer
        example: 111425
    code-path-param:
      name: code
      in: path
      required: true
      description: >-
        Código único que distingue entre mayúsculas y minúsculas. Contiene
        letras y números.
      schema:
        type: string
        example: WINTER2021
        minLength: 1
        maxLength: 128
    coupon_code-path-param:
      name: coupon_code
      in: path
      required: true
      description: >-
        Código único que distingue entre mayúsculas y minúsculas. Contiene
        letras y números.
      schema:
        type: string
        example: WINTER2021
        minLength: 1
        maxLength: 128
    external_id-promotion-path-param:
      name: external_id
      in: path
      required: true
      description: >-
        ID externo de la promoción. Identificador único de la promoción dentro
        del proyecto.
      schema:
        type: integer
        example: coupon_44056_1
    promocode_code-path-param:
      name: promocode_code
      in: path
      required: true
      description: >-
        Código único que distingue entre mayúsculas y minúsculas. Contiene
        letras y números.
      schema:
        type: string
        example: SO6rew99j9
        minLength: 1
        maxLength: 128
    user_external_id-query-param:
      name: user_external_id
      in: query
      required: true
      description: ID externo del usuario
      schema:
        type: string
        example: d342dad2-9d59-11e9-a384-42010aa8003f
    codes-query-param:
      name: codes[]
      in: query
      description: >-
        Códigos únicos que distinguen mayúsculas de minúsculas. Solo contienen
        letras y números.
      schema:
        type: array
        items:
          type: string
          minLength: 1
          maxLength: 128
    is_enabled-query-param:
      name: is_enabled
      in: query
      required: false
      description: Filtrar elementos por la marca `is_enabled`.
      schema:
        type: integer
    personalized-catalog-rule_id-path-param:
      name: rule_id
      in: path
      required: true
      description: ID de regla.
      schema:
        type: number
        example: 1
    item_sku-path-param:
      name: item_sku
      in: path
      required: true
      description: SKU del artículo.
      schema:
        type: string
        example: booster_mega_1
    value_point_sku-path-param:
      name: value_point_sku
      in: path
      required: true
      description: SKU del punto de valor.
      schema:
        type: string
        example: value_point_3
    reward_chain_id-path-param:
      name: reward_chain_id
      in: path
      required: true
      description: ID de la cadena de recompensas.
      schema:
        type: integer
        example: 101
    reward_chain_step_id-path-param:
      name: step_id
      in: path
      required: true
      description: ID del paso de la cadena de recompensas.
      schema:
        type: integer
        example: 120
    is_expired-daily-chain-query-param:
      name: is_expired
      in: query
      required: false
      description: Filtrar las recompensas diarias para mostrar solo las caducadas.
      schema:
        type: integer
    type-daily-chain-query-param:
      name: type
      in: query
      required: false
      description: Filtra las recompensas diarias para devolver solo el tipo especificado.
      schema:
        type: string
        enum:
          - calendar_hard
          - rolling_skippable
          - rolling_unskippable
    daily_chain_id-path-param:
      name: daily_chain_id
      in: path
      required: true
      description: ID de recompensa diaria.
      schema:
        type: integer
        example: 101
    daily_chain_step_number-path-param:
      name: step_number
      in: path
      required: true
      description: Número de pasos de recompensa diaria.
      schema:
        type: integer
        example: 1
    offer_chain_id-path-param:
      name: offer_chain_id
      in: path
      required: true
      description: ID de cadena de ofertas.
      schema:
        type: integer
        example: 101
    offer_chain_step_number-path-param:
      name: step_number
      in: path
      required: true
      description: Número de paso de cadena de ofertas.
      schema:
        type: integer
        example: 1
  schemas:
    Promotions_promotion_id:
      type: integer
      description: ID de promoción. Identificador único de la promoción en el proyecto.
      example: 1
    promotion_periods:
      type: array
      nullable: false
      description: >-
        Periodos de validez de la promoción.  Si se especifican varios periodos,
        es necesario tanto `date_from` como `date_until`.
      items:
        type: object
        properties:
          date_from:
            type: string
            format: date-time
            nullable: false
            example: '2020-08-11T10:00:00+03:00'
            description: Fecha de inicio de la promoción especificada.
          date_until:
            type:
              - string
              - 'null'
            format: date-time
            example: '2020-08-11T20:00:00+03:00'
            description: >-
              Fecha de finalización de la promoción especificada. Si se
              establece como `null`, la promoción es indefinida. Puede ser
              `null` solamente si se especifica un único periodo de validez.
        required:
          - date_from
    Promotions_coupon_name:
      type: object
      description: >-
        Nombre de la promoción. Debe contener pares clave/valor

        en los cuales la clave es una configuración regional con el formato
        "^[a-z]{2}-[A-Z]{2}$", el valor es una cadena (string).
      additionalProperties:
        type: string
      example:
        en-US: Coupon title
        de-DE: Gutscheintitel
      default:
        en-US: Coupon title
        de-DE: Gutscheintitel
    unit_items:
      type: array
      description: >-
        Matriz de claves del juego específicas para cada plataforma. Se utiliza
        únicamente cuando el tipo de artículo es `unit` (`bonus.item.type =
        'unit'`). Si el paquete de claves del juego incluye claves específicas
        para cada plataforma, el usuario puede elegir una de ellas como
        bonificación.
      items:
        type: object
        properties:
          sku:
            type: string
            example: cool_game_steam
            pattern: ^[a-zA-Z0-9_\-.]*$
            description: "ID único del paquete de claves del juego específico para cada plataforma. Caracteres permitidos  : a–z, A–Z, 0–9, punto (`.`), guion (`-`), guion bajo (`_`). Combine los valores `bonus.item.​sku` y `bonus.item.unit_items.drm_sku`. P.\_ej., si `bonus.item.​sku = 'cool_game'` y `bonus.item.unit_items.drm_sku = 'steam'`, el valor será `cool_game_steam`."
          is_free:
            type: boolean
          type:
            type: string
            enum:
              - game_key
            description: Indica que el artículo es una clave del juego.
          name:
            type: string
            example: Awesome Game
            description: Título del juego.
          drm_name:
            type: string
            example: Steam
            description: Nombre del DRM (gestión de derechos digitales).
          drm_sku:
            type: string
            pattern: ^[a-zA-Z0-9_\-.]*$
            example: steam
            description: >-
              ID único de DRM que se usa como sufijo para indicar una clave del
              juego específica de una plataforma. Caracteres permitidos: a–z,
              A–Z, 0–9, punto (`.`), guion (`-`) y guion bajo (`_`).
    Promotions_200-coupon-bonus-reward:
      type: object
      properties:
        item:
          type: object
          properties:
            sku:
              type: string
              example: game_01
              description: >-
                ID único del artículo. El SKU solo puede contener caracteres
                alfanuméricos latinos en minúsculas y mayúsculas, puntos,
                guiones y guiones bajos.
            name:
              type: object
              example:
                en: Game name
              description: Nombre del artículo.
            type:
              type: string
              example: unit
              description: >-
                Tipo de artículo. Valores
                posibles:<ul><li><code>virtual_good</code> — artículos
                virtuales</li><li><code>virtual_currency</code> — moneda
                virtual</li><li><code>bundle</code> —
                lote</li><li><code>unit</code> — paquete de claves de
                juego</li></ul>
            bundle_type:
              type: string
              description: Tipo de lote. Se devuelve si el tipo de artículo es un lote.
              enum:
                - standard
                - virtual_currency_package
            description:
              type:
                - string
                - 'null'
              example: Game description
              description: Item description.
            image_url:
              type:
                - string
                - 'null'
              example: >-
                https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png
              description: URL de la imagen.
            content:
              type: array
            unit_items:
              $ref: '#/components/schemas/unit_items'
        quantity:
          type: number
          description: Cantidad del artículo.
          default: 1
    Promotions_sku:
      type: string
      example: booster_mega_1
      description: >-
        ID único del artículo. El SKU solo puede contener caracteres
        alfanuméricos latinos en minúsculas y mayúsculas, puntos, guiones y
        guiones bajos.
    Promotions_name:
      type: object
      description: >-
        Nombre del artículo. Debe contener pares clave/valor

        en los cuales la clave es una configuración regional con formato
        "^[a-z]{2}-[A-Z]{2}$", el valor es una cadena (string).
      additionalProperties:
        type: string
      example:
        en-US: Item title
        de-DE: Artikeltitel
      default:
        en-US: Item title
        de-DE: Artikeltitel
    Promotions_type:
      type: string
      description: >-
        Tipo de artículo:
        `virtual_good`/`virtual_currency`/`bundle`/`physical_good`/`unit`.
    Promotions_redeem_code_limit:
      type:
        - integer
        - 'null'
      description: Número de canjes por cada código.
      example: 10
      default: 10
    Promotions_promotion_condition:
      type:
        - array
        - 'null'
      items:
        description: La lista de artículos por los que el usuario recibió una bonificación.
        type: object
        properties:
          item:
            type: object
            properties:
              sku:
                $ref: '#/components/schemas/Promotions_sku'
              name:
                $ref: '#/components/schemas/Promotions_name'
              type:
                $ref: '#/components/schemas/Promotions_type'
              description:
                type:
                  - string
                  - 'null'
                example: Game description
                description: Item description.
              image_url:
                type:
                  - string
                  - 'null'
                example: >-
                  https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png
                description: URL de la imagen.
              external_id:
                type: string
                description: >-
                  ID externo de la promoción. Identificador único de la
                  promoción dentro del proyecto.
                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: Tipo de promoción.
      example: item_discount
    Promotions_promotion_discount_percent:
      type:
        - string
        - 'null'
      description: >-
        Porcentaje de descuento.

        El precio de la cesta se reducirá utilizando un valor calculado
        utilizando este porcentaje y luego se redondeará al segundo decimal.
      default: '10.00'
      example: '10.00'
    promotion_recurrent_schedule_response:
      type:
        - object
        - 'null'
      description: Periodo de actualización del límite.
      properties:
        per_user:
          type:
            - object
            - 'null'
          description: Periodo de actualización del límite del usuario.
          oneOf:
            - type: object
              title: interval_type = daily
              description: Tipo diario de actualización del límite del usuario.
              properties:
                interval_type:
                  type: string
                  description: Tipo de periodo de actualización recurrente.
                  enum:
                    - daily
                time:
                  type: string
                  description: >-
                    Hora de actualización del límite en la zona horaria deseada
                    (redondeo a horas).
                  format: full-time
                  example: 11:00:00+03:00
                reset_next_date:
                  type: integer
                  description: >-
                    Fecha y hora de actualización de los límites (Marca de
                    tiempo Unix).
                  example: 1677553200
                displayable_reset_start_date:
                  description: >-
                    Fecha y hora de la primera actualización del límite (ISO
                    8601).
                  type: string
                  format: date-time
                  example: '2023-02-28T11:00:00+08:00'
                displayable_reset_next_date:
                  description: >-
                    Fecha y hora en que deben restablecerse los límites (ISO
                    8601).
                  type: string
                  format: date-time
                  example: '2023-02-28T11:00:00+08:00'
            - type: object
              title: interval_type = weekly
              description: Tipo semanal de actualización de los límites del usuario.
              properties:
                interval_type:
                  type: string
                  description: Tipo de periodo de actualización recurrente.
                  enum:
                    - weekly
                day_of_week:
                  type:
                    - integer
                    - 'null'
                  description: >-
                    Día de la semana en que se actualizan los límites. En el
                    cual 1 es lunes y 7 es domingo. No es `null` solo para el
                    tipo de periodo de actualización del límite `weekly`.
                  minimum: 1
                  maximum: 7
                time:
                  type: string
                  description: >-
                    Hora de actualización del límite en la zona horaria deseada
                    (redondeo a horas).
                  format: full-time
                  example: 11:00:00+03:00
                reset_next_date:
                  type: integer
                  description: >-
                    Fecha y hora de actualización de los límites (Marca de
                    tiempo Unix).
                  example: 1677553200
                displayable_reset_start_date:
                  description: >-
                    Fecha y hora de la primera actualización del límite (ISO
                    8601).
                  type: string
                  format: date-time
                  example: '2023-02-28T11:00:00+08:00'
                displayable_reset_next_date:
                  description: >-
                    Fecha y hora en que deben restablecerse los límites (ISO
                    8601).
                  type: string
                  format: date-time
                  example: '2023-02-28T11:00:00+08:00'
            - type: object
              title: interval_type = monthly
              description: Tipo mensual de actualización de los límites del usuario.
              properties:
                interval_type:
                  type: string
                  description: Tipo de periodo de actualización recurrente.
                  enum:
                    - monthly
                day_of_month:
                  type:
                    - integer
                    - 'null'
                  description: >-
                    Día del mes en que se actualizan los límites. Si no hay
                    ningún día del mes seleccionado porque el mes es más corto,
                    la actualización se producirá el último día del mes. No es
                    `null` solamente para el tipo de periodo de actualización
                    del límite `monthly`.
                  minimum: 1
                  maximum: 31
                time:
                  type: string
                  description: >-
                    Hora de actualización del límite en la zona horaria deseada
                    (redondeo a horas).
                  format: full-time
                  example: 11:00:00+03:00
                reset_next_date:
                  type: integer
                  description: >-
                    Fecha y hora de actualización de los límites (Marca de
                    tiempo Unix).
                  example: 1677553200
                displayable_reset_start_date:
                  description: >-
                    Fecha y hora de la primera actualización del límite (ISO
                    8601).
                  type: string
                  format: date-time
                  example: '2023-02-28T11:00:00+08:00'
                displayable_reset_next_date:
                  description: >-
                    Fecha y hora en que deben restablecerse los límites (ISO
                    8601).
                  type: string
                  format: date-time
                  example: '2023-02-28T11:00:00+08:00'
    Promotions_promotion_limits_response:
      type: object
      description: Límites de la promoción.
      properties:
        per_user:
          type:
            - object
            - 'null'
          description: Limitaciones de la promoción para un usuario independiente.
          properties:
            total:
              type: integer
              description: >-
                Número total de artículos que un usuario puede comprar. Puede
                establecer este número en Cuenta del editor o utilizar los
                puntos finales de administrador para las entidades de la tienda
                (objeto de límites).
              example: 5
        per_item:
          type:
            - integer
            - 'null'
          description: Limitación global de artículos.
          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: Número total de promociones.
    active_promotions_count:
      type: integer
      description: Número de promociones activas.
    inactive_promotions_count:
      type: integer
      description: Número de promociones desactivadas.
    Promotions_coupon-external_id:
      type: string
      example: coupon_external_id
      default: coupon_external_id
      description: >-
        ID único de promoción. El `external_id` solo puede contener caracteres
        alfanuméricos latinos en minúsculas y mayúsculas, puntos, guiones y
        guiones bajos.
    Promotions_coupon_bonus:
      type:
        - array
        - 'null'
      items:
        description: >-
          La lista de artículos que se añadirán a la compra del usuario como
          bonificación.
        type: object
        properties:
          sku:
            type: string
            description: SKU del artículo.
            default: elven_shield
          quantity:
            type: number
            description: Cantidad del artículo.
            default: 1
    Promotions_coupon-redeem_total_limit:
      type:
        - integer
        - 'null'
      description: Limita el número total de cupones.
      example: 10
      default: 10
    Promotions_coupon-redeem_user_limit:
      type:
        - integer
        - 'null'
      description: Limita el número total de cupones canjeados por un mismo usuario.
      example: 10
      default: 10
    Promotions_coupon_total_limit_state:
      type:
        - object
        - 'null'
      description: Límites para cada código único de cupón.
      properties:
        available:
          type: integer
          description: El número restante de veces que se puede utilizar un cupón.
          example: 3
        reserved:
          type: integer
          description: El número reservado de un cupón.
          example: 3
        used:
          type: integer
          description: El número de veces que se utiliza un cupón.
          example: 5
    Promotions_cart_item_discount:
      type: string
      nullable: false
      description: |-
        Porcentaje de descuento.

        El precio del artículo de la cesta se reducirá utilizando un valor
        calculado utilizando este porcentaje y luego se redondeará
        al segundo decimal.
      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: Solo para códigos promocionales.
          properties:
            percent:
              type:
                - string
                - 'null'
              description: >-
                Porcentaje de descuento.

                El precio de la cesta se reducirá utilizando un valor calculado
                utilizando este porcentaje y luego se redondeará al segundo
                decimal.
              default: '10.00'
              example: '10.00'
          example:
            discount:
              percent: '10.99'
        discounted_items:
          type:
            - array
            - 'null'
          description: >-
            Lista de artículos con descuento mediante un código promocional.
            Solo para códigos promocionales.
          items:
            description: Descuento para determinados artículos de la cesta.
            type: object
            properties:
              sku:
                type: string
                description: SKU del artículo.
                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: >-
        Clave del juego específica para una plataforma seleccionada por el
        usuario como bonificación. Transmita el código
        [received](/es/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` como una clave, y el  `bonus.item.unit_items.sku` como
        un valor.
      additionalProperties:
        type: string
      example:
        game_1: game_1_steam
        game_2: game_2_playstation
    Promotions_200-coupon-discount-reward:
      type:
        - object
        - 'null'
      description: >-
        Porcentaje de descuento.

        El precio de la cesta se reducirá utilizando un valor calculado
        utilizando este porcentaje y luego se redondeará al segundo decimal.
      properties:
        percent:
          type: string
          example: '10.00'
    Promotions_422_limit_error:
      description: Se alcanzó el límite de canje.
      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: El cupón no está disponible en la región del usuario.
      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: Código de atributo de usuario.
      minLength: 1
      maxLength: 255
      pattern: ^[-_.\d\w]+$
    user-attribute_conditions_properties_type-string:
      type: string
      enum:
        - string
      description: Tipo de atributo de usuario.
    user-attribute_conditions_properties_operator_string:
      type: string
      enum:
        - eq
        - ne
      description: >-
        Tipo de operación realizada por condición. Para el tipo de atributo
        <code>string</code>.


        Valores posibles:

        - `eq` — Igual que

        - `ne` — No es igual que
    user-attribute_conditions_properties_value:
      type: string
      description: >-
        Valor de la condición con el que se comparará el valor de atributo del
        usuario. El tipo depende del tipo de atributo.
      maxLength: 255
    user-attribute_conditions_properties_can_be_missing:
      type: boolean
      description: >-
        Indica que se cumple la condición aunque falte el atributo en los
        atributos del usuario. Transmita `true` para mostrar el elemento a los
        usuarios que no tengan este atributo. Los usuarios que tengan el
        atributo, pero el valor no coincida con el especificado en la condición,
        no verán el artículo. `false` - Los usuarios que tengan el atributo,
        pero el valor no coincida con el especificado en la condición, o falte
        el atributo, no verán el artículo.
    user-attribute_condition_string_model-get:
      type: object
      title: tipo = 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: Tipo de atributo de usuario.
    user-attribute_conditions_properties_operator_number:
      type: string
      enum:
        - eq
        - ne
        - gt
        - ge
        - lt
        - le
      description: >-
        Tipo de operación realizada por condición. Para el tipo de atributo
        <code>number</code>.


        Valores posibles:

        - `eq` — Igual que

        - `ne` — No es igual que

        - `gt` — Mayor o igual que

        - `ge` — Mayor que

        - `lt` — Menor que

        - `le` — Menor o igual que
    user-attribute_condition_number_model-get:
      type: object
      title: tipo = 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: Tipo de atributo de usuario.
    user-attribute_conditions_properties_operator_date:
      type: string
      enum:
        - eq
        - ne
        - lt
        - gt
        - le
        - ge
      description: >-
        Tipo de operación realizada por condición. Para el tipo de atributo
        <code>date</code>.


        Valores posibles:

        - `eq` — Igual que

        - `ne` — No es igual que

        - `lt` — Antes

        - `gt` — Later

        - `le` — Antes o en la misma fecha

        - `ge` — Después o en la misma fecha
    user-attribute_condition_date_model-get:
      type: object
      title: tipo = 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: >-
            Condiciones para validar los atributos de usuario.

            Determina la disponibilidad de la promoción en función de si los
            atributos de usuario cumplen todas las condiciones especificadas.
    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: tipo = 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: tipo = 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: tipo = 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: >-
            Condiciones para validar los atributos de usuario.

            Determina la disponibilidad de la promoción en función de si los
            atributos de usuario cumplen todas las condiciones especificadas.
    Promotions_coupon_code:
      type: string
      description: >-
        Código único que distingue entre mayúsculas y minúsculas. Contiene
        letras y números.
      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: Si el artículo es gratuito.
    Catalog_item_promotions:
      type: array
      description: >-
        Promociones aplicadas para artículos específicos de la cesta. La matriz
        se devuelve en los siguientes casos:


        * Se configura un descuento promocional para un artículo específico.


        * Se aplica un código promocional con el parámetro **Descuento en
        artículos seleccionados**.


        Si no se aplican promociones a nivel de artículo, se devuelve una matriz
        vacía.
      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: Tipo de artículo de bonificación.
                  enum:
                    - virtual_good
                    - virtual_currency
                    - bundle
                    - physical_good
                    - game_key
                    - nft
                name:
                  type: string
                  description: >-
                    Nombre del artículo de bonificación. No disponible para el
                    tipo de artículo de bonificación `physical_good`.
                image_url:
                  type: string
                  description: >-
                    URL de la imagen del artículo de bonificación. No disponible
                    para el tipo de artículo de bonificación `physical_good`.
                bundle_type:
                  type: string
                  description: >-
                    Tipo de artículo del lote de bonificación. Disponible solo
                    para el tipo de artículo de bonificación `bundle`.
                  enum:
                    - standard
                    - virtual_currency_package
          limits:
            type: object
            properties:
              per_user:
                type: object
                properties:
                  available:
                    type: integer
                  total:
                    type: integer
    Can_be_bought:
      type: boolean
      example: true
      description: Si es `true`, el usuario puede comprar un artículo.
    item_id:
      type: integer
      example: 1
      description: ID único interno del artículo.
    value-point-sku:
      type: string
      description: ID único del punto de valor.
    value-point-amount:
      type: integer
      description: Cantidad de puntos de valor.
    value-point-name:
      type: string
      description: Nombre del punto de valor.
    Common_admin-image_url:
      type: string
      example: https://image.example.com
      description: URL de la imagen.
    is_clan:
      type: boolean
      description: Si el punto de valor se utiliza en las cadenas de recompensas de clanes.
      example: true
    client-item-value-point-reward:
      type: array
      description: Lista de recompensas de puntos de valor para este artículo.
      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: >-
        Periodo de actualización recurrente de los límites del artículo para un
        usuario.
      oneOf:
        - type: object
          title: interval_type = daily
          description: Tipo diario de actualización del límite del usuario.
          properties:
            interval_type:
              type: string
              description: Tipo de periodo de actualización recurrente.
              enum:
                - daily
            reset_next_date:
              type: integer
              description: >-
                Fecha y hora en que se restablecen los límites (Marca de tiempo
                Unix).
              example: 1677553200
        - type: object
          title: interval_type = weekly
          description: Tipo semanal de actualización de los límites del usuario.
          properties:
            interval_type:
              type: string
              description: Tipo de periodo de actualización recurrente.
              enum:
                - weekly
            reset_next_date:
              type: integer
              description: >-
                Fecha y hora en que se restablecen los límites (Marca de tiempo
                Unix).
              example: 1677553200
        - type: object
          title: interval_type = monthly
          description: Tipo mensual de actualización de los límites del usuario.
          properties:
            interval_type:
              type: string
              description: Tipo de periodo de actualización recurrente.
              enum:
                - monthly
            reset_next_date:
              type: integer
              description: >-
                Fecha y hora en que se restablecen los límites (Marca de tiempo
                Unix).
              example: 1677553200
        - type: object
          title: interval_type = hourly
          description: >-
            Restablecimiento del límite de usuarios que se realiza cada
            intervalo especificado en horas.
          properties:
            interval_type:
              type: string
              description: Tipo de periodo de actualización recurrente.
              enum:
                - hourly
            reset_next_date:
              type: integer
              description: >-
                Fecha y hora en que se restablecen los límites (Marca de tiempo
                Unix).
              example: 1677553200
    limit_exceeded_visibility:
      type: string
      example: show
      enum:
        - show
        - hide
      description: >-
        Determina la visibilidad del artículo en el catálogo tras alcanzar el
        límite de compra, hasta el siguiente restablecimiento del límite.


        Se aplica a los artículos para los que se han configurado
        restablecimientos periódicos del límite en la matriz
        `recurrent_schedule`.


        Si no están configurados los restablecimientos del límite, el artículo
        no aparecerá en el catálogo cuando se haya alcanzado el límite de
        compra,
         independientemente del valor de `limit_exceeded_visibility`.

        Valores posibles:

        - `show` — El artículo se devuelve en las llamadas API de recuperación
        del catálogo tras alcanzar el límite de compra. En las llamadas API

        de recuperación del catálogo en el lado del cliente, tras alcanzar el
        límite, el artículo se devuelve con el indicador `can_be_bought: false`.
        La

        La próxima fecha de restablecimiento se devuelve el día
        `reset_next_date`.

        - `hide` — El artículo no se devuelve en las llamadas API de
        recuperación del catálogo tras alcanzar el límite de compra, hasta que
         se restablezca ese límite.
      default: show
    Catalog_item_limits:
      description: Límites del artículo.
      properties:
        per_user:
          type:
            - object
            - 'null'
          description: Límites de artículos para un usuario.
          properties:
            total:
              type: integer
              description: Número máximo de artículos que un mismo usuario puede comprar.
              example: 5
            available:
              type: integer
              description: >-
                Número restante de artículos que el usuario actual puede
                comprar.
              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: Límites de artículos para un artículo.
          properties:
            total:
              type: integer
              description: >-
                Número máximo de artículos que pueden comprar todos los
                usuarios.
              example: 5
            available:
              type: integer
              description: >-
                Número restante de artículos que todos los usuarios pueden
                comprar.
              example: 3
      type:
        - object
        - 'null'
    item-periods:
      type:
        - array
        - 'null'
      description: Periodo de venta del artículo.
      items:
        type: object
        properties:
          date_from:
            type: string
            format: date-time
            example: '2020-08-11T10:00:00+03:00'
            description: >-
              Fecha en la que el artículo especificado estará disponible para la
              venta.
          date_until:
            type:
              - string
              - 'null'
            format: date-time
            example: '2020-08-11T20:00:00+03:00'
            description: >-
              Fecha en la que el artículo especificado dejará de estar
              disponible para la venta. Puede ser `null`.
    Promotions_200-promo-code-bonus-reward:
      type: object
      properties:
        item:
          type: object
          properties:
            sku:
              type: string
              example: game_01
              description: >-
                ID único del artículo. El SKU solo puede contener caracteres
                alfanuméricos latinos en minúsculas y mayúsculas, puntos,
                guiones y guiones bajos.
            name:
              type: string
              example: Game name
              description: Nombre del artículo.
            type:
              type: string
              example: unit
              description: >-
                Tipo de artículo. Valores
                posibles:<ul><li><code>virtual_good</code> — artículos
                virtuales</li><li><code>virtual_currency</code> — moneda
                virtual</li><li><code>bundle</code> —
                lote</li><li><code>unit</code> — paquete de claves de
                juego</li></ul>
            description:
              type: string
              example: Game description
              description: Item description.
            image_url:
              type: string
              example: >-
                https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png
              description: URL de la imagen.
            unit_items:
              $ref: '#/components/schemas/unit_items'
        quantity:
          type: number
          description: Cantidad del artículo.
          default: 1
    Promotions_discounted_items:
      type:
        - array
        - 'null'
      description: Lista de artículos con descuento mediante un código promocional.
      items:
        description: Descuento para determinados artículos de la cesta.
        type: object
        properties:
          sku:
            type: string
            description: SKU del artículo.
            default: elven_shield
          discount:
            type: object
            nullable: false
            properties:
              percent:
                $ref: '#/components/schemas/Promotions_cart_item_discount'
            required:
              - percent
        required:
          - sku
          - discount
        minItems: 1
    Promo_code_rewards:
      type: object
      properties:
        bonus:
          type: array
          items:
            $ref: '#/components/schemas/Promotions_200-promo-code-bonus-reward'
        discount:
          $ref: '#/components/schemas/Promotions_200-coupon-discount-reward'
        discounted_items:
          $ref: '#/components/schemas/Promotions_discounted_items'
        is_selectable:
          type: boolean
          description: >-
            Si es `true`, el usuario debe elegir la bonificación antes de
            canjear un código promocional.
    admin-attribute-external_id:
      type: string
      minLength: 1
      maxLength: 255
      pattern: ^[a-zA-Z0-9-_]+$
      example: attribute_1
      description: >-
        ID único del atributo. `external_id` solo puede contener caracteres
        alfanuméricos latinos en minúsculas y mayúsculas, guiones y guiones
        bajos.
    value-external_id:
      type: string
      minLength: 1
      maxLength: 255
      pattern: ^[-_.\d\w]+$
      example: attribute_value
      description: >-
        ID del valor único para un atributo. `external_id` solo puede contener
        caracteres alfanuméricos latinos en minúsculas, guiones y guiones bajos.
    client-attributes:
      type: array
      description: >-
        Lista de atributos y sus valores correspondientes al artículo. Puede
        utilizarse para filtrar el catálogo.
      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: Nombre del atributo.
            example: Genre
          values:
            type: array
            items:
              type: object
              properties:
                external_id:
                  $ref: '#/components/schemas/value-external_id'
                value:
                  type: string
                  description: Valor del atributo.
                  example: Strategy
    Promotions_promocode_total_limit_state:
      type:
        - object
        - 'null'
      description: Límites para cada código promocional único.
      properties:
        available:
          type: integer
          description: >-
            El número restantes de veces que se puede utilizar un código
            promocional.
          example: 3
        reserved:
          type: integer
          description: El número reservado de un código promocional.
          example: 3
        used:
          type: integer
          description: El número de veces que se utiliza un código promocional.
          example: 5
    price_conditions_items:
      description: Cada objeto describe una regla que define el precio.
      type: object
      properties:
        operator:
          type: string
          description: >-
            Operador de comparación para establecer el rango de precios para
            aplicar la promoción.


            Valores posibles:

            - `ge` — Mayor o igual que

            - `gt` — Mayor que

            - `le` — Menor o igual que

            - `lt` — Menor que

            - `eq` — Igual que

            - `ne` — No es igual que
          enum:
            - ge
            - gt
            - le
            - lt
            - eq
            - ne
        value:
          type: string
          description: Valor para determinar el rango de precios para aplicar la promoción.
          pattern: ^\d+(\.\d{1,4})?$
      required:
        - operator
        - value
    price_conditions_promocode:
      type:
        - array
        - 'null'
      description: >-
        Matriz de objetos con condiciones que establecen el rango de precios
        para aplicar la promoción a toda la cesta.<br>

        El precio total de todos los artículos de la cesta del usuario se
        compara con el rango de precios especificado en la condición. Las
        [bonificaciones](/es/api/shop-builder/operation/create-promo-code/#!path=bonus&t=request)
        y los
        [descuentos](/es/api/shop-builder/operation/create-promo-code/#!path=discount&t=request)
        se aplican a todos los artículos de la cesta si el precio de la cesta
        cumple la condición especificada.<br>

        Si transmite esta matriz, establezca el valor de la matriz
        [discounted_items](/es/api/shop-builder/operation/create-promo-code/#!path=discounted_items&t=request)
        como `null`.
      items:
        $ref: '#/components/schemas/price_conditions_items'
    item_price_conditions_promocode:
      type:
        - array
        - 'null'
      description: >-
        Matriz de objetos con condiciones que establecen el rango de precios
        para aplicar la promoción a determinados artículos de la cesta.<br>
         El precio de cada artículo en la cesta del usuario se compara con el rango de precios especificado en la condición. Se aplican [bonificaciones](/es/api/shop-builder/operation/create-promo-code/#!path=bonus&t=request) y [descuentos](/es/api/shop-builder/operation/create-promo-code/#!path=discount&t=request) únicamente a aquellos artículos de la cesta cuyo precio cumple la condición.<br>
         Si transmite esta matriz, establezca el valor de la matriz [discounted_items](/es/api/shop-builder/operation/create-promo-code/#!path=discounted_items&t=request) como `null`.
      items:
        $ref: '#/components/schemas/price_conditions_items'
    excluded_promotions:
      type: array
      items:
        type: integer
      example:
        - 12
        - 789
      description: >-
        Lista de ID de promociones a excluir al aplicar esta promoción.
        <br>Example: `[12, 789]`.
    Promotions_200-get-promocode-promotion-model:
      type: object
      properties:
        external_id:
          $ref: '#/components/schemas/Promotions_coupon-external_id'
        promotion_periods:
          $ref: '#/components/schemas/promotion_periods'
        name:
          $ref: '#/components/schemas/Promotions_coupon_name'
        bonus:
          $ref: '#/components/schemas/Promotions_coupon_bonus'
        is_enabled:
          $ref: '#/components/schemas/Promotions_coupon-is_enabled'
        redeem_total_limit:
          $ref: '#/components/schemas/Promotions_coupon-redeem_total_limit'
        redeem_user_limit:
          $ref: '#/components/schemas/Promotions_coupon-redeem_user_limit'
        redeem_code_limit:
          $ref: '#/components/schemas/Promotions_redeem_code_limit'
        discount:
          type:
            - object
            - 'null'
          properties:
            percent:
              $ref: '#/components/schemas/Promotions_promotion_discount_percent'
          example:
            discount:
              percent: '10.99'
        discounted_items:
          $ref: '#/components/schemas/Promotions_discounted_items'
        total_limit_state:
          $ref: '#/components/schemas/Promotions_promocode_total_limit_state'
        attribute_conditions:
          $ref: '#/components/schemas/promotion_user-attribute_conditions_model-get'
        price_conditions:
          $ref: '#/components/schemas/price_conditions_promocode'
        item_price_conditions:
          $ref: '#/components/schemas/item_price_conditions_promocode'
        excluded_promotions:
          $ref: '#/components/schemas/excluded_promotions'
    Promotions_is_enabled:
      type: boolean
      example: true
      description: Si la promoción está habilitada o no.
    price_conditions_discount:
      type:
        - array
        - 'null'
      description: >-
        Matriz de objetos con condiciones que establecen el rango de precios
        para aplicar la promoción.<br> La promoción solo se aplica a los
        artículos cuyo precio cumple todas las condiciones de la matriz. Si
        transmite esta matriz, establezca el valor del objeto
        [items](/es/api/shop-builder/operation/create-item-promotion/#!path=items&t=request)
        en `null`.
      items:
        $ref: '#/components/schemas/price_conditions_items'
    Promotions_promotion_limits:
      type: object
      description: Límites de la promoción.
      properties:
        per_user:
          type:
            - integer
            - 'null'
          description: Limitaciones de la promoción para un usuario independiente.
        recurrent_schedule:
          $ref: '#/components/schemas/promotion_recurrent_schedule_response'
    price_conditions_bonus:
      type:
        - array
        - 'null'
      description: >-
        Matriz de objetos con condiciones que establecen el rango de precios
        para aplicar la promoción.<br> La promoción solo se aplica a los
        artículos cuyo precio cumple todas las condiciones de la matriz. Si
        transmite esta matriz, establezca el valor del objeto
        [condition](/es/api/shop-builder/operation/create-bonus-promotion/#!path=condition&t=request)
        en `null`.
      items:
        $ref: '#/components/schemas/price_conditions_items'
    Promotions_200-get-bonus-promotion-model:
      type: object
      properties:
        id:
          type: integer
          description: ID de promoción. Identificador único de la promoción en el proyecto.
        promotion_periods:
          $ref: '#/components/schemas/promotion_periods'
        name:
          type: object
          description: >-
            Nombre de la promoción. Debe contener pares clave/valor

            en los cuales la clave es una configuración regional con el formato
            "^[a-z]{2}-[A-Z]{2}$", el valor es una cadena (string).
          additionalProperties:
            type: string
          example:
            en-US: Summer season bonus
            de-DE: Sommersaison Bonus
        is_enabled:
          type: boolean
          default: true
        condition:
          type:
            - array
            - 'null'
          description: >-
            Conjunto de artículos que deben incluirse en la compra para aplicar
            una promoción. Si este parámetro es `null`, se aplicará una
            promoción a cualquier compra dentro de un proyecto.
          items:
            type: object
            properties:
              sku:
                type: string
                description: SKU del artículo.
                default: elven_sword
        bonus:
          type:
            - array
            - 'null'
          items:
            description: >-
              La lista de artículos que se añadirán a la compra del usuario como
              bonificación.
            type: object
            properties:
              sku:
                type: string
                description: SKU del artículo.
                default: elven_shield
              quantity:
                type: number
                description: Cantidad del artículo.
                default: 1
        attribute_conditions:
          $ref: '#/components/schemas/promotion_user-attribute_conditions_model-get'
        limits:
          $ref: '#/components/schemas/Promotions_promotion_limits_response'
        excluded_promotions:
          $ref: '#/components/schemas/excluded_promotions'
        price_conditions:
          $ref: '#/components/schemas/price_conditions_bonus'
    Coupon_rewards:
      type: object
      properties:
        bonus:
          type: array
          items:
            $ref: '#/components/schemas/Promotions_200-coupon-bonus-reward'
        is_selectable:
          type: boolean
          description: >-
            Si es `true`, el usuario debe seleccionar una bonificación antes de
            canjear un cupón.
    Promotions_discounted_items_verify:
      type:
        - array
        - 'null'
      description: Lista de artículos con descuento mediante un código promocional.
      items:
        description: Descuento para artículos concretos.
        type: object
        properties:
          sku:
            type: string
            example: game_01
            description: >-
              ID único del artículo. El SKU solo puede contener caracteres
              alfanuméricos latinos en minúsculas y mayúsculas, puntos, guiones
              y guiones bajos.
          name:
            type: string
            example: Game name
            description: Nombre del artículo.
          type:
            type: string
            example: unit
            description: >-
              Tipo de artículo. Valores
              posibles:<ul><li><code>virtual_good</code> — artículos
              virtuales</li><li><code>virtual_currency</code> — moneda
              virtual</li><li><code>bundle</code> —
              lote</li><li><code>unit</code> — paquete de claves de
              juego</li></ul>
          description:
            type: string
            example: Game description
            description: Item description.
          image_url:
            type: string
            example: >-
              https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png
            description: URL de la imagen.
          unit_items:
            $ref: '#/components/schemas/unit_items'
          discount:
            type: object
            nullable: false
            properties:
              percent:
                $ref: '#/components/schemas/Promotions_cart_item_discount'
    Promo_code_rewards_verify:
      type: object
      properties:
        bonus:
          type: array
          items:
            $ref: '#/components/schemas/Promotions_200-promo-code-bonus-reward'
        discount:
          $ref: '#/components/schemas/Promotions_200-coupon-discount-reward'
        discounted_items:
          $ref: '#/components/schemas/Promotions_discounted_items_verify'
        is_selectable:
          type: boolean
          description: >-
            Si es `true`, el usuario debe elegir la bonificación antes de
            canjear un código promocional.
    sku:
      type: string
      minLength: 1
      maxLength: 255
      pattern: ^[a-zA-Z0-9_\-–.]*$
      example: booster_mega_1
      description: >-
        ID único del artículo. El SKU solo puede contener caracteres
        alfanuméricos latinos en minúsculas y mayúsculas, puntos, guiones y
        guiones bajos.
    Promotions_unique_catalog_offer_items:
      type: array
      description: >-
        Una lista de artículos SKU que están disponibles después de utilizar la
        oferta única de catálogo.
      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: Fecha de inicio de la promoción.
    Promotions_coupon_date_end:
      type:
        - string
        - 'null'
      format: date-time
      default: '2020-04-15T18:16:00+05:00'
      description: >-
        Fecha de finalización de su promoción. Puede ser `null`. Si la
        `date_end` es `null`, la promoción será ilimitada en el tiempo.
    User-limit-promo-code:
      type: object
      properties:
        per_user:
          type: object
          properties:
            total:
              type: integer
              example: 10
              description: >-
                Número máximo de veces que un usuario puede utilizar un código
                promocional.
            available:
              type: integer
              example: 9
              description: >-
                Número restante de veces que un usuario puede utilizar un código
                promocional.
    User-limit-coupon:
      type: object
      properties:
        per_user:
          type: object
          properties:
            total:
              type: integer
              example: 10
              description: Número máximo de veces que un usuario puede utilizar un cupón.
            available:
              type: integer
              example: 9
              description: Número restante de veces que un usuario puede utilizar un cupón.
    Code-limit-promo-code:
      type: object
      properties:
        code:
          $ref: '#/components/schemas/Promotions_coupon_code'
        per_code:
          type: object
          properties:
            total:
              type: integer
              description: >-
                Número máximo de veces que se puede utilizar un código
                promocional.
            available:
              type: integer
              description: >-
                El número restante de veces que se puede utilizar un código
                promocional.
            used:
              type: integer
              description: El número de veces que se utiliza un código promocional.
            reserved:
              type: integer
              description: El número de veces que se reserva un código promocional.
    personalized-catalog_user-attribute_conditions_model-get:
      allOf:
        - $ref: '#/components/schemas/user-attribute_conditions_model-get'
        - description: >-
            Condiciones para validar los atributos de usuario.

            Determina la disponibilidad de artículos en el catálogo en función
            de si los atributos de usuario cumplen todas las condiciones
            especificadas.
    user-attribute_personalized-catalog:
      type: object
      properties:
        rule_id:
          type: number
          description: ID de regla.
        name:
          type: string
          description: >-
            Nombre legible de una regla. Se utiliza para visualizar una regla en
            Cuenta del editor.
        is_enabled:
          type: boolean
          description: Si la regla está habilitada.
        is_satisfied_for_unauth:
          type: boolean
          description: >-
            Si el artículo se muestra a usuarios no autorizados. Si es `true`,
            el artículo se muestra al usuario no autorizado independientemente
            de las reglas de visualización del catálogo. Es `false` por defecto.
        attribute_conditions:
          $ref: >-
            #/components/schemas/personalized-catalog_user-attribute_conditions_model-get
        items:
          type: array
          items:
            type: object
            description: >-
              Artículos que se mostrarán al usuario si los valores de sus
              atributos cumplen las condiciones.
            properties:
              item_id:
                type: number
                description: ID del artículo.
              sku:
                type: string
                description: SKU del artículo.
              name:
                type: string
                description: Nombre del artículo.
              type:
                type: string
                description: Tipo de artículo.
                enum:
                  - virtual_good
                  - virtual_currency
                  - bundle
                  - physical_good
                  - unit
              bundle_type:
                type: string
                description: Tipo de lote. Se devuelve si el tipo de artículo es un lote.
                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: >-
            Condiciones para validar los atributos de usuario.

            Determina la disponibilidad de artículos en el catálogo en función
            de si los atributos de usuario cumplen todas las condiciones
            especificadas.
    user-attribute_personalized-catalog-body-required:
      type: object
      properties:
        name:
          type: string
          description: >-
            Nombre legible de una regla. Se utiliza para visualizar una regla en
            Cuenta del editor.
          minLength: 1
          maxLength: 255
          pattern: ^\S
        is_enabled:
          type: boolean
          description: Si la regla está habilitada.
        is_satisfied_for_unauth:
          type: boolean
          description: >-
            Si el artículo se muestra a usuarios no autorizados. Si es `true`,
            el artículo se muestra al usuario no autorizado independientemente
            de las reglas de visualización del catálogo. Es `false` por defecto.
        attribute_conditions:
          $ref: >-
            #/components/schemas/personalized-catalog_user-attribute_conditions_model-post
        items:
          type: array
          minItems: 1
          maxItems: 100
          items:
            oneOf:
              - type: object
                description: >-
                  Artículos que se muestran a un usuario si los valores de sus
                  atributos cumplen las condiciones.
                properties:
                  item_id:
                    type: number
                    description: ID del artículo.
                required:
                  - item_id
              - type: object
                description: >-
                  Artículos que se muestran a un usuario si los valores de sus
                  atributos cumplen las condiciones.
                properties:
                  sku:
                    type: string
                    description: SKU del artículo.
                required:
                  - sku
      required:
        - name
        - is_enabled
        - attribute_conditions
        - items
    422-invalid-request:
      type: object
      properties:
        statusCode:
          type: number
          description: Código de estado de la respuesta.
          example: 422
        errorCode:
          type: number
          description: Código de error.
          example: 1102
        errorMessage:
          type: string
          description: Mensaje de error legible.
          example: >-
            [0401-1102]: Unprocessable Entity. The property `external_id` is
            required
        transactionId:
          type: string
          description: ID único de la solicitud.
          example: da145238620011eb8e24fe6913ff226a
    user-attribute_personalized-catalog_all:
      type: object
      properties:
        rule_id:
          type: number
          description: ID de regla.
        name:
          type: string
          description: >-
            Nombre legible de una regla. Se utiliza para visualizar una regla en
            Cuenta del editor.
        is_enabled:
          type: boolean
          description: Si la regla está habilitada.
        is_satisfied_for_unauth:
          type: boolean
          description: >-
            Si el artículo se muestra a usuarios no autorizados. Si es `true`,
            el artículo se muestra al usuario no autorizado independientemente
            de las reglas de visualización del catálogo. Es `false` por defecto.
      required:
        - rule_id
        - name
        - is_enabled
    user-attribute_personalized-catalog-body:
      type: object
      properties:
        name:
          type: string
          description: >-
            Nombre legible de una regla. Se utiliza para visualizar una regla en
            Cuenta del editor.
          minLength: 1
          maxLength: 255
          pattern: ^\S
        is_enabled:
          type: boolean
          description: Si la regla está habilitada.
        is_satisfied_for_unauth:
          type: boolean
          description: >-
            Si el artículo se muestra a usuarios no autorizados. Si es `true`,
            el artículo se muestra al usuario no autorizado independientemente
            de las reglas de visualización del catálogo. Es `false` por defecto.
        attribute_conditions:
          $ref: >-
            #/components/schemas/personalized-catalog_user-attribute_conditions_model-post
        items:
          type: array
          minItems: 1
          maxItems: 100
          items:
            oneOf:
              - type: object
                description: >-
                  Artículos que se muestran a un usuario si los valores de sus
                  atributos cumplen las condiciones.
                properties:
                  item_id:
                    type: number
                    description: ID del artículo.
                required:
                  - item_id
              - type: object
                description: >-
                  Artículos que se muestran a un usuario si los valores de sus
                  atributos cumplen las condiciones.
                properties:
                  sku:
                    type: string
                    description: SKU del artículo.
                required:
                  - sku
    User-limit_user-external-id:
      description: ID externo del usuario.
      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: >-
                Número máximo de veces que un usuario puede utilizar una
                promoción.
            available:
              type: integer
              example: 9
              description: >-
                Número restante de veces que un usuario puede utilizar una
                promoción.
    User-limit_available_flexible:
      type: integer
      minimum: 0
      description: >-
        Número restante de artículos o usos de la promoción disponibles para el
        usuario dentro del límite aplicado.
    User-limit_available:
      type: integer
      minimum: 1
      description: >-
        Número restante de artículos o usos de la promoción disponibles para el
        usuario dentro del límite aplicado.
    two-letter-locale:
      type:
        - object
        - 'null'
      description: Códigos lingüísticos de dos letras minúsculas.
      title: de dos letras
      properties:
        en:
          type:
            - string
            - 'null'
          description: Inglés
        ar:
          type:
            - string
            - 'null'
          description: Árabe
        bg:
          type:
            - string
            - 'null'
          description: Búlgaro
        cn:
          type:
            - string
            - 'null'
          description: Chino (simplificado)
        cs:
          type:
            - string
            - 'null'
          description: Checo
        de:
          type:
            - string
            - 'null'
          description: Alemán
        es:
          type:
            - string
            - 'null'
          description: Español (España)
        fr:
          type:
            - string
            - 'null'
          description: Francés
        he:
          type:
            - string
            - 'null'
          description: Hebreo
        it:
          type:
            - string
            - 'null'
          description: Italiano
        ja:
          type:
            - string
            - 'null'
          description: Japonés
        ko:
          type:
            - string
            - 'null'
          description: Coreano
        pl:
          type:
            - string
            - 'null'
          description: Polaco
        pt:
          type:
            - string
            - 'null'
          description: Portugués
        ro:
          type:
            - string
            - 'null'
          description: Rumano
        ru:
          type:
            - string
            - 'null'
          description: Ruso
        th:
          type:
            - string
            - 'null'
          description: Tailandés
        tr:
          type:
            - string
            - 'null'
          description: Turco
        tw:
          type:
            - string
            - 'null'
          description: Chino (tradicional)
        vi:
          type:
            - string
            - 'null'
          description: Vietnamita
        km:
          type:
            - string
            - 'null'
          description: Jemer
        id:
          type:
            - string
            - 'null'
          description: Indonesio
        lo:
          type:
            - string
            - 'null'
          description: Laosiano
        my:
          type:
            - string
            - 'null'
          description: Birmano
        ph:
          type:
            - string
            - 'null'
          description: Filipino
        ne:
          type:
            - string
            - 'null'
          description: Nepalí
    five-letter-locale:
      type:
        - object
        - 'null'
      description: "Códigos de configuración regional de cinco\_caracteres."
      title: cinco letras
      properties:
        en-US:
          type:
            - string
            - 'null'
          description: Inglés
        ar-AE:
          type:
            - string
            - 'null'
          description: Árabe
        bg-BG:
          type:
            - string
            - 'null'
          description: Búlgaro
        zh-CN:
          type:
            - string
            - 'null'
          description: Chino (simplificado)
        cs-CZ:
          type:
            - string
            - 'null'
          description: Checo
        de-DE:
          type:
            - string
            - 'null'
          description: Alemán
        es-ES:
          type:
            - string
            - 'null'
          description: Español (España)
        fr-FR:
          type:
            - string
            - 'null'
          description: Francés
        he-IL:
          type:
            - string
            - 'null'
          description: Hebreo
        it-IT:
          type:
            - string
            - 'null'
          description: Italiano
        ja-JP:
          type:
            - string
            - 'null'
          description: Japonés
        ko-KR:
          type:
            - string
            - 'null'
          description: Coreano
        pl-PL:
          type:
            - string
            - 'null'
          description: Polaco
        pt-BR:
          type:
            - string
            - 'null'
          description: Portugués (Brasil)
        ro-RO:
          type:
            - string
            - 'null'
          description: Rumano
        ru-RU:
          type:
            - string
            - 'null'
          description: Ruso
        th-TH:
          type:
            - string
            - 'null'
          description: Tailandés
        tr-TR:
          type:
            - string
            - 'null'
          description: Turco
        zh-TW:
          type:
            - string
            - 'null'
          description: Chino (tradicional)
        vi-VN:
          type:
            - string
            - 'null'
          description: Vietnamita
        km-KH:
          type:
            - string
            - 'null'
          description: Jemer
        id-ID:
          type:
            - string
            - 'null'
          description: Indonesio
        lo-LA:
          type:
            - string
            - 'null'
          description: Laosiano
        my-MM:
          type:
            - string
            - 'null'
          description: Birmano
        ph-PH:
          type:
            - string
            - 'null'
          description: Filipino
        ne-NP:
          type:
            - string
            - 'null'
          description: Nepalí
    name-localization-object:
      type:
        - object
        - 'null'
      description: "Objeto con traducciones para la descripción del artículo. Acepta valores en uno de estos dos\_formatos: códigos de idioma de dos\_letras en minúscula (p.\_ej., `en`) o códigos de idioma de cinco\_caracteres (p.\_ej., `en-US`). Aunque ambos formatos se aceptan como entradas, las respuestas devuelven códigos de idioma de dos\_letras en minúscula. Cuando se facilitan ambas opciones para el mismo idioma (p.\_ej. `en` y `en-US`), se almacena el último valor proporcionado. Puede consultar la lista completa de idiomas admitidos en la [documentación](/es/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: "Objeto con traducciones para la descripción del artículo. Acepta valores en uno de dos formatos: códigos de idioma de dos\_letras en minúscula (p.\_ej., `en`) o códigos de configuración regional de cinco\_caracteres (p.\_ej., `en-US`). Aunque ambos formatos se aceptan como entradas, las respuestas devuelven códigos de idioma de dos\_letras en minúscula. Cuando se facilitan ambas opciones para el mismo idioma (p.\_ej. `en` y `en-US`), se almacena el último valor proporcionado. Puede consultar la lista completa de idiomas admitidos en la [documentación](/es/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: "Objeto con traducciones para la descripción larga del artículo. Acepta valores en uno de estos dos\_formatos: códigos de idioma de dos\_letras en minúscula (p.\_ej., `en`) o códigos de configuración regional de cinco\_caracteres (p.\_ej., `en-US`). Aunque ambos formatos se aceptan como entradas, las respuestas devuelven códigos de idioma de dos\_letras en minúscula. Cuando se facilitan ambas opciones para el mismo idioma (p.\_ej. `en` y `en-US`), se almacena el último valor proporcionado. Puede consultar la lista completa de idiomas admitidos en la [documentación](/es/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 único del artículo. El SKU solo puede contener caracteres
            alfanuméricos latinos en minúsculas y mayúsculas, puntos, guiones y
            guiones bajos.
        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: >-
            Recursos adicionales del artículo como capturas de pantalla, vídeos
            de partidas del juego, etc.
          items:
            type: object
            properties:
              type:
                type: string
                enum:
                  - image
                  - video
                example: image
                description: 'Tipo de soporte multimedia: `image`/`video`.'
              url:
                type: string
                example: >-
                  https://cdn3.xsolla.com/img/misc/images/71ab1e12126f2103e1868076f0acb21a.jpg
                description: Archivo de recurso.
        type:
          type: string
          description: Tipo de artículo.
        image_url:
          type: string
        is_enabled:
          type: boolean
        order:
          type: integer
          example: 1
          description: Define el orden de disposición.
        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: >-
        Recursos adicionales del artículo como capturas de pantalla, vídeos de
        partidas del juego, etc.
      items:
        type: object
        properties:
          type:
            type: string
            enum:
              - image
              - video
            example: image
            description: 'Tipo de soporte multimedia: `image`/`video`.'
          url:
            type: string
            example: >-
              https://cdn3.xsolla.com/img/misc/images/71ab1e12126f2103e1868076f0acb21a.jpg
            description: Archivo de recurso.
    order:
      type: integer
      example: 1
      description: Define el orden de disposición.
    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 único del artículo. El SKU solo puede contener caracteres
            alfanuméricos latinos en minúsculas y mayúsculas, puntos, guiones y
            guiones bajos.
        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: >-
            Recursos adicionales del artículo como capturas de pantalla, vídeos
            de partidas del juego, etc.
          items:
            type: object
            properties:
              type:
                type: string
                enum:
                  - image
                  - video
                example: image
                description: 'Tipo de soporte multimedia: `image`/`video`.'
              url:
                type: string
                example: >-
                  https://cdn3.xsolla.com/img/misc/images/71ab1e12126f2103e1868076f0acb21a.jpg
                description: Archivo de recurso.
        type:
          type: string
          description: Tipo de artículo.
        image_url:
          type: string
        is_enabled:
          type: boolean
        order:
          type: integer
          example: 1
          description: Define el orden de disposición.
        can_delete:
          type: boolean
          description: >-
            Si es posible eliminar un punto de valor o no. Si indica `false`, no
            se puede eliminar el punto de valor ya que hay una o más cadenas de
            recompensa en las que se utiliza. Para eliminar el punto de valor,
            [elimine](https://developers.xsolla.com/es/api/shop-builder/operation/admin-delete-reward-chain/)
            primero todas las cadenas de recompensa que lo contengan.


            Si indica `true`, el punto de valor no se está utilizando en ninguna
            cadena de recompensa y se puede
            [eliminar](https://developers.xsolla.com/es/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: Cantidad de puntos de valor.
        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: Cantidad de puntos de valor.
        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: Cantidad de puntos de valor.
            minimum: 0
        required:
          - sku
          - amount
        maxItems: 100
    image_url:
      type:
        - string
        - 'null'
      example: https://image.example.com
      description: URL de la imagen.
    date_start:
      type: string
      format: date-time
      example: '2020-04-15T18:16:00+05:00'
      description: Fecha de inicio de su cadena de recompensas.
    date_end:
      type:
        - string
        - 'null'
      format: date-time
      example: '2020-04-15T18:16:00+05:00'
      description: >-
        Fecha en la que finaliza la promoción de su cadena de recompensas. Puede
        ser `null`. Si `date_end` es `null`, la cadena de recompensas será
        ilimitada en el tiempo.
    clan_type:
      type:
        - string
        - 'null'
      description: Tipo de clan.
      enum:
        - clan
        - guild
        - faction
        - community
        - team
        - squad
        - alliance
        - association
        - coalition
        - union
        - group
        - civilizations
        - dynasty
        - order
        - league
        - brotherhood
        - kingdom
        - organization
        - house
        - empire
        - tribe
        - cartel
        - null
    top_contributors:
      type:
        - object
        - 'null'
      properties:
        name:
          type: string
          example: Rocket
          description: >-
            El ID de usuario que se envía a Xsolla durante el proceso de
            autorización. El ID de usuario se utiliza para vincular al usuario
            con su proyecto de Xsolla Login y se muestra como un apodo. Si
            utiliza la autorización por [ID de
            usuario](https://developers.xsolla.com/es/solutions/web-shop/create-web-shop/set-up-authentication/?tabs=100-UserIDAuth&link=100-UserIDAuth),
            le recomendamos transmitir el parámetro <code>name</code> en la
            [respuesta del
            webhook](https://developers.xsolla.com/es/webhooks/operation/user-validation-in-webshop/).
            Este parámetro contiene el nombre de usuario que se utilizará como
            apodo.
        contributed_amount:
          type: integer
          example: 100
          description: La cantidad de puntos de valor ganados por el usuario.
    value-point-description:
      type:
        - string
        - 'null'
      description: Descripción del punto de valor.
    value-point-long-description:
      type:
        - string
        - 'null'
      description: Descripción larga del punto de valor.
    interval_type_weekly:
      type: string
      description: Frecuencia del reinicio recurrente de la cadena de recompensas.
      enum:
        - weekly
    interval_type_monthly:
      type: string
      description: Frecuencia del reinicio recurrente de la cadena de recompensas.
      enum:
        - monthly
    interval_type_hourly_rc:
      type: string
      description: Frecuencia del reinicio recurrente de la cadena de recompensas.
      enum:
        - hourly
    reset_next_date:
      type: integer
      description: "Fecha y hora estimadas en las que se restablecerá la cadena de recompensas la próxima vez <a href=\"https://en.wikipedia.org/wiki/Unix_time\" target=\"_blank\">(Marca de tiempo Unix)</a>. <br><br> Por ejemplo, la cadena de recompensas se reinicia mensualmente, a partir del 1 de marzo de 2024, a las 01:00\_h de Kuala Lumpur (GMT+8). La fecha y hora del próximo reinicio de la cadena de recompensas, el día 1 de abril de 2024 a las 01:00\_h de Kuala Lumpur (GMT+8), lo cual equivale al 31 de marzo de 2024 a las 17:00 GMT+0 o \"1711904400000\" en el formato Marca de tiempo Unix. <br><br> Ejemplo: \"1711904400000\""
    recurrent_schedule_client_side:
      type:
        - object
        - 'null'
      description: Periodo de reinicio recurrente de la cadena de recompensas.
      properties:
        interval_type:
          oneOf:
            - title: interval_type = weekly
              $ref: '#/components/schemas/interval_type_weekly'
            - title: interval_type = monthly
              $ref: '#/components/schemas/interval_type_monthly'
            - title: interval_type = hourly
              $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: >-
        Objeto con traducciones para el encabezado de una ventana emergente con
        información sobre la cadena de recompensas de un clan. Código de idioma
        [de dos letras
        minúsculas](https://developers.xsolla.com/es/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: >-
        Objeto con traducciones para una ventana emergente con información sobre
        la cadena de recompensas de un clan. Código de idioma [de dos letras
        minúsculas](https://developers.xsolla.com/es/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: Imagen de la ventana emergente de una cadena de recompensas de clan.
      format: uri
    client-reward-chain-item-model:
      type: object
      properties:
        reward_chain_id:
          type: integer
          example: 9
          description: ID de la cadena de recompensas.
        name:
          type: string
          example: Weekly quest
          description: Nombre de la cadena de recompensas.
        description:
          type:
            - string
            - 'null'
          example: Major weekly quest
          description: Reward chain description.
        long_description:
          type:
            - string
            - 'null'
          example: >-
            You can get a lot of additional items just by shopping during the
            week
          description: Descripción larga de la cadena de recompensas.
        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: Paso de la cadena de recompensas.
            properties:
              step_id:
                type: integer
                example: 10
                description: ID del paso.
              name:
                type: string
                example: Level 1
                description: Nombre del paso.
              is_claimed:
                type: boolean
                example: false
                description: Si se reclama la recompensa del paso.
              image_url:
                $ref: '#/components/schemas/Common_admin-image_url'
              price:
                type: object
                properties:
                  amount:
                    type: integer
                    example: 100
                    description: >-
                      El número de puntos de valor que un usuario reclama para
                      el paso.
              reward:
                type: array
                items:
                  type: object
                  properties:
                    sku:
                      $ref: '#/components/schemas/sku'
                    name:
                      type: string
                      example: Super box
                      description: Nombre del artículo.
                    type:
                      type: string
                      example: bundle
                      description: Tipo de artículo.
                    description:
                      type: string
                      example: Super box with items
                      description: Item description.
                    image_url:
                      $ref: '#/components/schemas/Common_admin-image_url'
                    quantity:
                      type: integer
                      example: 2
                      description: Cantidad del artículo.
        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: Se utiliza como indicador de que hay más páginas.
    reward_chain_id:
      type: integer
      example: 9
      description: ID único de la cadena de recompensas.
    periods:
      type: array
      nullable: false
      description: >-
        Periodos de validez de la cadena de recompensas. Si se especifican
        varios periodos, es necesario tanto `date_from` como `date_until`.
      items:
        type: object
        properties:
          date_from:
            type: string
            format: date-time
            nullable: false
            example: '2020-08-11T10:00:00+03:00'
            description: Fecha de inicio de la cadena de recompensas especificada.
          date_until:
            type:
              - string
              - 'null'
            format: date-time
            example: '2020-08-11T20:00:00+03:00'
            description: >-
              Fecha de finalización de la cadena de recompensas especificada.
              Solo puede ser `null` si se especifica un único periodo de
              validez.
        required:
          - date_from
    day_of_week:
      type: integer
      description: >-
        Día de la semana en que se reinicia la cadena de recompensas; en cuyo
        sistema el "1" es lunes y el "7" es domingo.
      minimum: 1
      maximum: 7
    time:
      type: string
      description: >-
        Hora a la que se restablece la cadena de recompensas en la zona horaria
        deseada (redondeo a horas). <br><br> Por ejemplo, la hora establecida
        para el reinicio de la cadena de recompensas es la 01:00 para la zona
        horaria de Kuala Lumpur (GMT+8). En este caso, el valor del parámetro
        `time` es `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: >-
        Fecha y hora del primer reinicio de la cadena de recompensas. <br><br>
        Por ejemplo, la fecha y hora del primer reinicio de la cadena de
        recompensas es el 1 de marzo de 2024, a las 01:00 h de Kuala Lumpur, o
        "2024-03-01T01:00:00+08:00" en el formato <a
        href="https://en.wikipedia.org/wiki/ISO_8601" target="_blank">ISO
        8601</a>. <br><br> Ejemplo: "2024-03-01T01:00:00+08:00"
      type: string
      format: date-time
    displayable_reset_next_date:
      description: >-
        Fecha y hora estimadas en las que se restablecerá la cadena de
        recompensas la próxima vez <a
        href="https://en.wikipedia.org/wiki/ISO_8601" target="_blank">(ISO
        8601)</a>. <br><br> Por ejemplo, la cadena de recompensas se restablece
        mensualmente, a partir del 1 de marzo de 2024, a las 01:00 h de Kuala
        Lumpur. La fecha y hora del próximo reinicio de la cadena de
        recompensas: 1 de abril de 2024 a las 01:00 h de Kuala Lumpur, que
        equivale a "2024-04-01T01:00:00+08:00" en el formato <a
        href="https://en.wikipedia.org/wiki/ISO_8601" target="_blank">ISO
        8601</a>. <br><br> Ejemplo: "2024-04-01T01:00:00+08:00"
      type: string
      format: date-time
    day_of_month:
      type: integer
      description: >-
        Día del mes en que se reinicia la cadena de recompensas. Si el número de
        días del mes es inferior al número ordinal del día especificado, el
        reinicio de la cadena de recompensas se produce el último día del mes.
      minimum: 1
      maximum: 31
    reward_chain_hours_interval:
      type: integer
      description: "Intervalo en horas tras el cual se reinicia la cadena de recompensas. <br><br> La cuenta atrás comienza a partir del parámetro <a href=\"https://developers.xsolla.com/es/api/shop-builder/operation/admin-create-offer-chain/#!path=date_start&t=request\">date_start</a>. <br><br> Por ejemplo, si `date_start = \"2025-11-15T18:15:00+05:00\"` y `hours_interval = 2`, la cadena de recompensas se reiniciará cada 2\_horas a partir de `\"2025-11-15T20:15:00+05:00\"`."
      minimum: 1
      maximum: 10000
    admin_recurrent_schedule:
      type:
        - object
        - 'null'
      description: Periodo de reinicio recurrente de la cadena de recompensas.
      oneOf:
        - type: object
          title: interval_type = weekly
          description: Reinicio semanal de la cadena de recompensas.
          properties:
            interval_type:
              $ref: '#/components/schemas/interval_type_weekly'
            day_of_week:
              $ref: '#/components/schemas/day_of_week'
            time:
              $ref: '#/components/schemas/time'
            reset_next_date:
              $ref: '#/components/schemas/reset_next_date'
            displayable_reset_start_date:
              $ref: '#/components/schemas/displayable_reset_start_date'
            displayable_reset_next_date:
              $ref: '#/components/schemas/displayable_reset_next_date'
        - type: object
          title: interval_type = monthly
          description: Reinicio mensual de la cadena de recompensas.
          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 = hourly
          description: >-
            Reinicio de la cadena de recompensas realizado en el intervalo
            especificado en horas.
          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: >-
            Condiciones para validar los atributos de usuario.

            Determina la disponibilidad de la cadena en función de si los
            atributos de usuario cumplen todas las condiciones especificadas.
    chain_is_always_visible:
      description: >-
        Si todos los usuarios pueden ver la cadena. Si es `true`, la cadena se
        muestra siempre, independientemente del estado de autenticación o de los
        atributos del usuario.


        Para configurar la personalización, debe transmitir `false`. La lógica
        de visualización de la cadena será la siguiente:
          * Si es `false`, se transmite y se especifican las condiciones de visibilidad en la matriz `attribute_conditions`, la cadena se considera personalizada y solo se muestra a los usuarios autorizados que cumplan las condiciones especificadas.
          * Si es `false`, se transmite y la matriz `attribute_conditions` no se transmite o está vacía, la cadena se muestra a los usuarios no autorizados, así como en los casos en los que no se encuentre ninguna cadena que coincida con el usuario autorizado.
      type: boolean
      default: true
      example: true
    is_reset_after_end:
      description: >-
        Si se reinicia la cadena de recompensas (puntos de valor y progreso de
        todos los usuarios) después de su fecha de finalización:

        * Si es `true`, la cadena de recompensas se reiniciará después de su
        fecha de finalización.

        * Si es `false`, la cadena de recompensas no se reiniciará después de su
        fecha de finalización.


        <br>


        <div class="notice"><strong>Aviso</strong><br><br>

        No puede ser <code>true</code> si: <br>

        <ul>
          <li>se establece un periodo de reinicio en <code>recurrent_schedule</code>.</li>
          <li>El valor <code>null</code> se transmite en <code>periods.date_until</code>.</li>
        </ul>

        </div>
      type: boolean
      default: false
      example: false
    admin-get-reward-chain-item-basic-model:
      type: object
      description: Una cadena de recompensas.
      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: Cadena de recompensas de clan.
          properties:
            value_point:
              type: object
              description: >-
                Un punto de valor configurado para una cadena de recompensas de
                clan.
              properties:
                sku:
                  $ref: '#/components/schemas/value-point-sku'
                name:
                  $ref: '#/components/schemas/value-point-name'
                type:
                  type: string
                  example: value_point
                image_url:
                  $ref: '#/components/schemas/Common_admin-image_url'
                description:
                  $ref: '#/components/schemas/value-point-description'
                long_description:
                  $ref: '#/components/schemas/value-point-long-description'
                amount:
                  $ref: '#/components/schemas/value-point-amount'
                is_clan:
                  $ref: '#/components/schemas/is_clan'
                is_enabled:
                  $ref: '#/components/schemas/is_enabled'
                media_list:
                  $ref: '#/components/schemas/media_list'
                order:
                  $ref: '#/components/schemas/order'
              required:
                - sku
            popup_header:
              $ref: '#/components/schemas/popup_header-two-letter-locale'
            popup_instruction:
              $ref: '#/components/schemas/popup_instruction-two-letter-locale'
            popup_image_url:
              $ref: '#/components/schemas/popup_image_url'
            clan_type:
              $ref: '#/components/schemas/clan_type'
    step_price_amount:
      type: integer
      example: 100
      description: Precio del paso en puntos de valor.
    reward_step_price:
      type: object
      properties:
        amount:
          $ref: '#/components/schemas/step_price_amount'
      required:
        - amount
    reward_item_quantity:
      type: integer
      example: 2
      description: Cantidad del artículo.
    reward-chain-step-reward_user-attribute_conditions_model-post:
      allOf:
        - $ref: '#/components/schemas/user-attribute_conditions_model-post'
        - description: >-
            Condiciones para validar los atributos de usuario.

            Determina la disponibilidad de recompensas para pasos de cadenas de
            recompensas en función de si los atributos de usuario cumplen todas
            las condiciones especificadas.
    create_reward_step:
      type: object
      description: Paso de la cadena de recompensas.
      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: Periodo de reinicio recurrente de la cadena de recompensas.
      oneOf:
        - type: object
          title: interval_type = weekly
          description: Tipo semanal de actualización de la cadena de recompensas.
          properties:
            interval_type:
              $ref: '#/components/schemas/interval_type_weekly'
            day_of_week:
              $ref: '#/components/schemas/day_of_week'
            time:
              $ref: '#/components/schemas/time'
          required:
            - interval_type
            - time
            - day_of_week
        - type: object
          title: interval_type = monthly
          description: Tipo mensual de actualización de la cadena de recompensas.
          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 = hourly
          description: >-
            Reinicio de la cadena de recompensas realizado en el intervalo
            especificado en horas.
          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: >-
            Condiciones para validar los atributos de usuario.

            Determina la disponibilidad de la cadena en función de si los
            atributos de usuario cumplen todas las condiciones especificadas.
    create-reward-chain-model:
      type: object
      description: Una cadena de recompensas.
      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: Cadena de recompensas de clan.
          properties:
            value_point:
              type: object
              description: >-
                Un punto de valor configurado para una cadena de recompensas de
                clan.
              properties:
                sku:
                  $ref: '#/components/schemas/sku'
              required:
                - sku
            popup_header:
              $ref: '#/components/schemas/popup_header-two-letter-locale'
            popup_instruction:
              $ref: '#/components/schemas/popup_instruction-two-letter-locale'
            popup_image_url:
              $ref: '#/components/schemas/popup_image_url'
            clan_type:
              $ref: '#/components/schemas/clan_type'
          required:
            - name
            - value_point
            - periods
            - steps
            - is_enabled
            - popup_header
            - popup_instruction
    step_id:
      type:
        - integer
        - 'null'
      example: 10
      description: ID único del paso.
    reward-chain-step-reward_user-attribute_conditions_model-get:
      allOf:
        - $ref: '#/components/schemas/user-attribute_conditions_model-get'
        - description: >-
            Condiciones para validar los atributos de usuario.

            Determina la disponibilidad de recompensas para pasos de cadenas de
            recompensas en función de si los atributos de usuario cumplen todas
            las condiciones especificadas.
    reward_step_short:
      type: object
      description: Paso de la cadena de recompensas.
      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: Una cadena de recompensas.
      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: Cadena de recompensas de clan.
          properties:
            value_point:
              type: object
              description: >-
                Un punto de valor configurado para una cadena de recompensas de
                clan.
              properties:
                sku:
                  $ref: '#/components/schemas/sku'
                description:
                  $ref: '#/components/schemas/description-localization-object'
                long_description:
                  $ref: '#/components/schemas/long-description-localization-object'
                name:
                  $ref: '#/components/schemas/name-localization-object'
                type:
                  type: string
                is_enabled:
                  $ref: '#/components/schemas/is_enabled'
                image_url:
                  $ref: '#/components/schemas/image_url'
                media_list:
                  $ref: '#/components/schemas/media_list'
                order:
                  $ref: '#/components/schemas/order'
                is_clan:
                  $ref: '#/components/schemas/is_clan'
              required:
                - sku
            popup_header:
              $ref: '#/components/schemas/popup_header-two-letter-locale'
            popup_instruction:
              $ref: '#/components/schemas/popup_instruction-two-letter-locale'
            popup_image_url:
              $ref: '#/components/schemas/popup_image_url'
            clan_type:
              $ref: '#/components/schemas/clan_type'
            top_contributors:
              $ref: '#/components/schemas/top_contributors'
    modify_reward_step:
      type: object
      description: Paso de la cadena de recompensas.
      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: Una cadena de recompensas.
      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: Cadena de recompensas de clan.
          properties:
            popup_header:
              $ref: '#/components/schemas/popup_header-two-letter-locale'
            popup_instruction:
              $ref: '#/components/schemas/popup_instruction-two-letter-locale'
            popup_image_url:
              $ref: '#/components/schemas/popup_image_url'
            clan_type:
              $ref: '#/components/schemas/clan_type'
          required:
            - name
            - periods
            - steps
            - is_enabled
            - popup_header
            - popup_instruction
    daily_chain_type:
      type: string
      enum:
        - calendar_hard
        - rolling_skippable
        - rolling_unskippable
      description: "Tipo de recompensa diaria que determina cuándo los usuarios pueden reclamar recompensas.\n\nValores posibles:\n- `calendar_hard`: Desbloquea la recompensa del siguiente paso cada 24\_horas. Las recompensas de paso sin reclamar se pierden para siempre cuando se desbloquea la recompensa del siguiente paso.\n- `rolling_skippable`: Desbloquea la recompensa del siguiente paso cada 24\_horas en función de la `date_start`. La progresión es secuencial:\nno se desbloqueará una nueva recompensa hasta que se haya reclamado la anterior. Si un usuario se salta uno o más días, continuará\ndesde donde lo dejó; los días perdidos no otorgan múltiples recompensas.\n- `rolling_unskippable`: Desbloquea la recompensa del siguiente paso cada 24\_horas en función de la `date_start`. La progresión\n es secuencial: no se desbloqueará una nueva recompensa hasta que se haya reclamado la anterior. Sin embargo, si un usuario se salta un día,\nsu progreso se reinicia y debe volver a empezar desde el primer paso."
    calendar_hard_date_start:
      type: string
      format: date-time
      example: '2020-04-15T18:16:00+05:00'
      description: Fecha de inicio de la recompensa diaria.
    calendar_hard_is_recurrent:
      type: boolean
      example: true
      default: false
      description: >-
        Si la recompensa diaria es recurrente. Si es `true`, la recompensa
        diaria se restablecerá automáticamente después de la fecha de
        finalización. La siguiente programación de `start_date` y `end_date` se
        basa en el número de pasos de recompensa diaria y el tiempo inicial
        establecidos en `start_date`.
    calendar-hard-daily-chain-base:
      type: object
      description: Propiedades base para el tipo de recompensa diaria `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 único de recompensa diaria.
    daily_chain_date_end:
      type:
        - string
        - 'null'
      format: date-time
      example: '2020-04-15T18:16:00+05:00'
      description: >-
        Fecha en la que finaliza su recompensa diaria. Puede ser `null`. Al
        establecer el tipo `calendar_hard`, esta fecha se fijará automáticamente
        en función del número de pasos añadidos, por lo que puede dejarla como
        `null`.
    daily_chain_number_of_step:
      type: integer
      example: 3
      description: >-
        Es el número de pasos configurados en la recompensa diaria. Cada paso
        aquí representa un día en la recompensa diaria.
    admin-calendar-hard-daily-chain-short-model:
      allOf:
        - $ref: '#/components/schemas/calendar-hard-daily-chain-base'
        - type: object
          description: Una recompensa diaria de `calendar_hard` (versión corta).
          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: >-
        Fecha y hora en que comienza la recompensa diaria. Esta hora también
        determina cuándo se reinicia el periodo diario para que los usuarios
        puedan reclamar su recompensa.
    rolling_date_end:
      type:
        - string
        - 'null'
      format: date-time
      example: '2020-04-15T18:16:00+05:00'
      description: Fecha en la que finaliza la recompensa diaria.
    rolling_is_recurrent:
      type: boolean
      example: true
      default: false
      description: >-
        Si la recompensa diaria es recurrente. Si es `true`, la recompensa
        diaria se reinicia cuando el usuario completa todos los pasos, lo que le
        permite comenzar de nuevo desde el paso 1. La recurrencia solo es válida
        dentro del periodo de recompensa activo, tal y como queda definido por
        `date_start` y `date_end`.
    rolling-skippable-daily-chain-base:
      type: object
      description: Propiedades base para el tipo de recompensa diaria `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: Una recompensa diaria de `rolling_skippable` (versión corta).
          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: >-
        Propiedades base para el tipo de recompensa diaria
        `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: Una recompensa diaria de `rolling_unskippable` (versión corta).
          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: Número del paso.
      nullable: false
      minimum: 1
    modify-daily-chain-item-model:
      type: object
      properties:
        sku:
          $ref: '#/components/schemas/sku'
        quantity:
          type: integer
          description: Cantidad de pasos de recompensa diaria para este 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: Una recompensa diaria para el tipo `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: Una recompensa diaria para el tipo `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: Una recompensa diaria para el tipo `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: Identificador único del paso de recompensa diaria
      minimum: 1
    item_type:
      type: string
      description: 'Tipo de artículo: `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: Cantidad de artículos.
          minimum: 1
          example: 1
    admin-daily-chain-step-model:
      type: object
      description: Un paso de recompensa diaria.
      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: >-
            Una recompensa diaria de calendar_hard por respuestas de
            administradores.
          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: >-
            Una recompensa diaria de rolling_skippable por respuestas de
            administradores.
          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: >-
            Una recompensa diaria de `rolling_unskippable` por respuestas de
            administradores.
          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: >-
        Identificador único del paso de recompensa diaria. Especifíquelo durante
        la actualización para conservar el progreso del usuario en este paso.
      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: Una recompensa diaria para el tipo `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: Una recompensa diaria para el tipo `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: Una recompensa diaria para el tipo `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: Nombre del artículo.
        description:
          type:
            - string
            - 'null'
          description: Item description.
        bundle_type:
          type:
            - string
            - 'null'
          enum:
            - standard
            - virtual_currency_package
        image_url:
          $ref: '#/components/schemas/image_url'
        is_free:
          $ref: '#/components/schemas/value-is_free'
        quantity:
          type: integer
          description: Cantidad de artículos.
          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: Paso de recompensa diaria.
      properties:
        step_number:
          $ref: '#/components/schemas/daily_chain_step_number'
        status:
          type: string
          example: claimed
          enum:
            - claimed
            - claimable
            - blocked
            - claim_in_future
          description: |-
            Define el estado actual de la reclamación del paso.

            Valores posibles:
            - `claimed`:  El paso ya se ha reclamado.
            - `claimable`:  El paso puede reclamarse.
            - `blocked`: El paso no puede reclamarse:
              - Para usuarios no autorizados: Todos los pasos están bloqueados.
              - Para `calendar_hard`: El paso no se ha reclamado y está en el pasado.
              - Para `rolling_skippable`: El paso está bloqueado hasta que se reclame el paso anterior.
            - `claim_in_future`: El paso no se ha reclamado y está en el futuro.
        unlocked_date:
          type: integer
          format: int64
          description: >-
            Marca de tiempo Unix (en segundos) de cuando se desbloqueará el
            paso.
        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: Una recompensa diaria de calendar_hard por respuestas de clientes.
          properties:
            id:
              type: integer
              example: 9
              description: ID de recompensa diaria.
            name:
              type: string
              example: Weekly quest
              description: Nombre de recompensa diaria.
            description:
              type:
                - string
                - 'null'
              example: Major weekly quest
              description: Daily reward description.
            order:
              $ref: '#/components/schemas/order'
            date_end:
              $ref: '#/components/schemas/daily_chain_date_end'
            steps:
              type: array
              items:
                $ref: '#/components/schemas/client-daily-chain-step-model'
    client-rolling-skippable-daily-chain-model:
      allOf:
        - $ref: '#/components/schemas/rolling-skippable-daily-chain-base'
        - type: object
          description: >-
            Una recompensa diaria de rolling_skippable por respuestas de
            clientes.
          properties:
            id:
              type: integer
              example: 9
              description: ID de recompensa diaria.
            name:
              type: string
              example: Weekly quest
              description: Nombre de recompensa diaria.
            description:
              type:
                - string
                - 'null'
              example: Major weekly quest
              description: Daily reward description.
            order:
              $ref: '#/components/schemas/order'
            steps:
              type: array
              items:
                $ref: '#/components/schemas/client-daily-chain-step-model'
    client-rolling-unskippable-daily-chain-model:
      allOf:
        - $ref: '#/components/schemas/rolling-unskippable-daily-chain-base'
        - type: object
          description: >-
            Una recompensa diaria de `rolling_unskippable` por respuestas de
            clientes.
          properties:
            id:
              type: integer
              example: 9
              description: ID de recompensa diaria.
            name:
              type: string
              example: Weekly quest
              description: Nombre de recompensa diaria.
            description:
              type:
                - string
                - 'null'
              example: Major weekly quest
              description: Daily reward description.
            order:
              $ref: '#/components/schemas/order'
            steps:
              type: array
              items:
                $ref: '#/components/schemas/client-daily-chain-step-model'
    client-daily-chain-model:
      oneOf:
        - $ref: '#/components/schemas/client-calendar-hard-daily-chain-model'
        - $ref: '#/components/schemas/client-rolling-skippable-daily-chain-model'
        - $ref: '#/components/schemas/client-rolling-unskippable-daily-chain-model'
      discriminator:
        propertyName: type
        mapping:
          calendar_hard: '#/components/schemas/client-calendar-hard-daily-chain-model'
          rolling_skippable: '#/components/schemas/client-rolling-skippable-daily-chain-model'
          rolling_unskippable: '#/components/schemas/client-rolling-unskippable-daily-chain-model'
    offer_chain_date_start:
      type: string
      format: date-time
      example: '2020-04-15T18:16:00+05:00'
      description: Fecha de inicio de la cadena de ofertas.
    offer_chain_date_end:
      type:
        - string
        - 'null'
      format: date-time
      example: '2020-04-15T18:16:00+05:00'
      description: >-
        Fecha en la que finaliza la cadena de ofertas. Puede ser `null`. Si
        `date_end` es `null`, la cadena de ofertas no tendrá límite de tiempo.
    offer_chain_step_number:
      type: integer
      example: 2
      description: Número del paso.
      nullable: false
      minimum: 1
    offer_chain_is_free:
      type: boolean
      description: >-
        Indica si el paso de la cadena de ofertas es gratuito:<ul><li>Si es
        <code>true</code>, el paso debe reclamarse mediante la llamada <a
        href="/es/api/shop-builder/operation/claim-user-offer-chain-step-reward">Reclamar
        paso de cadena de ofertas gratuito</a>.</li><li>Si es
        <code>false</code>, debe comprarse mediante la llamada <a
        href="/es/api/shop-builder/operation/order-user-offer-chain-step-reward">Crear
        pedido para el paso de cadena de ofertas de pago</a>.</li></ul>
    offer_chain_step_price_amount:
      type: number
      example: 99.99
      description: Precio del paso en moneda real.
    offer_chain_step_price_currency:
      type: string
      example: USD
      description: >-
        Divisa del precio del artículo. Código de tres letras según [ISO
        4217](https://en.wikipedia.org/wiki/ISO_4217).
    offer_chain_step_price:
      type:
        - object
        - 'null'
      properties:
        amount:
          $ref: '#/components/schemas/offer_chain_step_price_amount'
        currency:
          $ref: '#/components/schemas/offer_chain_step_price_currency'
      required:
        - amount
        - currency
    client-offer-chain-item-model:
      type: object
      properties:
        item_id:
          $ref: '#/components/schemas/item_id'
        sku:
          $ref: '#/components/schemas/sku'
        type:
          $ref: '#/components/schemas/item_type'
        name:
          type: string
          description: Nombre del artículo.
        description:
          type:
            - string
            - 'null'
          description: Item description.
        bundle_type:
          type:
            - string
            - 'null'
          enum:
            - standard
            - virtual_currency_package
        image_url:
          $ref: '#/components/schemas/image_url'
        is_free:
          $ref: '#/components/schemas/value-is_free'
        quantity:
          type: integer
          description: Cantidad de artículos.
          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: Paso de cadena de ofertas.
      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: Indica si la recompensa por paso se reclama o se compra.
        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: >-
            Un conjunto de puntos de valor del sistema de recompensas, que se
            conceden como recompensa.
          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: Nombre de puntos de fidelidad.
              sku:
                type: string
                example: 0c745ef0-4243-46e1-aa90-54dee07da622
                description: SKU de puntos de fidelidad.
              description:
                type: string
                example: First Loyalty Point Desc
                description: Loyalty point description.
              image_url:
                $ref: '#/components/schemas/image_url'
              amount:
                type: integer
                example: 1
                description: Cantidad de puntos de fidelidad.
    offer_chain_reset_next_date:
      type: integer
      description: >-
        La fecha y hora calculadas en las que se restablecerá la cadena de
        ofertas la próxima vez, en formato <a
        href="https://en.wikipedia.org/wiki/Unix_time" target="_blank">Unix
        Timestamp</a>. <br><br> Por ejemplo, el reinicio mensual de la cadena de
        ofertas comienza el 1 de marzo de 2024 a las 01:00 hora de Kuala Lumpur
        (GMT+8). El siguiente reinicio se produce el 1 de abril de 2024 a las
        01:00 hora de Kuala Lumpur (GMT+8), lo que corresponde al 31 de marzo de
        2024 17:00 GMT+0 o "1711904400000" según el formato Unix Timestamp.
        <br><br> Ejemplo: "1711904400000"
    offer_chain_recurrent_schedule_client_side:
      type:
        - object
        - 'null'
      description: Periodo de reinicio de la cadena de ofertas.
      properties:
        interval_type:
          type: string
          description: Frecuencia con la que se restablece la cadena de ofertas.
          enum:
            - weekly
            - monthly
            - hourly
        reset_next_date:
          $ref: '#/components/schemas/offer_chain_reset_next_date'
    client-offer-chain-model:
      type: object
      description: Una cadena de ofertas.
      properties:
        id:
          type: integer
          example: 9
          description: ID de cadena de ofertas.
        name:
          type: string
          example: Weekly quest
          description: Nombre de cadena de ofertas.
        description:
          type:
            - string
            - 'null'
          example: Major weekly quest
          description: Offer chain description.
        order:
          $ref: '#/components/schemas/order'
        date_start:
          $ref: '#/components/schemas/offer_chain_date_start'
        date_end:
          $ref: '#/components/schemas/offer_chain_date_end'
        steps:
          type: array
          items:
            $ref: '#/components/schemas/client-offer-chain-step-model'
        recurrent_schedule:
          $ref: '#/components/schemas/offer_chain_recurrent_schedule_client_side'
        next_step_number:
          type:
            - integer
            - 'null'
          description: >-
            Número del siguiente paso de la cadena de ofertas. `null` si se ha
            completado la cadena de ofertas.
          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 único de cadena de ofertas.
    offer_chain_interval_type_weekly:
      type: string
      description: Frecuencia con la que se restablece la cadena de ofertas.
      enum:
        - weekly
    offer_chain_day_of_week:
      type: integer
      description: >-
        Día de la semana en que se restablece la cadena de ofertas, en cuyo
        sistema el `1` es lunes y el `7` es domingo.
      minimum: 1
      maximum: 7
    offer_chain_time:
      type: string
      description: >-
        La hora a la que se restablece la cadena de ofertas en la zona horaria
        especificada (se redondea a la hora). <br><br> Por ejemplo, la hora de
        reinicio se establece en 01:00 para la zona horaria de Kuala Lumpur
        (GMT+8), por lo que el valor del parámetro `time` es `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: >-
        La fecha y hora del primer reinicio de la cadena de ofertas. <br><br>
        Por ejemplo, el primer reinicio programado para el 1 de marzo de 2024, a
        la 01:00 hora de Kuala Lumpur, corresponde a "2024-03-01T01:00:00+08:00"
        según la norma <a href="https://en.wikipedia.org/wiki/ISO_8601"
        target="_blank">ISO 8601</a>. <br><br> Ejemplo:
        "2024-03-01T01:00:00+08:00"
      type: string
      format: date-time
    offer_chain_displayable_reset_next_date:
      description: >-
        La fecha y hora calculadas en las que la cadena de ofertas se
        restablecerá la próxima vez de conformidad con la norma <a
        href="https://en.wikipedia.org/wiki/ISO_8601" target="_blank">ISO
        8601</a>. <br><br> Por ejemplo, el reinicio mensual de la cadena de
        ofertas comienza el 1 de marzo de 2024 a la 01:00 hora de Kuala Lumpur.
        El siguiente reinicio se produce el 1 de abril de 2024 a la 01:00 hora
        de Kuala Lumpur, lo que equivale a "2024-04-01T01:00:00+08:00" según la
        norma <a href="https://en.wikipedia.org/wiki/ISO_8601"
        target="_blank">ISO 8601</a>. <br><br> Ejemplo:
        "2024-04-01T01:00:00+08:00"
      type: string
      format: date-time
    offer_chain_interval_type_monthly:
      type: string
      description: Frecuencia con la que se restablece la cadena de ofertas.
      enum:
        - monthly
    offer_chain_day_of_month:
      type: integer
      description: >-
        El día del mes en que se restablece la cadena de ofertas. Si un mes
        tiene menos días que el día especificado, se restablecerá el último día
        del mes.
      minimum: 1
      maximum: 31
    offer_chain_interval_type_hourly:
      type: string
      description: Frecuencia con la que se restablece la cadena de ofertas.
      enum:
        - hourly
    offer_chain_hours_interval:
      type: integer
      description: "Intervalo en horas tras el cual se reinicia la cadena de ofertas. <br><br> La cuenta atrás comienza a partir del parámetro <a href=\"https://developers.xsolla.com/es/api/shop-builder/operation/admin-create-offer-chain/#!path=date_start&t=request\">date_start</a>. <br><br> Por ejemplo, si `date_start = \"2025-11-15T18:15:00+05:00\"` y `hours_interval = 2`, la cadena de ofertas se reiniciará cada 2\_horas a partir de `\"2025-11-15T20:15:00+05:00\"`."
      minimum: 1
      maximum: 10000
    offer_chain_recurrent_schedule:
      type:
        - object
        - 'null'
      description: Periodo de reinicio recurrente de la cadena de ofertas.
      oneOf:
        - type:
            - object
            - 'null'
          title: interval_type = weekly
          description: Reinicio semanal de la cadena de ofertas.
          properties:
            interval_type:
              $ref: '#/components/schemas/offer_chain_interval_type_weekly'
            day_of_week:
              $ref: '#/components/schemas/offer_chain_day_of_week'
            time:
              $ref: '#/components/schemas/offer_chain_time'
            reset_next_date:
              $ref: '#/components/schemas/offer_chain_reset_next_date'
            displayable_reset_start_date:
              $ref: '#/components/schemas/offer_chain_displayable_reset_start_date'
            displayable_reset_next_date:
              $ref: '#/components/schemas/offer_chain_displayable_reset_next_date'
        - type: object
          title: interval_type = monthly
          description: Reinicio mensual de la cadena de ofertas.
          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 = hourly
          description: >-
            Reinicio de la cadena de ofertas realizado en el intervalo
            especificado en horas.
          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: Una cadena de ofertas.
      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: Periodo de reinicio de la cadena de ofertas.
      oneOf:
        - type:
            - object
            - 'null'
          title: interval_type = weekly
          description: Reinicio semanal de la cadena de ofertas.
          properties:
            interval_type:
              $ref: '#/components/schemas/offer_chain_interval_type_weekly'
            day_of_week:
              $ref: '#/components/schemas/offer_chain_day_of_week'
            time:
              $ref: '#/components/schemas/offer_chain_time'
          required:
            - interval_type
            - time
            - day_of_week
        - type: object
          title: interval_type = monthly
          description: Reinicio mensual de la cadena de ofertas.
          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 = hourly
          description: >-
            Reinicio de la cadena de ofertas realizado en el intervalo
            especificado en horas.
          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: Cantidad del artículo de recompensa para este paso de cadena.
          minimum: 1
        order:
          description: Orden de recompensa para el paso de la cadena de ofertas.
          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: Una cadena de ofertas.
      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 único del paso de cadena.
      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: Cantidad de artículos.
          minimum: 1
          example: 1
        order:
          $ref: '#/components/schemas/order'
    admin-offer-chain-step-model:
      type: object
      description: Paso de cadena de ofertas.
      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: Una cadena de ofertas.
      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 único de paso de cadena. Especifíquelo durante la actualización para
        mantener el progreso del usuario para este paso.
      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: Una cadena de ofertas.
      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: Tipo de lote. Se devuelve si el tipo de artículo es un lote.
      enum:
        - standard
        - virtual_currency_package
        - partner_side_content
    unit_type:
      type: string
      example: game
      description: 'Tipo de unidad: `game`.'
    drm_name:
      type: string
      example: Steam
      description: Nombre del DRM de la clave del juego.
    drm_sku:
      type: string
      example: steam
      description: ID único del DRM.
    Upsell-model:
      type: object
      description: Tipo de venta adicional.
      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: Matriz de SKU de artículos.
          items:
            type: string
      required:
        - is_enabled
        - type
        - items
    Upsell-model-not-fixed-list:
      type: object
      description: Tipo de venta adicional.
      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: Matriz de SKU de artículos vacía.
          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: Grupos a los que pertenece el artículo.
      items:
        type: object
        properties:
          external_id:
            type: string
            example: horror
          name:
            type: object
            description: >-
              Nombre del artículo. Debe contener pares clave/valor

              en los cuales clave es una configuración regional con formato
              "^[a-z]{2}", valor es una cadena (string).
            example:
              en: Horror
              de: Horror
            default:
              en: Horror
            additionalProperties:
              type: string
    Virtual-Items-Currency_client-attributes:
      type: array
      description: >-
        Lista de atributos y sus valores correspondientes al artículo. Puede
        utilizarse para filtrar el catálogo.
      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: Nombre del atributo.
            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: Valor del atributo.
                  example: Strategy
    client_virtual_prices_response:
      type: array
      description: Precios virtuales.
      items:
        type: object
        description: Precio virtual.
        properties:
          amount:
            type: integer
            example: 100
            description: Precio del artículo en moneda virtual.
          amount_without_discount:
            type: integer
            example: 200
            description: >-
              Precio del artículo en moneda virtual sin descuento. Siempre es
              igual a `amount`, ya que los descuentos no se aplican a los
              precios en moneda virtual.
          sku:
            type: string
            example: vc_gold
            description: SKU de la moneda virtual.
          is_default:
            type: boolean
            example: true
            description: Si es o no el precio predeterminado en moneda virtual.
          image_url:
            type:
              - string
              - 'null'
            example: http://image.png
            description: URL de imagen de la moneda virtual.
          name:
            type: string
            example: Gold
            description: Nombre de la moneda virtual.
          type:
            type: string
            example: virtual_currency
            description: Tipo de artículo. Para la moneda virtual, es `virtual_currency`.
          description:
            type:
              - string
              - 'null'
            example: In-game currency used to purchase weapons and upgrades
            description: Virtual currency description.
    item-periods-response:
      type: array
      description: Periodo de venta del artículo.
      items:
        type: object
        properties:
          date_from:
            type:
              - string
              - 'null'
            format: date-time
            example: '2020-08-11T10:00:00+03:00'
            description: >-
              Fecha en la que el artículo especificado estará disponible para la
              venta.
          date_until:
            type:
              - string
              - 'null'
            format: date-time
            example: '2020-08-11T20:00:00+03:00'
            description: >-
              Fecha en la que el artículo especificado dejará de estar
              disponible para la venta. Puede ser `null`.
    item-custom-attributes-response:
      type: object
      description: Un objeto JSON que contiene los atributos y valores del artículo.
      format: json
    Upsell_item:
      type: object
      properties:
        sku:
          type: string
          example: big_rocket
          description: >-
            ID único del artículo. El SKU solo puede contener caracteres
            alfanuméricos latinos en minúsculas y mayúsculas, puntos, guiones y
            guiones bajos.
        name:
          type: string
          example: Big Rocket
          description: Nombre del artículo.
        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: 'Tipo de artículo: `virtual_good`/`virtual_currency`/`bundle`.'
        description:
          type: string
          example: Big Rocket - description
          description: Item description.
        image_url:
          type: string
          example: >-
            https://popmedia.blob.core.windows.net/popyourself/male/outfit/male_armor_white_a-01.png
          description: URL de la imagen.
        is_free:
          $ref: '#/components/schemas/value-is_free'
        price:
          type:
            - object
            - 'null'
          description: Precios de artículos.
          properties:
            amount:
              type: string
              example: '100.99'
              description: Precio del artículo con descuento.
            amount_without_discount:
              type: string
              example: '100.99'
              description: Precio del artículo.
            currency:
              type: string
              example: USD
              description: >-
                Divisa del precio del artículo. Código de tres letras según [ISO
                4217](https://en.wikipedia.org/wiki/ISO_4217).
        virtual_prices:
          $ref: '#/components/schemas/client_virtual_prices_response'
        can_be_bought:
          $ref: '#/components/schemas/Can_be_bought'
        virtual_item_type:
          type: string
          example: non-consumable
          description: >-
            Tipo de artículo virtual.


            Valores posibles:

            - `consumable`: Un objeto que desaparece del inventario tras su
            utilización (p. ej., munición).

            - `non_consumable`: Un objeto que permanece en el inventario durante
            un tiempo ilimitado.

            - `non_renewing_subscription`: Objeto de duración limitada que puede
            representar el acceso a servicios o contenidos durante un periodo
            limitado.
          enum:
            - consumable
            - non_consumable
            - non_renewing_subscription
        promotions:
          $ref: '#/components/schemas/Catalog_item_promotions'
        limits:
          $ref: '#/components/schemas/Catalog_item_limits'
        periods:
          $ref: '#/components/schemas/item-periods-response'
        custom_attributes:
          $ref: '#/components/schemas/item-custom-attributes-response'
        vp_rewards:
          $ref: '#/components/schemas/client-item-value-point-reward'
    Upsell_item-list:
      type: object
      properties:
        has_more:
          $ref: '#/components/schemas/Pagination_has-more'
        items:
          type: array
          items:
            $ref: '#/components/schemas/Upsell_item'
  examples:
    Promotions_200-admin-promotions:
      value:
        promotions:
          - id: 1
            promotion_periods:
              - date_from: '2020-01-01T00:00:00+03:00'
                date_until: null
            name:
              en: promotion_1
            type: item_bonus
            is_enabled: true
            bonus:
              - item:
                  description: null
                  image_url: null
                  sku: com.xsolla.diamonds_pack_1
                  name:
                    en: Diamonds pack
                    ru: Пак кристаллов
                  type: bundle
                  bundle_type: virtual_currency_package
                  content: []
                quantity: 1
            condition:
              - item:
                  description: null
                  image_url: null
                  sku: com.xsolla.virtual_good_bonus_2
                  name:
                    en: VG name
                    ru: Название VG
                  type: virtual_good
            discount: null
          - id: 2
            promotion_periods:
              - date_from: '2020-01-01T00:00:00+03:00'
                date_until: '2030-01-01T00:00:00+03:00'
            name:
              en: promotion_2
            type: item_discount
            is_enabled: false
            bonus: []
            condition:
              - item:
                  description: null
                  image_url: null
                  sku: com.xsolla.virtual_good_bonus_2
                  name:
                    en: VG name
                    ru: Название VG
                  type: virtual_good
            discount:
              percent: '10.99'
          - id: 3
            promotion_periods:
              - date_from: '2020-01-01T00:00:00+03:00'
                date_until: '2030-01-01T00:00:00+03:00'
            name:
              en: promotion_3
            type: coupon_bonus
            is_enabled: true
            bonus:
              - item:
                  description: null
                  image_url: null
                  sku: com.xsolla.virtual_good_bonus_2
                  name:
                    en: VG name
                    ru: Название VG
                  type: virtual_good
                quantity: 2
            condition:
              - item:
                  external_id: coupon_2
                  name:
                    en: Coupon name
                    ru: Название купона
                  is_enabled: true
                  redeem_total_limit: null
                  redeem_user_limit: null
                  redeem_code_limit: 1
            discount: null
          - id: 4
            promotion_periods:
              - date_from: '2018-01-01T00:00:00+03:00'
                date_until: '2031-01-01T00:00:00+03:00'
            name:
              en: promotion_4
            type: promocode_bonus_discount
            is_enabled: false
            bonus:
              - item:
                  description: null
                  image_url: null
                  sku: com.xsolla.virtual_good_bonus_2
                  name:
                    en: VG name
                    ru: Название VG
                  type: virtual_good
                quantity: 2
            condition:
              - item:
                  external_id: coupon_3
                  name:
                    en: Coupon name
                    ru: Название купона
                  is_enabled: true
                  redeem_total_limit: null
                  redeem_user_limit: null
                  redeem_code_limit: 1
            discount:
              percent: '12.99'
          - id: 5
            promotion_periods:
              - date_from: '2020-01-01T00:00:00+03:00'
                date_until: null
            name:
              en: promotion_5
            type: cart_bonus
            is_enabled: true
            bonus:
              - item:
                  description: null
                  image_url: null
                  sku: com.xsolla.virtual_good_bonus_4
                  name:
                    en: VG name
                    ru: Название VG
                  type: virtual_good
                quantity: 1
            condition: null
            discount: null
        total_promotions_count: 5
        active_promotions_count: 3
        inactive_promotions_count: 2
    422-activate-deactivate-promotion:
      value:
        statusCode: 422
        errorCode: 9505
        errorMessage: '[0401-9505]: Error was occurred while promotion was being updated'
        transactionId: da145238620011eb8e24fe6913ff226a
    Promotions_200-get-coupon-rewards:
      value:
        bonus:
          - item:
              sku: com.xsolla.game_1
              name:
                en: Game name
              type: unit
              description: Game description
              image_url: >-
                https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png
              unit_items:
                - sku: com.xsolla.game_key_01
                  name: Game name
                  type: game_key
                  is_free: false
                  drm_name: Steam
                  drm_sku: steam_key_01
                - sku: game_key_02
                  name: Game name
                  type: game_key
                  drm_name: Origin
                  drm_sku: origin_key_02
            quantity: 1
          - item:
              sku: com.xsolla.game_2
              name:
                en: Game name
              type: unit
              description: Game description
              image_url: >-
                https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png
              unit_items:
                - sku: com.xsolla.game_key_01
                  type: game_key
                  name: Game name
                  drm_name: Steam
                  drm_sku: steam_key_01
            quantity: 2
        discount:
          percent: '10.00'
        is_selectable: true
    Promotions_200-admin-coupons:
      value:
        items:
          - external_id: coupon_44056_1
            promotion_periods:
              - date_from: '2020-04-15T18:16:00+05:00'
                date_until: '2020-04-25T18:16:00+05:00'
              - date_from: '2020-05-15T18:16:00+05:00'
                date_until: '2020-05-25T18:16:00+05:00'
            name:
              en-US: New Year Bonus
              de-DE: Neujahrsbonus
            is_enabled: true
            bonus:
              - sku: com.xsolla.elven_sword_1
                quantity: 1
              - sku: com.xsolla.elven_shield_1
                quantity: 2
              - sku: com.xsolla.elven_gloves_1
                quantity: 2
            redeem_user_limit: null
            redeem_total_limit: null
            redeem_code_limit: 1
            total_limit_state: null
          - external_id: summer2021
            promotion_periods:
              - date_from: '2020-04-15T18:16:00+05:00'
                date_until: '2020-04-25T18:16:00+05:00'
            name:
              en-US: Coupon name
              de-DE: Gutscheintitel
            is_enabled: true
            bonus:
              - sku: com.xsolla.diamonds_1
                quantity: 100
            redeem_user_limit: null
            redeem_total_limit: 100
            redeem_code_limit: 1
            total_limit_state:
              available: 50
              reserved: 10
              used: 40
        total_promotions_count: 2
        active_promotions_count: 2
        inactive_promotions_count: 0
    Promotions_200-coupon-code-list:
      value:
        codes:
          - code: CODE001
          - code: CODE002
          - code: CODE003
          - code: CODE004
          - code: CODE005
        total_count: 5
    Promotions_200-get-promocode-rewards:
      value:
        bonus:
          - item:
              sku: com.xsolla.game_1
              name: Game name
              type: unit
              description: Game description
              image_url: >-
                https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png
              unit_items:
                - sku: com.xsolla.game_key_01
                  name: Game name
                  type: game_key
                  is_free: false
                  drm_name: Steam
                  drm_sku: steam_key_01
                - sku: com.xsolla.game_key_02
                  name: Game name
                  type: game_key
                  drm_name: Origin
                  drm_sku: origin_key_02
            quantity: 1
          - item:
              sku: com.xsolla.game_2
              name: Game name
              type: unit
              description: Game description
              image_url: >-
                https://cdn.xsolla.net/img/misc/images/b79342cdf24f0f8557b63c87e8326e62.png
              unit_items:
                - sku: com.xsolla.game_key_01
                  type: game_key
                  name: Game name
                  drm_name: Steam
                  drm_sku: steam_key_01
            quantity: 2
        discount:
          percent: '10.00'
        is_selectable: true
        discounted_items:
          - sku: com.xsolla.elven_sword_1
            discount:
              percent: '10.00'
    Promotions_200-admin-promocodes:
      value:
        items:
          - external_id: promocode_100_crystals
            promotion_periods:
              - date_from: '2020-04-15T18:16:00+05:00'
                date_until: '2020-04-25T18:16:00+05:00'
            name:
              en-US: New Year Bonus
              de-DE: Neujahrsbonus
            is_enabled: true
            bonus:
              - sku: com.xsolla.elven_sword_1
                quantity: 1
              - sku: com.xsolla.elven_shield_1
                quantity: 2
              - sku: com.xsolla.elven_gloves_1
                quantity: 2
            redeem_user_limit: null
            redeem_total_limit: null
            redeem_code_limit: 1
            total_limit_state: null
            discount: null
            discounted_items: null
          - external_id: summer2021
            promotion_periods:
              - date_from: '2020-04-15T18:16:00+05:00'
                date_until: '2020-04-25T18:16:00+05:00'
            name:
              en-US: Coupon name
              de-DE: Gutscheintitel
            is_enabled: true
            bonus:
              - sku: com.xsolla.diamonds_1
                quantity: 100
            redeem_user_limit: null
            redeem_total_limit: 100
            redeem_code_limit: null
            total_limit_state:
              available: 50
              reserved: 10
              used: 40
            discount:
              percent: '10.99'
            discounted_items:
              - sku: com.xsolla.elven_sword_1
                discount:
                  percent: '10.00'
            price_conditions:
              - operator: ge
                value: '10.0000'
              - operator: le
                value: '50.0000'
            excluded_promotions:
              - 23
              - 45
        total_promotions_count: 2
        active_promotions_count: 2
        inactive_promotions_count: 0
    Promotions_200-admin-unique-catalog-offers:
      value:
        items:
          - external_id: new_year_bonus
            promotion_periods:
              - date_from: '2020-04-15T18:16:00+05:00'
                date_until: '2020-04-25T18:16:00+05:00'
              - date_from: '2020-05-15T18:16:00+05:00'
                date_until: '2020-05-25T18:16:00+05:00'
            name:
              en-US: New Year Bonus
              de-DE: Neujahrsbonus
            items:
              - booster
              - booster_mega
            is_enabled: true
            redeem_user_limit: 1
            redeem_total_limit: null
            redeem_code_limit: 1
            total_limit_state: null
          - external_id: secret_store
            promotion_periods:
              - date_from: '2020-04-15T18:16:00+05:00'
                date_until: null
            name:
              en-US: Secret store
              ru-RU: Тайный магазин
            items:
              - helmet
              - armor
              - sword
            is_enabled: true
            redeem_user_limit: 1
            redeem_total_limit: 100
            redeem_code_limit: 1
            total_limit_state:
              available: 50
              reserved: 10
              used: 40
        total_promotions_count: 2
        active_promotions_count: 2
        inactive_promotions_count: 0
    404-coupon-not-found:
      value:
        statusCode: 404
        errorCode: 9802
        errorMessage: '[0401-9802]: Coupon not found'
        transactionId: x-x-x-x-transactionId-mock-x-x-x
    404-user-not-found:
      value:
        statusCode: 404
        errorCode: 5008
        errorMessage: '[0401-5008]: Could not find User'
        transactionId: transaction id
    Promotions_422-invalid-coupon:
      value:
        statusCode: 422
        errorCode: 1102
        errorMessage: >-
          [0401-1102]: Unprocessable Entity. The property `external_id` is
          required
    code-limit:
      value:
        promotion_id: 1
        items:
          - code: WINTER2023
            per_code:
              total: 10
              available: 7
              used: 2
              reserved: 1
          - code: SUMMER2023
            per_code:
              total: 5
              available: 0
              used: 3
              reserved: 2
        total_items_count: 2
        has_more: false
    401-complex-auth-header-not-found:
      value:
        statusCode: 401
        errorCode: 1501
        errorMessage: '[0401-1501]: Authorization failed: Authorization header not sent'
        transactionId: x-x-x-x-transactionId-mock-x-x-x
    401-complex-auth-incorrect-credentials:
      value:
        statusCode: 401
        errorCode: 1013
        errorMessage: '[0401-1013]: Token not found.'
        transactionId: x-x-x-x-transactionId-mock-x-x-x
    422-user_external_id_invalid:
      value:
        statusCode: 404
        errorCode: 1102
        errorMessage: '[0401-1102]: Unprocessable Entity'
        transactionId: transaction id
        errorMessageExtended:
          - property: user_external_id
            message: Must be at least 1 characters long
          - property: user_external_id
            message: Does not match the regex pattern ^\S+$
    404-promotion-by-id-not-found:
      value:
        statusCode: 404
        errorCode: 1101
        errorMessage: '[0401-1101]: Promotion not found'
        transactionId: transaction id
    422-promotion-without-user-limit:
      value:
        statusCode: 422
        errorCode: 4509
        errorMessage: '[0401-4509]: Promotion does not have configured user limits.'
        transactionId: transaction id
    422-promotion-out-of-range-available-user-limit:
      value:
        statusCode: 422
        errorCode: 4511
        errorMessage: '[0401-4511]: Available promotion limit is out of range.'
        transactionId: transaction id
    200-value-points-reward-chain_admin_get-value-point-list:
      value:
        items:
          - sku: com.xsolla.reward_vp_1
            name:
              en: Reward VP 1
            type: value_point
            is_enabled: true
            description:
              en: Points for reward system
            long_description:
              en: Points given to users to get new rewards in a reward chain.
            image_url: >-
              https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
            media_list: []
            order: 1
            is_clan: false
          - sku: com.xsolla.reward_vp_2
            name:
              en: Reward VP 2
            type: value_point
            is_enabled: false
            description:
              en: Value points for reward system.
            long_description:
              en: >-
                Value points given to users to get new rewards in a reward
                chain.
            image_url: >-
              https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
            media_list: []
            order: 2
            is_clan: false
          - sku: com.xsolla.clan_value_point_1
            name:
              en: Clan Reward VP 1
            is_enabled: true
            description:
              en: Value points for clan reward system.
            long_description:
              en: >-
                Value points given to clans to get new rewards in a reward
                chain.
            image_url: >-
              https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
            media_list: []
            order: 3
            is_clan: true
    422-property-sku-is-required:
      value:
        statusCode: 422
        errorCode: 1102
        errorMessage: '[0401-1102]: Unprocessable Entity. The property `sku` is required'
        transactionId: da145238620011eb8e24fe6913ff226a
    200-value-points-reward-chain_admin_get-value-point:
      value:
        sku: com.xsolla.reward_vp_1
        name:
          en: Reward VP 1
        type: value_point
        is_enabled: true
        description:
          en: Points for reward system
        long_description:
          en: Points given to users to get new rewards in a reward chain.
        image_url: >-
          https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
        media_list: []
        order: 1
        is_clan: false
        can_delete: false
    200-value-points-rewards-list:
      value:
        items:
          - item_id: 14232
            sku: com.xsolla.booster_1
            name:
              en: Booster
            image_url: >-
              https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
            amount: 100
          - item_id: 14232
            sku: com.xsolla.booster_mega
            name:
              en: Mega Booster
            image_url: >-
              https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
            amount: 200
    200-client-get-reward-chains-list:
      value:
        has_more: false
        total_items_count: 1
        items:
          - reward_chain_id: 10
            name: Weekly quest
            description: Big weekly quest
            long_description: >-
              You can get a lot of additional items just by shopping during the
              week
            image_url: >-
              https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
            order: 1
            date_start: '2023-04-15T18:16:00+05:00'
            date_end: '2023-04-25T18:16:00+05:00'
            value_point:
              sku: com.xsolla.value_point_1
              name: Value point
              image_url: >-
                https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
              description: null
              long_description: null
              amount: 130
            clan_type: null
            top_contributors: []
            steps:
              - step_id: 1
                name: Level 1
                is_claimed: true
                image_url: >-
                  https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                price:
                  amount: 100
                reward:
                  - sku: com.xsolla.box_1
                    name: Super box
                    type: bundle
                    description: Super box with items
                    image_url: >-
                      https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                    quantity: 1
                  - sku: com.xsolla.box_2
                    name: Mega box
                    type: bundle
                    description: Mega box with items
                    image_url: >-
                      https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                    quantity: 1
              - step_id: 2
                name: Level 2
                is_claimed: false
                image_url: >-
                  https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                price:
                  amount: 200
                reward:
                  - sku: com.xsolla.box_1
                    name: Super box
                    type: bundle
                    description: Super box with items
                    image_url: >-
                      https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                    quantity: 2
                  - sku: com.xsolla.box_2
                    name: Mega box
                    type: bundle
                    description: Mega box with items
                    image_url: >-
                      https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                    quantity: 2
            recurrent_schedule:
              interval_type: weekly
              reset_next_date: 1746057600
            popup_header: null
            popup_instruction: null
            popup_image_url: null
          - reward_chain_id: 12
            name: Weekly clan quest
            description: Major weekly clan quest.
            long_description: >-
              You and your clan members can get additional items for shopping
              during a certain month.
            image_url: >-
              https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
            order: 2
            date_start: '2023-04-15T18:16:00+05:00'
            date_end: '2023-10-15T18:16:00+05:00'
            value_point:
              sku: com.xsolla.clan_value_point_1
              name: Clan Reward VP 1
              image_url: >-
                https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
              description: Value points for clan reward system.
              long_description: >-
                Value points given to clans to get new rewards in a reward
                chain.
              amount: 80
            clan_type: guild
            top_contributors:
              - name: Rabbit
                contributed_amount: 100
              - name: Rocket
                contributed_amount: 80
              - name: Rain
                contributed_amount: 40
            steps:
              - step_id: 1
                name: Level 1
                is_claimed: true
                image_url: >-
                  https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                price:
                  amount: 100
                reward:
                  - sku: com.xsolla.box_1
                    name: Super box
                    type: bundle
                    description: Super box with items
                    image_url: >-
                      https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                    quantity: 1
                  - sku: com.xsolla.box_2
                    name: Mega box
                    type: bundle
                    description: Mega box with items
                    image_url: >-
                      https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                    quantity: 1
              - step_id: 2
                name: Level 2
                is_claimed: false
                image_url: >-
                  https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                price:
                  amount: 200
                reward:
                  - sku: com.xsolla.box_1
                    name: Super box
                    type: bundle
                    description: Super box with items
                    image_url: >-
                      https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                    quantity: 2
                  - sku: com.xsolla.box_2
                    name: Mega box
                    type: bundle
                    description: Mega box with items
                    image_url: >-
                      https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                    quantity: 2
            recurrent_schedule:
              interval_type: monthly
              reset_next_date: 1746057600
            popup_header:
              en: How to unlock rewards
            popup_instruction:
              en: >-
                You should be a clan member to get clan rewards. You join a clan
                when a clan member invited you to the clan, and you accepted the
                invite. You can create your own clan.
            popup_image_url: >-
              https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
    200-client-get-user-reward-chain-balance:
      summary: Reward chain example
      value:
        sku: com.xsolla.value_point_1
        name: Value point
        image_url: >-
          https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
        description: null
        long_description: null
        amount: 130
        is_clan: false
    200-client-get-user-clan-reward-chain-balance:
      summary: Clan reward chain example
      value:
        sku: com.xsolla.clan_value_point_1
        name: Clan Reward VP 1
        image_url: >-
          https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
        description: Value points for clan reward system.
        long_description: Value points given to clans to get new rewards in a reward chain.
        amount: 80
        is_clan: true
    200-client-update-user-clan:
      value:
        reward:
          - sku: com.xsolla.box_1
            name: Super box
            type: bundle
            description: Super box with items
            image_url: >-
              https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
            quantity: 1
            bundle_type: standard
          - sku: com.xsolla.potion_1
            name: Mega potion
            type: virtual_good
            description: Mega potion
            image_url: >-
              https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
            quantity: 1
    200-reward-chain-list:
      value:
        has_more: true
        items:
          - name:
              en: Reward chain
            reward_chain_id: 1
            description:
              en: Reward chain description
            long_description:
              en: Reward chain long description
            is_enabled: true
            image_url: >-
              https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
            order: 1
            periods:
              - date_from: '2026-01-01T01:00:00+05:00'
                date_until: '2026-01-31T23:59:59+05:00'
              - date_from: '2026-02-01T01:00:00+05:00'
                date_until: '2026-02-28T23:59:59+05:00'
            value_point:
              sku: com.xsolla.reward_vp_1
              name:
                en: Reward VP 1
              type: value_point
              is_enabled: true
              description: Value points for standard reward system.
              long_description: >-
                Value points given to users to get new rewards in a reward
                chain.
              image_url: >-
                https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
              media_list: []
              order: 1
              is_clan: false
            recurrent_schedule: null
            attribute_conditions:
              - attribute: race
                operator: eq
                value: ork
                type: string
                can_be_missing: false
            is_always_visible: true
            is_reset_after_end: true
          - name:
              en: Clan reward chain
            reward_chain_id: 2
            description:
              en: Clan reward chain description.
            long_description:
              en: Clan reward chain long description.
            is_enabled: true
            image_url: >-
              https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
            order: 1
            periods:
              - date_from: '2026-01-01T01:00:00+05:00'
                date_until: '2026-01-31T23:59:59+05:00'
              - date_from: '2026-02-01T01:00:00+05:00'
                date_until: '2026-02-28T23:59:59+05:00'
            value_point:
              sku: com.xsolla.clan_value_point_1
              name:
                en: Clan Reward VP 1
              is_enabled: true
              description: Value points for clan reward system.
              long_description: >-
                Value points given to clans to get new rewards in a reward
                chain.
              image_url: >-
                https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
              media_list: []
              order: 1
              is_clan: true
            recurrent_schedule:
              day_of_month: null
              day_of_week: 2
              displayable_reset_next_date: '2026-01-06T01:00:00+05:00'
              displayable_reset_start_date: '2026-01-01T01:00:00+05:00'
              interval_type: weekly
              reset_next_date: 1767643200
              time: 01:00:00+05:00
            popup_header:
              en: How to unlock rewards
            popup_instruction:
              en: >-
                You must be a clan member in order to get clan rewards. You join
                a clan when a clan member invites you to the clan, and you
                accept the invite. You can also create your own clan.
            popup_image_url: >-
              https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
            clan_type: guild
    200-reward-chain:
      summary: Reward chain example
      value:
        reward_chain_id: 1
        name:
          en: Reward chain
        description:
          en: Reward chain description
        long_description:
          en: Reward chain long description
        is_enabled: true
        image_url: >-
          https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
        order: 1
        periods:
          - date_from: '2026-01-01T01:00:00+05:00'
            date_until: '2026-01-31T23:59:59+05:00'
          - date_from: '2026-02-01T01:00:00+05:00'
            date_until: '2026-02-28T23:59:59+05:00'
        value_point:
          sku: com.xsolla.reward_vp_1
          name:
            en: Reward VP 1
          type: value_point
          is_enabled: true
          description:
            en: Value points for reward system.
          long_description:
            en: Value points given to users to get new rewards in a reward chain.
          image_url: >-
            https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
          media_list: []
          order: 1
          is_clan: false
        steps:
          - name:
              en: First step of the reward chain
            step_id: 1
            image_url: >-
              https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
            reward:
              - sku: com.xsolla.item_1
                quantity: 5
              - sku: com.xsolla.item_2
                quantity: 1
            price:
              amount: 10
          - name:
              en: Second step of the reward chain
            step_id: 2
            image_url: >-
              https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
            reward:
              - sku: com.xsolla.item_3
                quantity: 5
              - sku: com.xsolla.item_4
                quantity: 1
            price:
              amount: 15
        recurrent_schedule:
          day_of_week: 2
          displayable_reset_next_date: '2026-01-06T01:00:00+05:00'
          displayable_reset_start_date: '2026-01-01T01:00:00+05:00'
          interval_type: weekly
          reset_next_date: 1767643200
          time: 01:00:00+05:00
        attribute_conditions:
          - attribute: race
            operator: eq
            value: ork
            type: string
            can_be_missing: false
        is_always_visible: true
        is_reset_after_end: true
    200-clan-reward-chain:
      summary: Clan reward chain example
      value:
        reward_chain_id: 1
        name:
          en: Clan reward chain
        description:
          en: Clan reward chain description.
        long_description:
          en: Clan reward chain long description.
        is_enabled: true
        image_url: >-
          https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
        order: 1
        periods:
          - date_from: '2020-04-15T18:16:00+05:00'
            date_until: '2021-04-15T18:16:00+05:00'
        value_point:
          sku: com.xsolla.clan_value_point_1
          name:
            en: Clan Reward VP 1
          is_enabled: true
          description:
            en: Value points for clan reward system.
          long_description:
            en: >-
              Value points given to clans to get new rewards in a certain reward
              chain.
          image_url: >-
            https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
          media_list: []
          order: 1
          is_clan: true
        steps:
          - name:
              en: First step of the reward chain
            step_id: 1
            image_url: >-
              https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
            reward:
              - sku: com.xsolla.item_1
                quantity: 5
              - sku: com.xsolla.item_2
                quantity: 1
            price:
              amount: 10
          - name:
              en: Second step of the reward chain
            step_id: 2
            image_url: >-
              https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
            reward:
              - sku: com.xsolla.item_3
                quantity: 5
              - sku: com.xsolla.item_4
                quantity: 1
            price:
              amount: 15
        recurrent_schedule:
          day_of_week: 2
          displayable_reset_next_date: '2023-03-07T11:00:00+08:00'
          displayable_reset_start_date: '2023-02-28T11:00:00+08:00'
          interval_type: weekly
          reset_next_date: 1677553200
          time: 11:00:00+08:00
        popup_header:
          en: How to unlock rewards
        popup_instruction:
          en: >-
            You must be a clan member in order to get clan rewards. You join a
            clan when a clan member invites you to the clan, and you accept the
            invite. You can also create your own clan.
        popup_image_url: >-
          https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
        clan_type: guild
    200-admin-daily-chain-list:
      summary: Daily reward list example
      value:
        has_more: false
        total_items_count: 3
        items:
          - id: 1
            name:
              en: Daily reward
              ru: Ежедневная награда
            description:
              en: Daily reward short description
            order: 1
            number_of_steps: 10
            date_start: '2023-04-15T18:16:00+05:00'
            date_end: '2025-04-25T18:16:00+05:00'
            is_enabled: false
            is_recurrent: true
            type: calendar_hard
          - id: 2
            name:
              en: Monthly daily reward
              ru: Ежедневные награды в цепочке на месяц
            description:
              en: Monthly daily reward short description
            order: 2
            number_of_steps: 13
            date_start: '2025-04-15T00:00:00+08:00'
            date_end: '2025-04-28T15:00:00+08:00'
            is_enabled: false
            is_recurrent: true
            type: calendar_hard
          - id: 3
            name:
              en: Login reward
            description:
              en: Login reward short description
            order: 3
            number_of_steps: 7
            date_start: '2023-05-01T18:16:00+05:00'
            date_end: '2025-05-31T18:16:00+05:00'
            is_enabled: true
            is_recurrent: true
            type: rolling_skippable
          - id: 4
            name:
              en: Daily reward
              ru: Ежедневная награда
            description:
              en: Daily reward short description
            order: 4
            number_of_steps: 10
            date_start: '2023-04-15T18:16:00+05:00'
            date_end: '2025-04-25T18:16:00+05:00'
            is_enabled: true
            is_recurrent: true
            type: calendar_hard
          - id: 5
            name:
              en: Unskippable login reward
            description:
              en: Unskippable login reward short description
            order: 3
            number_of_steps: 7
            date_start: '2025-11-01T10:00:00+05:00'
            date_end: '2025-11-30T10:00:00+05:00'
            is_enabled: true
            is_recurrent: true
            type: rolling_unskippable
    422-admin-daily-chain-error-too-many-steps:
      summary: Too many steps
      description: >-
        Daily reward steps max amount limit of 30 items is exceeded. Try
        specifying less steps.
      value:
        statusCode: 422
        errorCode: 6203
        errorMessage: '[0401-6203]: Chain step count exceeds the allowed limit'
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          step_count: 31
          max_steps: 30
    422-admin-daily-chain-error-incorrect-steps-order:
      summary: Incorrect steps order
      description: >-
        Daily reward steps numbers sequence is incorrect. Correct step numbers
        should be sequential without any gaps or duplicates.
      value:
        statusCode: 422
        errorCode: 6210
        errorMessage: '[0401-6210]: Chain step numbers are invalid'
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          incorrect_step_numbers:
            duplicates:
              - 2
              - 7
            out_of_range:
              - 7
              - 8
            missing:
              - 3
              - 4
              - 5
              - 6
    422-admin-daily-chain-error-item-limit-exceeded:
      summary: Item limit exceeded
      description: >-
        Daily reward step item count exceeds the allowed limit for some steps.
        Currently only 1 item per step is allowed.
      value:
        statusCode: 422
        errorCode: 6208
        errorMessage: >-
          [0401-6208]: Chain step item count exceeds the allowed limit for some
          steps
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          max_items: 1
          steps_exceeded_limits:
            - step_number: 1
              items_count: 2
            - step_number: 4
              items_count: 3
    422-admin-daily-chain-error-incorrect-items:
      summary: Incorrect step items
      description: >-
        Specified items are not allowed, disabled or not found. Only enabled
        items of following types are allowed: virtual item, bundle, virtual
        currency package.
      value:
        statusCode: 422
        errorCode: 6211
        errorMessage: '[0401-6211]: Chain steps items are not allowed or not found'
        transactionId: x-x-xX-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          invalid_items:
            not_found:
              - vg_deleted_item_1
              - vg_deleted_item_2
              - not_existing_sku_404_1
              - not_existing_sku_404_2
            disabled:
              - vg_disabled_item_1
              - vg_disabled_item_2
              - vc_disabled_1
            invalid_item_type:
              allowed_item_type_list:
                - virtual_good
                - bundle
              sku_map:
                vc_enabled_shown_in_store_1: virtual_currency
                vc_disabled_1: virtual_currency
                unit_enabled_shown_in_store_1: unit
                gk_steam_enabled_shown_in_store_1: game_key
    422-admin-daily-chain-error-invalid-dates:
      summary: Invalid date format
      description: Please, ensure dates format is valid.
      value:
        statusCode: 422
        errorCode: 6204
        errorMessage: >-
          [0401-6204]: Period of a chain is invalid. Please, check the dates in
          your request
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          chain_id: 1
          invalid_format_dates:
            date_start: '2023-04-15 17:16:00Z'
            date_end: '2025-04-25 19:16:00Z'
    422-admin-daily-chain-error-incorrect-period:
      summary: Incorrect period of a daily reward
      description: Please ensure start date is earlier than end date.
      value:
        statusCode: 422
        errorCode: 6204
        errorMessage: >-
          [0401-6204]: Period of a chain is invalid. Please, check the dates in
          your request
        transactionId: x-x-x-x-transactionId-mock-x-x-x
        errorMessageExtended:
          project_id: 0
          chain_id: 1
          invalid_periods:
            - start: '2025-04-25T18:16:00+05:00'
              end: '2023-04-15T18:16:00+05:00'
    200-admin-daily-chain:
      summary: Daily reward example
      value:
        id: 3
        name:
          en: Daily reward
          ru: Ежедневная награда
        description:
          en: Daily reward short description
        date_start: '2023-04-15T18:16:00+05:00'
        date_end: '2025-04-25T18:16:00+05:00'
        order: 1
        is_recurrent: false
        number_of_steps: 3
        steps:
          - step_id: 7
            step_number: 1
            items:
              - item_id: 9010
                sku: telescope
                name:
                  en: Telescope
                  ru: Телескоп
                type: virtual_good
                description:
                  en: Allows to see the stars
                  ru: Позволяет увидеть звезды
                image_url: https://picture.bundle-picture.png
                quantity: 1
              - item_id: 9012
                sku: health_potion
                name:
                  en: Healing potion
                  ru: Зелье лечения
                type: virtual_good
                description:
                  en: Heal 10% of your health
                  ru: Лечит 10% здоровья
                image_url: https://picture.bundle-picture.png
                quantity: 2
          - step_id: 6
            step_number: 2
            items:
              - item_id: 9010
                sku: telescope
                name:
                  en: Telescope
                  ru: Телескоп
                type: virtual_good
                description:
                  en: Allows to see the stars
                  ru: Позволяет увидеть звезды
                image_url: https://picture.bundle-picture.png
                quantity: 5
          - step_id: 5
            step_number: 3
            items:
              - item_id: 9010
                sku: telescope
                name:
                  en: Telescope
                  ru: Телескоп
                type: virtual_good
                description:
                  en: Allows to see the stars
                  ru: Позволяет увидеть звезды
                image_url: https://picture.bundle-picture.png
                quantity: 2
        is_enabled: true
        type: calendar_hard
    404-daily-chain-not-found:
      summary: Daily reward is not found
      description: No se ha encontrado la recompensa diaria.
      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="/es/api/shop-builder/operation/order-user-offer-chain-step-reward">Create
        order for paid offer chain step</a>, <a
        href="/es/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="/es/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="/es/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: Se recibió correctamente la lista de promociones.
      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: >-
        Autenticación básica no superada o errónea. Asegúrese de haber utilizado
        la autenticación básica o las credenciales correctas.
      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: Solicitud no válida.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 422
              errorCode:
                type: integer
                example: 1102
              errorMessage:
                type: string
                example: >-
                  [0401-9505]: Error was occurred while promotion was being
                  updated
              transactionId:
                type: string
                example: da145238620011eb8e24fe6913ff226a
          examples:
            Error was occurred:
              $ref: '#/components/examples/422-activate-deactivate-promotion'
    200-admin-get-redeemable-by-code:
      description: La promoción se recibió correctamente.
      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: >-
        Autenticación básica no superada o errónea. Asegúrese de haber utilizado
        la autenticación básica o las credenciales correctas.
      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: >-
        Código canjeable no encontrado. Asegúrese de que el valor del código
        proporcionado es correcto.
      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: >-
        Formato incorrecto del código canjeable. El código solo puede contener
        letras y números.
      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: El cupón fue canjeado correctamente.
      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: Precios de artículos.
                      properties:
                        amount:
                          type: string
                          example: '2.9900'
                          description: Precio del artículo con descuento.
                        amount_without_discount:
                          type: string
                          example: '2.9900'
                          description: Precio del artículo.
                        currency:
                          type: string
                          example: USD
                          description: >-
                            Divisa del precio del artículo. Código de tres
                            letras según [ISO
                            4217](https://en.wikipedia.org/wiki/ISO_4217).
                    type:
                      type: string
                    virtual_item_type:
                      type: string
                      example: non-consumable
                      description: >-
                        Tipo de artículo virtual.


                        Valores posibles:

                        - `consumable`: Un objeto que desaparece del inventario
                        tras su utilización (p. ej., munición).

                        - `non_consumable`: Un objeto que permanece en el
                        inventario durante un tiempo ilimitado.

                        - `non_renewing_subscription`: Objeto de duración
                        limitada que puede representar el acceso a servicios o
                        contenidos durante un periodo limitado.
                      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: Autenticación no superada o errónea.
      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: No se envió el encabezado de autorización.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 403
              errorCode:
                type: integer
                example: 0
              errorMessage:
                type: string
                example: No se envió el encabezado de autorización.
              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: Introduzca un código de cupón válido.
      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: Solicitud no válida.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 422
              errorCode:
                type: integer
                example: 1102
              errorMessage:
                type: string
                example: >-
                  [0401-1102]: Unprocessable Entity. The property `coupon_code`
                  is required
              transactionId:
                type: string
                example: x-x-x-x-transactionId-mock-x-x-x
          examples:
            response:
              value:
                statusCode: 422
                errorCode: 1102
                errorMessage: >-
                  [0401-1102]: Unprocessable Entity. The property `coupon_code`
                  is required
    Promotions_200-coupon-rewards:
      description: La lista de recompensas de cupones se recibió correctamente.
      content:
        application/json:
          schema:
            type: object
            properties:
              bonus:
                type: array
                items:
                  $ref: '#/components/schemas/Promotions_200-coupon-bonus-reward'
              is_selectable:
                type: boolean
                description: >-
                  Si es `true`, el usuario debe elegir la bonificación antes de
                  canjear un cupón.
              discount:
                $ref: '#/components/schemas/Promotions_200-coupon-discount-reward'
          examples:
            response:
              $ref: '#/components/examples/Promotions_200-get-coupon-rewards'
    Promotions_422-rewards:
      description: Solicitud no válida.
      content:
        application/json:
          schema:
            oneOf:
              - $ref: '#/components/schemas/Promotions_422_limit_error'
              - $ref: '#/components/schemas/Promotions_422_reglock_error'
    Promotions_200-get-coupons:
      description: La lista de cupones se recibió correctamente.
      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: Solicitud no válida.
      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: Cupón no encontrado. Asegúrese de que el `external_id` es correcto.
      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: Se produjo un error al recibir la promoción del servicio de promoción.
      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: Se recibió correctamente la lista de códigos para un cupón.
      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: Recuento total de códigos de cupón.
          examples:
            response:
              $ref: '#/components/examples/Promotions_200-coupon-code-list'
    Promotions_201-coupon-promocode-code-created:
      description: El código se creó correctamente.
      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: Solicitud no válida. El código ya existe.
      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: >-
        Código promocional no encontrado. Asegúrese de que el `external_id` es
        correcto.
      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: El código promocional se canjeó correctamente.
      content:
        application/json:
          schema:
            type: object
            properties:
              cart_id:
                type: string
                example: cart_id
                description: ID de la cesta.
              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: Precio de la cesta.
              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: Introduzca un código promocional válido.
      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: El código promocional se canceló correctamente.
      content:
        application/json:
          schema:
            type: object
            properties:
              cart_id:
                type: string
                example: cart_id
                description: ID de la cesta.
              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: Precio de la cesta.
              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: >-
                        Tipo de artículo virtual.


                        Valores posibles:

                        - `consumable`: Un objeto que desaparece del inventario
                        tras su utilización (p. ej., munición).

                        - `non_consumable`: Un objeto que permanece en el
                        inventario durante un tiempo ilimitado.

                        - `non_renewing_subscription`: Objeto de duración
                        limitada que puede representar el acceso a servicios o
                        contenidos durante un periodo limitado.
                      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: Precios de artículos.
                      properties:
                        amount:
                          type: string
                          example: '2.9900'
                          description: Precio del artículo con descuento.
                        amount_without_discount:
                          type: string
                          example: '2.9900'
                          description: Precio del artículo.
                        currency:
                          type: string
                          example: USD
                          description: >-
                            Divisa del precio del artículo. Código de tres
                            letras según [ISO
                            4217](https://en.wikipedia.org/wiki/ISO_4217).
                    promotions:
                      $ref: '#/components/schemas/Catalog_item_promotions'
                    can_be_bought:
                      $ref: '#/components/schemas/Can_be_bought'
                    vp_rewards:
                      $ref: '#/components/schemas/client-item-value-point-reward'
                    limits:
                      $ref: '#/components/schemas/Catalog_item_limits'
                    periods:
                      $ref: '#/components/schemas/item-periods'
                example:
                  - attributes: []
                    description: >-
                      Take it, take it all! All of Xsolla's riches in one Mega
                      Booster.
                    groups:
                      - external_id: powerups
                        name: Power Ups
                    image_url: >-
                      https://cdn.xsolla.net/img/misc/images/e9f2f4a634bc96ea03b5d5ceadd7c55f.png
                    is_free: false
                    name: Xsolla Booster Mega
                    price:
                      amount: '50.0000000000000000'
                      amount_without_discount: '100.0000000000000000'
                      currency: USD
                    quantity: 123
                    sku: com.xsolla.booster_mega_1
                    type: virtual_good
                    virtual_item_type: consumable
                    virtual_prices: []
                    promotions:
                      - name: Bonus promotion
                        date_start: '2020-04-15T16:16:00+03:00'
                        date_end: '2026-04-15T16:16:00+03:00'
                        discount:
                          percent: '50.00'
                        bonus:
                          - quantity: 1
                            name: Xsolla Minigun
                            image_url: >-
                              https://cdn.xsolla.net/img/misc/images/2fc5c491a47413a8e8000447889093c2.png
                            sku: com.xsolla.minigun_1
                            type: virtual_good
                    can_be_bought: true
                    vp_rewards:
                      - item_id: 175232
                        sku: com.xsolla.value_point_1
                        amount: 130
                        name: Value point
                        image_url: >-
                          https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                      - item_id: 186321
                        sku: com.xsolla.clan_value_point_1
                        amount: 50
                        name: Clan Reward VP 1
                        image_url: >-
                          https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                        is_clan: true
                    limits:
                      per_user:
                        available: 3
                        recurrent_schedule:
                          interval_type: weekly
                          reset_next_date: 1746057600
                        total: 5
                    periods:
                      - date_from: '2020-08-11T10:00:00+03:00'
                        date_until: '2020-08-11T20:00:00+03:00'
          examples:
            response:
              value:
                cart_id: cart_id
                is_free: false
                items:
                  - attributes: []
                    description: >-
                      Take it, take it all! All of Xsolla's riches in one Mega
                      Booster.
                    groups:
                      - external_id: powerups
                        name: Power Ups
                    image_url: >-
                      https://cdn.xsolla.net/img/misc/images/e9f2f4a634bc96ea03b5d5ceadd7c55f.png
                    is_free: false
                    name: Xsolla Booster Mega
                    price:
                      amount: '50.0000000000000000'
                      amount_without_discount: '100.0000000000000000'
                      currency: USD
                    quantity: 123
                    sku: com.xsolla.booster_mega_1
                    type: virtual_good
                    virtual_item_type: consumable
                    virtual_prices: []
                    promotions:
                      - name: Bonus promotion
                        date_start: '2020-04-15T16:16:00+03:00'
                        date_end: '2026-04-15T16:16:00+03:00'
                        discount:
                          percent: '50.00'
                        bonus:
                          - quantity: 1
                            name: Xsolla Minigun
                            image_url: >-
                              https://cdn.xsolla.net/img/misc/images/2fc5c491a47413a8e8000447889093c2.png
                            sku: com.xsolla.minigun_1
                            type: virtual_good
                    can_be_bought: true
                    vp_rewards:
                      - item_id: 175232
                        sku: com.xsolla.value_point_1
                        amount: 130
                        name: Value point
                        image_url: >-
                          https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                      - item_id: 186321
                        sku: com.xsolla.clan_value_point_1
                        amount: 50
                        name: Clan Reward VP 1
                        image_url: >-
                          https://cdn3.xsolla.com/img/misc/images/54c0cf9d345817cdacfdde198db178e0.jpg
                        is_clan: true
                    limits:
                      per_user:
                        available: 3
                        recurrent_schedule:
                          interval_type: weekly
                          reset_next_date: 1746057600
                        total: 5
                    periods:
                      - date_from: '2020-08-11T10:00:00+03:00'
                        date_until: '2020-08-11T20:00:00+03:00'
                price:
                  amount: '6150.0000000000000000'
                  amount_without_discount: '6150.0000000000000000'
                  currency: USD
    Promotions_422-cancel-promo-code:
      description: Solicitud no válida.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 422
              errorCode:
                type: integer
                example: 1102
              errorMessage:
                type: string
                example: >-
                  [0401-1102]: Unprocessable Entity. The property `id` is
                  required
              transactionId:
                type: string
                example: x-x-x-x-transactionId-mock-x-x-x
          examples:
            response:
              value:
                statusCode: 422
                errorCode: 1102
                errorMessage: >-
                  [0401-1102]: Unprocessable Entity. The property `id` is
                  required
    Promotions_200-promocode-rewards:
      description: >-
        La lista de recompensas de códigos promocionales se recibió
        correctamente.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Promo_code_rewards'
          examples:
            response:
              $ref: '#/components/examples/Promotions_200-get-promocode-rewards'
    Promotions_200-get-promocodes:
      description: La lista de códigos promocionales se recibió correctamente.
      content:
        application/json:
          schema:
            type: object
            properties:
              items:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/Promotions_200-get-promocode-promotion-model
              total_promotions_count:
                $ref: '#/components/schemas/total_promotions_count'
              active_promotions_count:
                $ref: '#/components/schemas/active_promotions_count'
              inactive_promotions_count:
                $ref: '#/components/schemas/inactive_promotions_count'
          examples:
            response:
              $ref: '#/components/examples/Promotions_200-admin-promocodes'
    Promotions_200-promocode-code-list:
      description: La lista de códigos para un código promocional se recibió correctamente.
      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: Número total de códigos para un código promocional.
          examples:
            response:
              $ref: '#/components/examples/Promotions_200-coupon-code-list'
    Promotions_200-get-item-promotions:
      description: Se recibió correctamente la lista de promociones del artículo.
      content:
        application/json:
          schema:
            type: object
            properties:
              promotions:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: integer
                      description: >-
                        ID de promoción. Identificador único de la promoción en
                        el proyecto.
                    promotion_periods:
                      $ref: '#/components/schemas/promotion_periods'
                    is_enabled:
                      $ref: '#/components/schemas/Promotions_is_enabled'
                    name:
                      type: object
                      description: >-
                        Nombre de la promoción. Debe contener pares clave/valor,
                        en los cuales la clave es la configuración regional con
                        el formato "^[a-z]{2}-[A-Z]{2}$", el valor es una cadena
                        (string).
                      additionalProperties:
                        type: string
                      example:
                        en-US: Promotion
                        ru-RU: Акция
                    discount:
                      type: object
                      properties:
                        percent:
                          type:
                            - string
                            - 'null'
                          description: >-
                            Porcentaje del descuento.

                            El precio del artículo se reducirá en función del
                            valor calculado de este porcentaje.
                          default: '10.00'
                    items:
                      type:
                        - array
                        - 'null'
                      items:
                        description: >-
                          La lista de artículos a los que se aplicará el
                          descuento.
                        type: object
                        properties:
                          sku:
                            type:
                              - string
                              - 'null'
                            description: SKU del artículo.
                            default: elven_sword
                    attribute_conditions:
                      $ref: >-
                        #/components/schemas/promotion_user-attribute_conditions_model-get
                    limits:
                      $ref: >-
                        #/components/schemas/Promotions_promotion_limits_response
                    excluded_promotions:
                      $ref: '#/components/schemas/excluded_promotions'
                    price_conditions:
                      $ref: '#/components/schemas/price_conditions_discount'
              total_promotions_count:
                $ref: '#/components/schemas/total_promotions_count'
              active_promotions_count:
                $ref: '#/components/schemas/active_promotions_count'
              inactive_promotions_count:
                $ref: '#/components/schemas/inactive_promotions_count'
          examples:
            response:
              value:
                promotions:
                  - id: 1
                    promotion_periods:
                      - date_from: '2020-04-15T18:16:00+05:00'
                        date_until: '2020-04-25T18:16:00+05:00'
                      - date_from: '2020-05-15T18:16:00+05:00'
                        date_until: '2020-05-25T18:16:00+05:00'
                    is_enabled: true
                    discount:
                      percent: '20.00'
                    items:
                      - sku: com.xsolla.elven_sword_1
                    name:
                      en-US: Promotion
                      ru-RU: Акция
                    limits:
                      per_user: null
                      per_item: null
                      recurrent_schedule: null
                  - id: 2
                    promotion_periods:
                      - date_from: '2020-04-15T18:16:00+05:00'
                        date_until: '2020-04-25T18:16:00+05:00'
                    is_enabled: true
                    discount:
                      percent: '10.00'
                    items:
                      - sku: com.xsolla.elven_helmet_1
                      - sku: com.xsolla.elven_armor_1
                    name:
                      en-US: Promotion
                      ru-RU: Акция
                    limits:
                      per_user:
                        total: 10
                      per_item: null
                      recurrent_schedule:
                        per_user:
                          interval_type: daily
                          time: 11:00:00+08:00
                          reset_next_date: 1677553200
                          displayable_reset_start_date: '2023-02-28T11:00:00+08:00'
                          displayable_reset_next_date: '2023-02-28T11:00:00+08:00'
                    excluded_promotions:
                      - 1
                      - 3
                  - id: 3
                    promotion_periods:
                      - date_from: '2020-04-15T18:16:00+05:00'
                        date_until: '2020-04-25T18:16:00+05:00'
                    is_enabled: true
                    discount:
                      percent: '10.00'
                    items:
                      - sku: com.xsolla.elven_helmet_2
                      - sku: com.xsolla.elven_armor_2
                    name:
                      en-US: Promotion
                      ru-RU: Акция
                    limits:
                      per_user:
                        total: 10
                      per_item: null
                      recurrent_schedule:
                        per_user:
                          interval_type: daily
                          time: 11:00:00+08:00
                          reset_next_date: 1677553200
                          displayable_reset_start_date: '2023-02-28T11:00:00+08:00'
                          displayable_reset_next_date: '2023-02-28T11:00:00+08:00'
                    price_conditions:
                      - operator: gt
                        value: '10.0000'
                      - operator: lt
                        value: '20.0000'
                  - id: 4
                    promotion_periods:
                      - date_from: '2020-04-15T18:16:00+05:00'
                        date_until: '2020-04-25T18:16:00+05:00'
                    is_enabled: true
                    discount:
                      percent: '10.00'
                    items: null
                    name:
                      en-US: Promotion
                      ru-RU: Акция
                    limits:
                      per_user:
                        total: 10
                      per_item: null
                      recurrent_schedule:
                        per_user:
                          interval_type: daily
                          time: 11:00:00+08:00
                          reset_next_date: 1677553200
                          displayable_reset_start_date: '2023-02-28T11:00:00+08:00'
                          displayable_reset_next_date: '2023-02-28T11:00:00+08:00'
                    price_conditions:
                      - operator: lt
                        value: '20.0000'
                total_promotions_count: 4
                active_promotions_count: 4
                inactive_promotions_count: 0
    Promotions_201-create-promotion:
      description: La promoción se creó correctamente.
      content:
        application/json:
          schema:
            type: object
            properties:
              promotion_id:
                type: integer
                description: >-
                  ID de promoción. Identificador único de la promoción en el
                  proyecto.
          examples:
            response:
              value:
                promotion_id: 2384756
    Promotions_422-admin-promotion-missed-items-property:
      description: Solicitud no válida.
      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: Promoción no encontrada. Asegúrese de que el `promotion_id` es correcto.
      content:
        application/json:
          schema:
            properties:
              statusCode:
                type: integer
                example: 404
              errorCode:
                type: integer
                example: 9502
              errorMessage:
                type: string
                example: >-
                  [0401-9502]: Can not find promotion with ID = 111425 in
                  project 59080
            type: object
          examples:
            response:
              value:
                statusCode: 404
                errorCode: 9502
                errorMessage: >-
                  [0401-9502]: Can not find promotion with ID = 111425 in
                  project 59080
    Promotions_200-get-bonus-promotions:
      description: La lista de promociones de bonificaciones se recibió correctamente.
      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: Solicitud no válida.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 422
              errorCode:
                type: integer
                example: 1102
              errorMessage:
                type: string
                example: >-
                  [0401-1102]:  Unprocessable Entity. The property `bonus` is
                  required
              transactionId:
                type: string
                example: x-x-x-x-transactionId-mock-x-x-x
          examples:
            response:
              value:
                statusCode: 422
                errorCode: 1102
                errorMessage: >-
                  [0401-1102]: Unprocessable Entity. The property `bonus` is
                  required
                transactionId: x-x-x-x-transactionId-mock-x-x-x
    Promotions_200-admin-get-bonus-promotion:
      description: La promoción de bonificaciones se recibió correctamente.
      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: Información sobre el código.
      content:
        application/json:
          schema:
            type: object
            properties:
              type:
                type: string
                description: 'Tipo de código: `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: Código no encontrado. Asegúrese de que el valor `code` es correcto.
      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: Promoción de códigos no válida.
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: integer
              statusCode:
                type: integer
              errorMessage:
                type: string
          examples:
            code redemption limit:
              value:
                errorCode: 9804
                statusCode: 422
                errorMessage: '[0401-9804]: You have reached the coupon redemption limit.'
            regionally restricted:
              value:
                errorCode: 9808
                statusCode: 422
                errorMessage: '[0401-9808]: Coupon is not available in your region.'
    Promotions_200-get-unique-catalog-offers:
      description: La lista de cupones se ha recibido correctamente.
      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: >-
        Se ha recibido correctamente la lista de códigos para una oferta de
        catálogo única.
      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: Número total de códigos de oferta de catálogo únicos.
          examples:
            response:
              $ref: '#/components/examples/Promotions_200-coupon-code-list'
    200-admin-get-user-promo-code-limits:
      description: >-
        Se recibieron correctamente los límites de códigos promocionales para un
        usuario.
      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: >-
        Autenticación básica no superada o errónea. Asegúrese de haber utilizado
        la autenticación básica o las credenciales correctas.
      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: Se recibieron correctamente los límites de cupón para un usuario.
      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: >-
        Se recibieron correctamente los límites del código promocional para un
        código.
      content:
        application/json:
          schema:
            type: object
            properties:
              promotion_id:
                type: integer
                description: >-
                  ID de promoción. Identificador único de la promoción en el
                  proyecto.
              items:
                type: array
                items:
                  $ref: '#/components/schemas/Code-limit-promo-code'
              total_items_count:
                type: number
                description: Número total de códigos.
              has_more:
                type: boolean
                description: Si existe otra página con códigos.
          examples:
            response:
              $ref: '#/components/examples/code-limit'
    200-admin-get-code-coupon-limits:
      description: Se recibieron correctamente los límites del cupón para un código.
      content:
        application/json:
          schema:
            type: object
            properties:
              promotion_id:
                type: integer
                description: >-
                  ID de promoción. Identificador único de la promoción en el
                  proyecto.
              items:
                type: array
                items:
                  $ref: '#/components/schemas/Code-limit-promo-code'
              total_items_count:
                type: number
                description: Número total de códigos.
              has_more:
                type: boolean
                description: Si existe otra página con códigos.
          examples:
            response:
              $ref: '#/components/examples/code-limit'
    Common_401-complex:
      description: >-
        Autenticación no superada o errónea. Asegúrese de haber utilizado la
        autenticación o las credenciales correctas.
      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: No se envió el encabezado de autorización.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 403
              errorCode:
                type: integer
                example: 0
              errorMessage:
                type: string
                example: No se envió el encabezado de autorización.
              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: Error de validación de la solicitud.
      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: Se recibieron correctamente los límites de la promoción para un usuario.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/User-limit-promotion'
          examples:
            response:
              value:
                per_user:
                  total: 10
                  available: 9
    200-admin-get-value-points:
      description: La lista de puntos de valor se recibió correctamente.
      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: El punto de valor se creó correctamente.
      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: Solicitud no válida.
      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: El punto de valor especificado se recibió correctamente.
      content:
        application/json:
          examples:
            response:
              $ref: >-
                #/components/examples/200-value-points-reward-chain_admin_get-value-point
          schema:
            $ref: '#/components/schemas/Value-point-item-model'
    200-admin-get-list-value-point-rewards:
      description: >-
        La lista de artículos cuya recompensa de puntos de valor se recibió
        correctamente.
      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: >-
        Artículo no encontrado. Asegúrese de que el `project_id` y el `sku` sean
        correctos.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 404
              errorCode:
                type: integer
                example: 4001
              errorMessage:
                type: string
                example: '[0401-4001]: Item with sku = ''electric_shiel'' not found'
    200-client-get-reward-chains-list:
      description: La cadena de recompensas del usuario se recuperó correctamente.
      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: Se utiliza como indicador de que hay más páginas.
              total_items_count:
                type: integer
                example: 10
                description: Número total de cadenas de recompensas del sistema.
              items:
                type: array
                items:
                  $ref: '#/components/schemas/client-reward-chain-item-model'
    200-client-get-user-reward-chain-balance:
      description: Se recuperó correctamente el saldo de puntos de valor del usuario.
      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: Cantidad de puntos de valor.
              is_clan:
                $ref: '#/components/schemas/is_clan'
    404-reward-chain-step-not-found:
      description: Paso de la cadena de recompensas no encontrado.
      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: No puedo reclamar la recompensa por paso.
      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: El clan del usuario se actualizó correctamente.
      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: Nombre del artículo.
                    type:
                      type: string
                      example: bundle
                      description: Tipo de artículo.
                    description:
                      type: string
                      example: Super box with items
                      description: Item description.
                    image_url:
                      $ref: '#/components/schemas/Common_admin-image_url'
                    quantity:
                      type: integer
                      example: 2
                      description: Cantidad del artículo.
                    bundle_type:
                      type: string
                      description: >-
                        Tipo de lote. Se devuelve si un tipo de artículo es un
                        lote.
                      enum:
                        - standard
                        - virtual_currency_package
    200-admin-get-list-reward-chains:
      description: La lista de cadenas de recompensas se recibió correctamente.
      content:
        application/json:
          examples:
            response:
              $ref: '#/components/examples/200-reward-chain-list'
          schema:
            type: object
            properties:
              has_more:
                $ref: '#/components/schemas/Pagination_has-more'
              items:
                type: array
                items:
                  oneOf:
                    - $ref: >-
                        #/components/schemas/admin-get-reward-chain-item-basic-model
                    - $ref: >-
                        #/components/schemas/admin-get-reward-chain-item-clan-basic-model
    201-admin-create-reward-chain:
      description: La cadena de recompensas se creó correctamente.
      content:
        application/json:
          examples:
            response:
              value:
                reward_chain_id: 10
          schema:
            type: object
            properties:
              reward_chain_id:
                type: integer
                example: 10
    200-admin-get-reward-chain:
      description: La cadena de recompensas especificada se recibió correctamente.
      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: Cadena de recompensas no encontrada.
      content:
        application/json:
          schema:
            type: object
            properties:
              statusCode:
                type: integer
                example: 404
              errorCode:
                type: integer
                example: 4001
              errorMessage:
                type: string
                example: '[0401-4001]: Reward chain not found'
          examples:
            response:
              value:
                statusCode: 404
                errorCode: 9901
                errorMessage: '[0401-4001]: Reward chain not found'
    204-admin-update-reward-chain:
      description: La cadena de recompensas se actualizó correctamente.
      content: {}
    204-admin-delete-reward-chain:
      description: La cadena de recompensas se eliminó correctamente.
      content: {}
    204-admin-toggle-reward-chain:
      description: Se ha deshabilitado/habilitado la cadena de recompensas.
      content: {}
    204-admin-reset-reward-chain:
      description: Se ha reiniciado la cadena de recompensas.
      content: {}
    200-admin-get-list-daily-chains:
      description: La lista de recompensas diarias se ha obtenido correctamente.
      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: Número total de recompensas diarias.
              items:
                type: array
                items:
                  $ref: '#/components/schemas/admin-daily-chain-short-model'
    201-admin-create-daily-chain:
      description: La recompensa diaria se ha creado correctamente.
      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: Errores de configuración incorrecta de recompensa diaria.
      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: Los datos de recompensa diaria se han obtenido correctamente.
      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: No se ha encontrado la recompensa diaria.
      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: Errores de configuración incorrecta de recompensa diaria.
      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: Las recompensas diarias del usuario se han obtenido correctamente.
      content:
        application/json:
          examples:
            response:
              $ref: '#/components/examples/200-client-daily-chain-list'
          schema:
            type: object
            properties:
              has_more:
                type: boolean
                example: true
                description: Se utiliza como indicador de que hay más páginas.
              total_items_count:
                type: integer
                example: 3
                description: Número total de recompensas diarias.
              items:
                type: array
                items:
                  $ref: '#/components/schemas/client-daily-chain-model'
    401-client-auth-error:
      description: Autenticación no superada o errónea.
      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: No se ha encontrado la recompensa diaria o el paso de recompensa diaria.
      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: La lista de cadenas de ofertas se ha recibido correctamente.
      content:
        application/json:
          examples:
            response:
              $ref: '#/components/examples/200-client-offer-chain-list'
          schema:
            type: object
            properties:
              has_more:
                type: boolean
                example: true
                description: Indica si hay más páginas disponibles.
              total_items_count:
                type: integer
                example: 10
                description: Número total de cadenas de ofertas disponibles.
              items:
                type: array
                items:
                  $ref: '#/components/schemas/client-offer-chain-model'
    404-offer-chain-not-found:
      description: No se ha encontrado la cadena de ofertas.
      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: No se ha encontrado la cadena de oferta o el paso de oferta.
      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: El pedido se creó correctamente.
      content:
        application/json:
          schema:
            type: object
            properties:
              order_id:
                type: integer
                description: ID del pedido.
              token:
                type: string
                description: Token de pago.
          examples:
            response:
              value:
                order_id: 641
                token: f4puMEFFDZcx9nv5HoNHIkPe9qghvBQo
    200-admin-get-list-offer-chains:
      description: La lista de cadenas de ofertas se ha obtenido correctamente.
      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: La cadena de ofertas se ha creado correctamente.
      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: Configuración de cadena de ofertas no válida.
      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: Los datos de la cadena de ofertas se han obtenido correctamente.
      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: Configuración de cadena de ofertas no válida.
      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: Artículo no encontrado.
      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: Solicitud no válida.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Upsell-422-invalid-request'
    Upsell-200-get-client-list:
      description: La lista de artículos de venta adicional se ha recibido correctamente.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Upsell_item-list'
          examples:
            response:
              value:
                has_more: true
                items:
                  - sku: com.xsolla.big_rocket_1
                    name: Big Rocket
                    groups:
                      - external_id: accessory
                        name:
                          en: accessory
                    attributes:
                      - external_id: stack_size
                        name:
                          en: Quantity of items in the upsell set
                        values:
                          - external_id: size_e3364991f92e751689a68b96598a5a5a84010b85
                            value: '5'
                    type: virtual_good
                    description: Big Rocket - description
                    image_url: >-
                      https://popmedia.blob.core.windows.net/popyourself/male/outfit/male_armor_white_a-01.png
                    is_free: false
                    price:
                      amount: '100.99'
                      amount_without_discount: '100.99'
                      currency: USD
                    virtual_prices:
                      - amount: 100
                        sku: com.xsolla.vc_1
                        is_default: true
                        amount_without_discount: 100
                        image_url: http://image.png
                        name: SHOTGUN FOR TRUE RAIDERS
                        type: virtual_currency
                        description: description
                    can_be_bought: true
                    virtual_item_type: non_renewing_subscription
                    promotions:
                      - name: Bonus promotion
                        date_start: '2020-04-15T16:16:00+03:00'
                        date_end: '2026-04-15T16:16:00+03:00'
                        discount: null
                        bonus:
                          - quantity: 1
                            name: Xsolla Minigun
                            image_url: >-
                              https://cdn.xsolla.net/img/misc/images/2fc5c491a47413a8e8000447889093c2.png
                            sku: com.xsolla.minigun_1
                            type: virtual_good
                          - quantity: 1
                            sku: com.xsolla.phys_good_1
                            type: physical_good
                          - quantity: 1
                            name: Super Lootbox with items
                            image_url: >-
                              https://cdn.xsolla.net/img/misc/images/9676f06265375087e607cb79c5283688.png
                            sku: com.xsolla.SuperLootboxBundle_1
                            type: bundle
                            bundle_type: standard
                    limits:
                      per_user:
                        total: 5
                        available: 3
                        recurrent_schedule:
                          interval_type: weekly
                          reset_next_date: 1746057600
                        limit_exceeded_visibility: show
                    periods:
                      - date_from: '2020-08-11T10:00:00+03:00'
                        date_until: '2020-08-11T20:00:00+03:00'
                    custom_attributes:
                      purchased: 0
                      attr: value
                    vp_rewards: []
                  - sku: com.xsolla.shotgun_raider_1
                    name: SHOTGUN FOR TRUE RAIDERS
                    groups:
                      - external_id: weapons
                        name:
                          en: Weapons
                    attributes:
                      - external_id: stack_size
                        name:
                          en: Quantity of items in the upsell set
                        values:
                          - external_id: size_e3364991f92e751689a68b96598a5a5a84010b85
                            value: '5'
                      - external_id: rating
                        name:
                          en: Items rating
                        values:
                          - external_id: rating_e3364991f92e751689a68b96598a5a5a84010b85
                            value: '3.9'
                    type: virtual_good
                    description: description
                    image_url: http://image.png
                    is_free: false
                    price:
                      amount: '101.0'
                      amount_without_discount: '101.0'
                      currency: USD
                    virtual_prices:
                      - amount: 100
                        sku: com.xsolla.vc_2
                        is_default: true
                        amount_without_discount: 100
                        image_url: http://image.png
                        name: SHOTGUN FOR TRUE RAIDERS
                        type: virtual_currency
                        description: description
                      - amount: 200
                        sku: com.xsolla.vc_3
                        is_default: false
                        amount_without_discount: 200
                        image_url: http://image.png
                        name: SHOTGUN FOR TRUE RAIDERS
                        type: virtual_currency
                        description: description
                    can_be_bought: true
                    virtual_item_type: non_renewing_subscription
                    promotions: []
                    limits: null
                    periods:
                      - date_from: '2020-08-11T20:00:00+03:00'
                        date_until: null
                    vp_rewards: []
                  - sku: com.xsolla.shotgun_raider_2
                    name: SHOTGUN FOR TRUE RAIDERS
                    groups: []
                    attributes: []
                    type: virtual_good
                    description: description
                    image_url: http://image.png
                    is_free: true
                    price: null
                    virtual_prices: []
                    can_be_bought: true
                    virtual_item_type: non_renewing_subscription
                    promotions: []
                    limits: null
                    periods: []
                    vp_rewards: []
  requestBodies:
    Promotions_redeem-coupon-model:
      content:
        application/json:
          schema:
            type: object
            properties:
              coupon_code:
                type: string
                description: Código único de cupón. Contiene letras y números.
                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: Código único de código promocional. Contiene letras y números.
                minLength: 1
                maxLength: 128
                example: SUMMER2021
                default: SUMMER2021
              cart:
                type:
                  - object
                  - 'null'
                properties:
                  id:
                    type: string
                    description: ID de la cesta.
                    default: current
                required:
                  - id
              selected_unit_items:
                $ref: '#/components/schemas/Promotions_selected_unit_items'
    Promotions_cancel-promo-code-model:
      content:
        application/json:
          schema:
            type: object
            properties:
              cart:
                type:
                  - object
                  - 'null'
                properties:
                  id:
                    type: string
                    description: ID de la cesta.
                    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: >-
                  Nombre de la promoción. Debe contener pares clave/valor,

                  en los cuales la clave es la configuración regional con el
                  formato "^[a-z]{2}-[A-Z]{2}$", el valor es una cadena
                  (string).
                additionalProperties:
                  type: string
                example:
                  en-US: Promotion
                  ru-RU: Акция
              promotion_periods:
                $ref: '#/components/schemas/promotion_periods'
              discount:
                type: object
                properties:
                  percent:
                    type: string
                    description: >-
                      Porcentaje de descuento.

                      El precio del artículo se reducirá utilizando un valor
                      calculado usando este porcentaje y luego se redondeará al
                      segundo decimal.
                    example: 10
                required:
                  - percent
              items:
                type: array
                items:
                  description: La lista de artículos a los que se aplicará el descuento.
                  type: object
                  properties:
                    sku:
                      type: string
                      description: SKU del artículo.
                      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: Objeto con datos de la promoción.
      required: true
    Promotions_create-update-bonus-promotion:
      content:
        application/json:
          schema:
            type: object
            required:
              - condition
              - bonus
              - name
            properties:
              id:
                type: integer
                description: >-
                  ID de promoción. Identificador único de la promoción en el
                  proyecto.
              promotion_periods:
                $ref: '#/components/schemas/promotion_periods'
              name:
                type: object
                description: >-
                  Nombre de la promoción. Debe contener pares clave/valor en los
                  cuales la clave es una configuración regional con el formato
                  "^[a-z]{2}-[A-Z]{2}$", el valor es una cadena (string).
                additionalProperties:
                  type: string
                example:
                  en-US: Summer season bonus
                  de-DE: Sommersaison Bonus
              condition:
                type:
                  - array
                  - 'null'
                description: >-
                  Conjunto de artículos que deben incluirse en la compra para
                  aplicar una promoción. Si este parámetro es `null`, se
                  aplicará una promoción a cualquier compra dentro de un
                  proyecto.
                items:
                  type: object
                  properties:
                    sku:
                      type: string
                      description: SKU del artículo.
                      default: elven_sword
              attribute_conditions:
                $ref: >-
                  #/components/schemas/promotion_user-attribute_conditions_model-post
              bonus:
                type:
                  - array
                  - 'null'
                items:
                  description: >-
                    La lista de artículos que se añadirán a la compra del
                    usuario como bonificación.
                  type: object
                  properties:
                    sku:
                      type: string
                      description: SKU del artículo.
                      default: elven_shield
                    quantity:
                      type: number
                      description: Cantidad del artículo.
                      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: Descripción larga de la cadena de recompensas.
                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: Descripción larga de la cadena de recompensas.
                is_enabled: true
                image_url: >-
                  https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
                order: 1
                periods:
                  - date_from: '2026-01-01T01:00:00+05:00'
                    date_until: '2026-01-31T23:59:59+05:00'
                  - date_from: '2026-02-01T01:00:00+05:00'
                    date_until: '2026-02-28T23:59:59+05:00'
                steps:
                  - name:
                      en: First step of the reward chain
                    step_id: 1
                    image_url: >-
                      https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
                    reward:
                      - sku: com.xsolla.item_1
                        quantity: 5
                      - sku: com.xsolla.item_2
                        quantity: 1
                    price:
                      amount: 10
                  - name:
                      en: Second step of the reward chain
                    step_id: 2
                    image_url: >-
                      https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
                    reward:
                      - sku: com.xsolla.item_3
                        quantity: 5
                      - sku: com.xsolla.item_4
                        quantity: 1
                    price:
                      amount: 15
                recurrent_schedule:
                  interval_type: weekly
                  day_of_week: 1
                  time: 01:00:00+08:00
                attribute_conditions:
                  - attribute: race
                    operator: eq
                    value: ork
                    type: string
                    can_be_missing: false
                is_always_visible: true
                is_reset_after_end: true
            clan:
              summary: Clan reward chain example
              value:
                name:
                  en: Clan reward chain
                description:
                  en: Clan reward chain description.
                long_description:
                  en: Clan reward chain long description.
                is_enabled: true
                image_url: >-
                  https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
                order: 1
                periods:
                  - date_from: '2026-01-01T01:00:00+05:00'
                    date_until: '2026-01-31T23:59:59+05:00'
                  - date_from: '2026-02-01T01:00:00+05:00'
                    date_until: '2026-02-28T23:59:59+05:00'
                steps:
                  - name:
                      en: First step of the reward chain
                    step_id: 1
                    image_url: >-
                      https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
                    reward:
                      - sku: com.xsolla.item_1
                        quantity: 5
                      - sku: com.xsolla.item_2
                        quantity: 1
                    price:
                      amount: 10
                  - name:
                      en: Second step of the reward chain
                    step_id: 2
                    image_url: >-
                      https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
                    reward:
                      - sku: com.xsolla.item_3
                        quantity: 5
                      - sku: com.xsolla.item_4
                        quantity: 1
                    price:
                      amount: 15
                recurrent_schedule:
                  interval_type: weekly
                  day_of_week: 1
                  time: 01:00:00+08:00
                popup_header:
                  en: How to unlock rewards
                popup_instruction:
                  en: >-
                    You should be a clan member to get clan rewards. You join a
                    clan when a clan member invited you to the clan, and you
                    accepted the invite. You can create your own clan.
                popup_image_url: >-
                  https://cdn.xsolla.net/img/misc/images/5c3b8b45c5be5fe7803e59fbc8041be4.png
                clan_type: guild
    create-daily-chain:
      content:
        application/json:
          schema:
            oneOf:
              - $ref: '#/components/schemas/create-calendar-hard-daily-chain-model'
              - $ref: >-
                  #/components/schemas/create-rolling-skippable-daily-chain-model
              - $ref: >-
                  #/components/schemas/create-rolling-unskippable-daily-chain-model
          examples:
            calendar_hard:
              summary: Daily reward with `calendar_hard` type
              value:
                name:
                  en: New daily reward
                  ru: Новая ежедневная награда
                description:
                  en: New daily reward short description
                order: 4
                date_start: '2023-04-15T18:16:00+05:00'
                is_enabled: true
                steps:
                  - step_number: 1
                    items:
                      - sku: vg_enabled_shown_in_store_1
                        quantity: 2
                  - step_number: 2
                    items:
                      - sku: >-
                          bundle_enabled_shown_in_store_with_2_enabled_shown_in_store_vg
                        quantity: 2
                  - step_number: 3
                    items:
                      - sku: >-
                          vcp_enabled_shown_in_store_1_of_10_vc_enabled_shown_in_store_1
                        quantity: 2
                  - step_number: 4
                    items:
                      - sku: vg_enabled_shown_in_store_1
                        quantity: 1
                  - step_number: 5
                    items:
                      - sku: >-
                          bundle_enabled_shown_in_store_with_2_enabled_shown_in_store_vg
                        quantity: 1
                  - step_number: 6
                    items:
                      - sku: >-
                          vcp_enabled_shown_in_store_1_of_10_vc_enabled_shown_in_store_1
                        quantity: 1
                type: calendar_hard
            rolling_skippable:
              summary: Daily reward with `rolling_skippable` type
              value:
                name:
                  en: New skippable login reward
                description:
                  en: New skippable login reward short description
                order: 1
                date_start: '2023-05-01T10:00:00+05:00'
                date_end: '2023-05-31T10:00:00+05:00'
                is_enabled: true
                is_recurrent: true
                steps:
                  - step_number: 1
                    items:
                      - sku: monday_reward_item_one
                        quantity: 1
                  - step_number: 2
                    items:
                      - sku: tuesday_reward_item_two
                        quantity: 1
                  - step_number: 3
                    items:
                      - sku: wednesday_reward_item_three
                        quantity: 1
                  - step_number: 4
                    items:
                      - sku: thursday_reward_item_four
                        quantity: 1
                  - step_number: 5
                    items:
                      - sku: friday_reward_item_five
                        quantity: 1
                  - step_number: 6
                    items:
                      - sku: saturday_reward_item_six
                        quantity: 1
                  - step_number: 7
                    items:
                      - sku: sunday_reward_item_seven
                        quantity: 1
                type: rolling_skippable
            rolling_unskippable:
              summary: Daily reward with `rolling_unskippable` type
              value:
                name:
                  en: New unskippable login reward
                description:
                  en: New unskippable login reward short description
                order: 2
                date_start: '2023-06-01T10:00:00+05:00'
                date_end: '2023-06-30T10:00:00+05:00'
                is_enabled: true
                is_recurrent: false
                steps:
                  - step_number: 1
                    items:
                      - sku: monday_reward_item_one
                        quantity: 1
                  - step_number: 2
                    items:
                      - sku: tuesday_reward_item_two
                        quantity: 1
                  - step_number: 3
                    items:
                      - sku: wednesday_reward_item_three
                        quantity: 1
                  - step_number: 4
                    items:
                      - sku: thursday_reward_item_four
                        quantity: 1
                  - step_number: 5
                    items:
                      - sku: friday_reward_item_five
                        quantity: 1
                type: rolling_unskippable
    update-daily-chain:
      content:
        application/json:
          schema:
            oneOf:
              - $ref: '#/components/schemas/update-calendar-hard-daily-chain-model'
              - $ref: >-
                  #/components/schemas/update-rolling-skippable-daily-chain-model
              - $ref: >-
                  #/components/schemas/update-rolling-unskippable-daily-chain-model
          examples:
            calendar_hard:
              summary: Daily reward with `calendar_hard` type
              value:
                name:
                  en: Updated daily reward
                  ru: Обновленная ежедневная награда
                description:
                  en: Updated daily reward description
                order: 4
                date_start: '2023-04-15T18:16:00+05:00'
                is_enabled: true
                steps:
                  - step_number: 1
                    items:
                      - sku: vg_enabled_shown_in_store_1
                        quantity: 1
                  - step_number: 2
                    items:
                      - sku: vg_enabled_shown_in_store_2
                        quantity: 1
                  - step_id: 10
                    step_number: 3
                    items:
                      - sku: vg_not_shown_in_store
                        quantity: 1
                  - step_id: 8
                    step_number: 4
                    items:
                      - sku: >-
                          bundle_enabled_shown_in_store_with_2_enabled_shown_in_store_vg
                        quantity: 1
                  - step_number: 5
                    items:
                      - sku: >-
                          vcp_enabled_shown_in_store_1_of_10_vc_enabled_shown_in_store_1
                        quantity: 1
                type: calendar_hard
            rolling_skippable:
              summary: Daily reward with `rolling_skippable` type
              value:
                name:
                  en: Updated login reward
                description:
                  en: Updated login reward description
                order: 4
                date_start: '2023-08-01T10:00:00+05:00'
                date_end: '2023-08-31T10:00:00+05:00'
                is_enabled: true
                steps:
                  - step_number: 1
                    items:
                      - sku: monday_reward_item_one
                        quantity: 1
                  - step_number: 2
                    items:
                      - sku: tuesday_reward_item_two
                        quantity: 1
                  - step_number: 3
                    items:
                      - sku: wednesday_reward_item_three
                        quantity: 1
                  - step_number: 4
                    items:
                      - sku: thursday_reward_item_four
                        quantity: 1
                  - step_number: 5
                    items:
                      - sku: friday_reward_item_five
                        quantity: 1
                  - step_number: 6
                    items:
                      - sku: saturday_reward_item_six
                        quantity: 1
                  - step_number: 7
                    items:
                      - sku: sunday_reward_item_seven
                        quantity: 1
                type: rolling_skippable
            rolling_unskippable:
              summary: Daily reward with `rolling_unskippable` type
              value:
                name:
                  en: Updated unskippable login reward
                description:
                  en: Updated unskippable login reward description
                order: 2
                date_start: '2023-09-01T10:00:00+05:00'
                date_end: '2023-09-30T10:00:00+05:00'
                is_enabled: true
                steps:
                  - step_number: 1
                    items:
                      - sku: monday_reward_item_one
                        quantity: 1
                  - step_number: 2
                    items:
                      - sku: tuesday_reward_item_two
                        quantity: 1
                  - step_number: 3
                    items:
                      - sku: wednesday_reward_item_three
                        quantity: 1
                  - step_number: 4
                    items:
                      - sku: thursday_reward_item_four
                        quantity: 1
                  - step_number: 5
                    items:
                      - sku: friday_reward_item_five
                        quantity: 1
                type: rolling_unskippable
    create-offer-chain:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/create-offer-chain-model'
          examples:
            default:
              summary: Non-personalized offer chain example
              value:
                name:
                  en: New offer chain
                  ru: Новая цепочка предложений
                  de: Neue Angebotskette
                  fr: Nouvelle chaîne d'offres
                  it: Nuova catena di offerte
                description:
                  en: A short description of a regular offer chain
                  ru: Краткое описание обычной цепочки предложений
                  de: Eine kurze Beschreibung einer regulären Angebotskette
                  fr: Une brève description d'une chaîne d'offres régulière
                  it: Una breve descrizione di una catena di offerte regolare
                order: 4
                date_start: '2023-04-15T18:16:00+05:00'
                date_end: null
                recurrent_schedule: null
                is_enabled: true
                steps:
                  - step_number: 1
                    is_free: false
                    items:
                      - sku: chain_step_1_paid_bundle_sku
                        quantity: 2
                  - step_number: 2
                    is_free: true
                    items:
                      - sku: chain_step_2_free_virtual_good_sku
                        quantity: 1
                  - step_number: 3
                    is_free: false
                    items:
                      - sku: chain_step_3_paid_virtual_currency_package_sku
                        quantity: 5
                  - step_number: 4
                    is_free: true
                    items:
                      - sku: chain_step_4_free_bundle_sku
                        quantity: 1
                is_always_visible: true
            recurrent:
              summary: Recurrent offer chain example
              value:
                name:
                  en: New recurrent offer chain
                  ru: Новая рекуррентная цепочка предложений
                  de: Neue wiederkehrende Angebotskette
                  fr: Nouvelle chaîne d'offres récurrente
                  it: Nuova catena di offerte ricorrente
                description:
                  en: >-
                    A recurring offer chain that resets weekly on Wednesdays at
                    07:00 AM GMT+3
                  ru: >-
                    Рекуррентная цепочка предложений, которая сбрасывается
                    еженедельно по средам в 07:00 по GMT+3
                  de: >-
                    Eine wiederkehrende Angebotskette, die wöchentlich mittwochs
                    um 07:00 Uhr GMT+3 zurückgesetzt wird
                  fr: >-
                    Une chaîne d'offres récurrente qui se réinitialise chaque
                    semaine le mercredi à 07h00 GMT+3
                  it: >-
                    Una catena di offerte ricorrente che si resetta
                    settimanalmente il mercoledì alle 07:00 GMT+3
                order: 1
                date_start: '2023-04-15T18:16:00+05:00'
                date_end: '2025-04-25T18:16:00+05:00'
                is_enabled: false
                recurrent_schedule:
                  interval_type: weekly
                  day_of_week: 3
                  time: 07:00:00+03:00
                steps:
                  - step_number: 1
                    is_free: false
                    items:
                      - sku: chain_step_1_paid_bundle_sku
                        quantity: 2
                  - step_number: 2
                    is_free: true
                    items:
                      - sku: chain_step_2_free_virtual_good_sku
                        quantity: 3
                is_always_visible: true
            personalized-default:
              summary: >-
                Offer chain displayed when no personalized offer chains are
                found example
              value:
                name:
                  en: New personalized default offer chain
                  ru: Новая персонализированная цепочка предложений по умолчанию
                  de: Neue personalisierte Standard-Angebotskette
                  fr: Nouvelle chaîne d'offres personnalisée par défaut
                  it: Nuova catena di offerte personalizzata predefinita
                description:
                  en: >-
                    Default personalized offer chain for users that do not meet
                    the conditions of other personalized chains
                  ru: >-
                    Персонализированная цепочка по умолчанию для пользователей,
                    не подходящих под условия других персонализированных цепочек
                  de: >-
                    Standard-personalisierte Angebotskette für Benutzer, die die
                    Bedingungen anderer personalisierter Ketten nicht erfüllen
                  fr: >-
                    Chaîne d'offres personnalisée par défaut pour les
                    utilisateurs qui ne répondent pas aux conditions des autres
                    chaînes personnalisées
                  it: >-
                    Catena di offerte personalizzata predefinita per gli utenti
                    che non soddisfano le condizioni di altre catene
                    personalizzate
                order: 4
                date_start: '2023-04-15T18:16:00+05:00'
                date_end: null
                recurrent_schedule: null
                is_enabled: true
                steps:
                  - step_number: 1
                    is_free: false
                    items:
                      - sku: chain_x_step_1_item_default
                        quantity: 1
                  - step_number: 2
                    is_free: false
                    items:
                      - sku: chain_x_step_2_item_default
                        quantity: 2
                  - step_number: 3
                    is_free: true
                    items:
                      - sku: chain_x_step_3_free_item_default
                        quantity: 1
                is_always_visible: false
            personalized-with-conditions:
              summary: Personalized offer chain with user attribute conditions example
              value:
                name:
                  en: New personalized offer chain
                  ru: Новая персонализированная цепочка предложений
                  de: Neue personalisierte Angebotskette
                  fr: Nouvelle chaîne d'offres personnalisée
                  it: Nuova catena di offerte personalizzata
                description:
                  en: >-
                    Personalized offer chain with user attribute conditions -
                    for level 10 and above elves who reached level 10 no later
                    than 2026-01-01 00:00:00, inclusive
                  ru: >-
                    Персонализированная цепочка предложений с условиями по
                    атрибутам пользователя - для эльфов уровня 10 и выше,
                    достигших 10 уровня не позднее 2026-01-01 00:00:00
                    включительно
                  de: >-
                    Personalisierte Angebotskette mit
                    Benutzerattributbedingungen - für Elfen der Stufe 10 und
                    höher, die Stufe 10 spätestens am 2026-01-01 00:00:00
                    erreicht haben, einschließlich
                  fr: >-
                    Chaîne d'offres personnalisée avec des conditions d'attribut
                    utilisateur - pour les elfes de niveau 10 et plus qui ont
                    atteint le niveau 10 au plus tard le 2026-01-01 00:00:00,
                    inclus
                  it: >-
                    Catena di offerte personalizzata con condizioni di attributo
                    utente - per elfi di livello 10 e superiore che hanno
                    raggiunto il livello 10 non più tardi del 2026-01-01
                    00:00:00, inclusi
                order: 4
                date_start: '2023-04-15T18:16:00+05:00'
                date_end: null
                recurrent_schedule: null
                is_enabled: true
                steps:
                  - step_number: 1
                    is_free: false
                    items:
                      - sku: chain_x_step_1_item_for_elves_level_10_and_above
                        quantity: 1
                  - step_number: 2
                    is_free: false
                    items:
                      - sku: chain_x_step_2_item_for_elves_level_10_and_above
                        quantity: 2
                  - step_number: 3
                    is_free: true
                    items:
                      - sku: chain_x_step_3_free_item_for_elves_level_10_and_above
                        quantity: 1
                is_always_visible: false
                attribute_conditions:
                  - attribute: race
                    operator: eq
                    value: elf
                    type: string
                    can_be_missing: false
                  - attribute: level
                    operator: ge
                    value: '10'
                    type: number
                    can_be_missing: false
                  - attribute: 10_level_up_date
                    operator: le
                    value: '2026-01-01T00:00:00'
                    type: date
                    can_be_missing: false
    update-offer-chain:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/modify-offer-chain-model'
          examples:
            default:
              summary: Default example
              value:
                name:
                  en: Updated offer chain
                  ru: Обновляемая цепочка предложений
                  de: Aktualisierte Angebotskette
                  fr: Chaîne d'offres mise à jour
                  it: Catena di offerte aggiornata
                description:
                  en: A short description of a regular offer chain
                  ru: Краткое описание обычной цепочки предложений
                  de: Eine kurze Beschreibung einer regulären Angebotskette
                  fr: Une brève description d'une chaîne d'offres régulière
                  it: Una breve descrizione di una catena di offerte regolare
                order: 4
                date_start: '2023-04-15T18:16:00+05:00'
                date_end: null
                recurrent_schedule: null
                is_enabled: true
                steps:
                  - step_id: 10
                    step_number: 1
                    is_free: false
                    items:
                      - sku: chain_step_1_paid_bundle_sku
                        quantity: 2
                  - step_number: 2
                    is_free: true
                    items:
                      - sku: chain_step_2_free_virtual_good_sku
                        quantity: 1
                  - step_number: 3
                    is_free: false
                    items:
                      - sku: chain_step_3_paid_virtual_currency_package_sku
                        quantity: 5
                  - step_id: 9
                    step_number: 4
                    is_free: true
                    items:
                      - sku: chain_step_4_free_bundle_sku
                        quantity: 1
                is_always_visible: true
            recurrent:
              summary: Recurrent offer chain example
              value:
                id: 1
                name:
                  en: Updated recurrent offer chain
                  ru: Обновляемая рекуррентная цепочка предложений
                  de: Aktualisierte wiederkehrende Angebotskette
                  fr: Chaîne d'offres récurrente mise à jour
                  it: Catena di offerte ricorrente aggiornata
                description:
                  en: >-
                    Updated offer chain that becomes recurrent and resets
                    monthly on the 2nd day at 03:00 AM GMT+8
                  ru: >-
                    Обновляемая цепочка предложений, которая становится
                    рекуррентной и сбрасывается ежемесячно во 2-й день в 03:00
                    по GMT+8
                  de: >-
                    Aktualisierte Angebotskette, die wiederkehrend wird und
                    monatlich am 2. Tag um 03:00 Uhr GMT+8 zurückgesetzt wird
                  fr: >-
                    Chaîne d'offres mise à jour qui devient récurrente et se
                    réinitialise mensuellement le 2e jour à 03h00 GMT+8
                  it: >-
                    Catena di offerte aggiornata che diventa ricorrente e si
                    resetta mensilmente il 2° giorno alle 03:00 GMT+8
                order: 4
                date_start: '2023-04-15T17:16:00+05:00'
                date_end: '2025-04-25T19:16:00+05:00'
                is_enabled: true
                recurrent_schedule:
                  interval_type: monthly
                  day_of_month: 2
                  time: 03:00:00+08:00
                steps:
                  - step_number: 1
                    is_free: false
                    items:
                      - sku: chain_bundle_sku
                        quantity: 6
                  - step_number: 1
                    is_free: true
                    items:
                      - sku: chain_bundle_sku
                        quantity: 2
            personalized-default:
              summary: Personalized default offer chain example
              value:
                name:
                  en: New personalized default offer chain
                  ru: Новая персонализированная цепочка предложений по умолчанию
                  de: Neue personalisierte Standard-Angebotskette
                  fr: Nouvelle chaîne d'offres personnalisée par défaut
                  it: Nuova catena di offerte personalizzata predefinita
                description:
                  en: >-
                    Default personalized offer chain for users that do not meet
                    the conditions of other personalized chains
                  ru: >-
                    Персонализированная цепочка по умолчанию для пользователей,
                    не подходящих под условия других персонализированных цепочек
                  de: >-
                    Standard-personalisierte Angebotskette für Benutzer, die die
                    Bedingungen anderer personalisierter Ketten nicht erfüllen
                  fr: >-
                    Chaîne d'offres personnalisée par défaut pour les
                    utilisateurs qui ne répondent pas aux conditions des autres
                    chaînes personnalisées
                  it: >-
                    Catena di offerte personalizzata predefinita per gli utenti
                    che non soddisfano le condizioni di altre catene
                    personalizzate
                order: 4
                date_start: '2023-04-15T18:16:00+05:00'
                date_end: null
                recurrent_schedule: null
                is_enabled: true
                steps:
                  - step_id: 10
                    step_number: 1
                    is_free: false
                    items:
                      - sku: chain_x_step_1_item_default
                        quantity: 1
                  - step_number: 2
                    is_free: false
                    items:
                      - sku: chain_x_step_2_item_default
                        quantity: 2
                  - step_id: 9
                    step_number: 3
                    is_free: true
                    items:
                      - sku: chain_x_step_3_free_item_default
                        quantity: 1
                is_always_visible: false
            personalized-with-conditions:
              summary: Personalized offer chain with user attribute conditions example
              value:
                name:
                  en: New personalized offer chain
                  ru: Новая персонализированная цепочка предложений
                  de: Neue personalisierte Angebotskette
                  fr: Nouvelle chaîne d'offres personnalisée
                  it: Nuova catena di offerte personalizzata
                description:
                  en: >-
                    Personalized offer chain with user attribute conditions -
                    for level 10 and above elves who reached level 10 no later
                    than 2026-01-01 00:00:00, inclusive
                  ru: >-
                    Персонализированная цепочка предложений с условиями по
                    атрибутам пользователя - для эльфов уровня 10 и выше,
                    достигших 10 уровня не позднее 2026-01-01 00:00:00
                    включительно
                  de: >-
                    Personalisierte Angebotskette mit
                    Benutzerattributbedingungen - für Elfen der Stufe 10 und
                    höher, die Stufe 10 spätestens am 2026-01-01 00:00:00
                    erreicht haben, einschließlich
                  fr: >-
                    Chaîne d'offres personnalisée avec des conditions d'attribut
                    utilisateur - pour les elfes de niveau 10 et plus qui ont
                    atteint le niveau 10 au plus tard le 2026-01-01 00:00:00,
                    inclus
                  it: >-
                    Catena di offerte personalizzata con condizioni di attributo
                    utente - per elfi di livello 10 e superiore che hanno
                    raggiunto il livello 10 non più tardi del 2026-01-01
                    00:00:00, inclusi
                order: 4
                date_start: '2023-04-15T18:16:00+05:00'
                date_end: null
                recurrent_schedule: null
                is_enabled: true
                steps:
                  - step_id: 10
                    step_number: 1
                    is_free: false
                    items:
                      - sku: chain_x_step_1_item_for_elves_level_10_and_above
                        quantity: 1
                  - step_id: 8
                    step_number: 2
                    is_free: false
                    items:
                      - sku: chain_x_step_2_item_for_elves_level_10_and_above
                        quantity: 2
                  - step_number: 3
                    is_free: true
                    items:
                      - sku: chain_x_step_3_free_item_for_elves_level_10_and_above
                        quantity: 1
                is_always_visible: false
                attribute_conditions:
                  - attribute: race
                    operator: eq
                    value: elf
                    type: string
                    can_be_missing: false
                  - attribute: level
                    operator: ge
                    value: '10'
                    type: number
                    can_be_missing: false
                  - attribute: 10_level_up_date
                    operator: le
                    value: '2026-01-01T00:00:00'
                    type: date
                    can_be_missing: false
    update-upsell:
      content:
        application/json:
          schema:
            oneOf:
              - $ref: '#/components/schemas/Upsell-model'
              - $ref: '#/components/schemas/Upsell-model-not-fixed-list'
          examples:
            fixed_list:
              summary: Example of upsell with fixed list of items
              value:
                is_enabled: true
                type: fixed_list
                items:
                  - game_sku_1
                  - game_sku_2
                  - game_sku_3
            special_type_promotions:
              summary: Example of upsell with promotion items only
              value:
                is_enabled: true
                type: only_promotions
                items: []
            special_type_most_sellable:
              summary: Example of upsell with most sellable items for last 30 days
              value:
                is_enabled: true
                type: most_sellable
                items: []
    create-upsell:
      content:
        application/json:
          schema:
            oneOf:
              - $ref: '#/components/schemas/Upsell-model'
              - $ref: '#/components/schemas/Upsell-model-not-fixed-list'
          examples:
            fixed_list:
              summary: Example of upsell with fixed list of items
              value:
                is_enabled: true
                type: fixed_list
                items:
                  - game_sku_1
                  - game_sku_2
                  - game_sku_3
            special_type_promotions:
              summary: Example of upsell with promotion items only
              value:
                is_enabled: true
                type: only_promotions
                items: []
            special_type_most_sellable:
              summary: Example of upsell with most sellable items for last 30 days
              value:
                is_enabled: true
                type: most_sellable
                items: []
x-tagGroups:
  - name: PROMOCIONES
    tags:
      - promotions-overview
      - promotions-common
      - promotions-coupons
      - promotions-promo-codes
      - promotions-unique-catalog-offers
      - promotions-discounts
      - promotions-bonuses
  - name: PERSONALIZACIÓN
    tags:
      - personalized-catalog
  - name: LÍMITES
    tags:
      - promotion-limits-overview
      - user-limits-admin
  - name: CADENAS DE RECOMPENSAS Y PUNTOS DE VALOR
    tags:
      - reward-chain-value-points-overview
      - reward-chain-value-points-admin
      - reward-chain-client
      - clan-reward-chain-client
  - name: CADENAS DIARIAS
    tags:
      - daily-chain-overview
      - daily-chain-admin
      - daily-chain-client
  - name: CADENAS DE OFERTAS
    tags:
      - offer-chains-overview
      - offer-chain-admin
      - offer-chain-client
  - name: VENTAS ADICIONALES
    tags:
      - upsell-overview
      - upsell-admin
      - upsell-client
