# Llenar la cesta con artículos

Llena la cesta con artículos. Si la cesta ya tiene un artículo con el mismo SKU, el artículo existente se sustituirá por el valor transmitido.

Endpoint: PUT /v2/project/{project_id}/cart/fill
Version: 2.0.0
Security: AuthForCart

## Path parameters:

  - `project_id` (integer, required)
    ID del proyecto. Encontrará este parámetro en su Cuenta del editor 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//projects/.
    Example: 44056

## Request fields (application/json):

  - `items` (array, required)
    Lista de artículos.
    Example: [{"sku":"com.xsolla.booster_mega_1","quantity":123}]

  - `items.sku` (string, required)

  - `items.quantity` (number, required)

## Response 200 fields (application/json):

  - `cart_id` (string)
    ID de la cesta.
    Example: "cart_id"

  - `price` (object,null)
    Precio de la cesta.
    Example: {"amount":"6150.0000000000000000","amount_without_discount":"6150.0000000000000000","currency":"USD"}

  - `price.amount` (string)
    Example: "6150.0000000000000000"

  - `price.amount_without_discount` (string)
    Example: "6150.0000000000000000"

  - `price.currency` (string)
    Example: "USD"

  - `is_free` (boolean)
    Si true, la cesta es gratuita.

  - `items` (array)

  - `items.sku` (string)

  - `items.groups` (array)

  - `items.groups.external_id` (string)

  - `items.groups.name` (string)

  - `items.name` (string,null)

  - `items.attributes` (array)
    Lista de atributos y sus valores correspondientes al artículo. Puede utilizarse para filtrar el catálogo.

  - `items.attributes.external_id` (string)
    ID único del atributo. external_id solo puede contener caracteres alfanuméricos latinos en minúsculas y mayúsculas, guiones y guiones bajos.

  - `items.attributes.name` (string)
    Nombre del atributo.
    Example: "Genre"

  - `items.attributes.values` (array)

  - `items.attributes.values.external_id` (string)
    ID del valor único para un atributo. external_id solo puede contener caracteres alfanuméricos latinos en minúsculas, guiones y guiones bajos.

  - `items.attributes.values.value` (string)
    Valor del atributo.
    Example: "Strategy"

  - `items.type` (string)

  - `items.description` (string)

  - `items.image_url` (string)

  - `items.quantity` (integer)

  - `items.price` (object,null)
    Precio del artículo.
    Example: {"amount":"6150.0000000000000000","amount_without_discount":"6150.0000000000000000","currency":"USD"}

  - `items.price.amount` (string)
    Example: "6150.0000000000000000"

  - `items.price.amount_without_discount` (string)
    Example: "6150.0000000000000000"

  - `items.price.currency` (string)
    Example: "USD"

  - `items.virtual_item_type` (string)
    Tipo de artículo.

  - `items.virtual_prices` (array)
    Precios virtuales.

  - `items.virtual_prices.amount` (integer)
    Precio del artículo en moneda virtual.
    Example: 100

  - `items.virtual_prices.amount_without_discount` (integer)
    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.
    Example: 200

  - `items.virtual_prices.sku` (string)
    SKU de la moneda virtual.
    Example: "vc_gold"

  - `items.virtual_prices.is_default` (boolean)
    Si es o no el precio predeterminado en moneda virtual.
    Example: true

  - `items.virtual_prices.image_url` (string,null)
    URL de imagen de la moneda virtual.
    Example: "http://image.png"

  - `items.virtual_prices.name` (string)
    Nombre de la moneda virtual.
    Example: "Gold"

  - `items.virtual_prices.type` (string)
    Tipo de artículo. Para la moneda virtual, es virtual_currency.
    Example: "virtual_currency"

  - `items.virtual_prices.description` (string,null)
    Descripción de la moneda virtual.
    Example: "In-game currency used to purchase weapons and upgrades"

  - `items.is_free` (boolean)
    Si el artículo es gratuito.

  - `items.is_bonus` (boolean)

  - `items.promotions` (array)
    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.promotions.name` (string)

  - `items.promotions.date_start` (string,null)

  - `items.promotions.date_end` (string,null)

  - `items.promotions.discount` (object,null)

  - `items.promotions.discount.percent` (string,null)

  - `items.promotions.discount.value` (string,null)

  - `items.promotions.bonus` (array)

  - `items.promotions.bonus.sku` (string)

  - `items.promotions.bonus.quantity` (integer)

  - `items.promotions.bonus.type` (string)
    Tipo de artículo de bonificación.
    Enum: "virtual_good", "virtual_currency", "bundle", "physical_good", "game_key", "nft"

  - `items.promotions.bonus.name` (string)
    Nombre del artículo de bonificación. No disponible para el tipo de artículo de bonificación physical_good.

  - `items.promotions.bonus.image_url` (string)
    URL de la imagen del artículo de bonificación. No disponible para el tipo de artículo de bonificación physical_good.

  - `items.promotions.bonus.bundle_type` (string)
    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"

  - `items.promotions.limits` (object)

  - `items.promotions.limits.per_user` (object)

  - `items.promotions.limits.per_user.available` (integer)

  - `items.promotions.limits.per_user.total` (integer)

  - `items.can_be_bought` (boolean)
    Si es true, el usuario puede comprar un artículo.

  - `items.vp_rewards` (array)
    Lista de recompensas de puntos de valor para este artículo.

  - `items.vp_rewards.item_id` (integer)
    ID único interno del artículo.

  - `items.vp_rewards.sku` (string)
    ID único del punto de valor.

  - `items.vp_rewards.amount` (integer)
    Cantidad de puntos de valor.

  - `items.vp_rewards.name` (string)
    Nombre del punto de valor.

  - `items.vp_rewards.image_url` (string)
    URL de la imagen.

  - `items.vp_rewards.is_clan` (boolean)
    Si el punto de valor se utiliza en las cadenas de recompensas de clanes.

  - `items.loyalty_rewards` (array)
    Puntos de fidelidad que el usuario recibe como recompensa por comprar el artículo.

  - `items.loyalty_rewards.name` (string)
    Nombre de puntos de fidelidad.

  - `items.loyalty_rewards.sku` (string)
    SKU de puntos de fidelidad. Transmita este valor en el parámetro loyalty_point_sku de otras llamadas API, por ejemplo, al crear un pedido pagado con puntos de fidelidad.

  - `items.loyalty_rewards.description` (string)
    Descripción de puntos de fidelidad.

  - `items.loyalty_rewards.image_url` (string,null)
    URL de la imagen.

  - `items.loyalty_rewards.amount` (integer)
    Número de puntos de fidelidad que recibe el usuario por comprar el artículo.

  - `items.limits` (object,null)
    Límites del artículo.

  - `items.limits.per_user` (object,null)
    Límites de artículos para un usuario.

  - `items.limits.per_user.total` (integer)
    Número máximo de artículos que un mismo usuario puede comprar.
    Example: 5

  - `items.limits.per_user.available` (integer)
    Número restante de artículos que el usuario actual puede comprar.
    Example: 3

  - `items.limits.per_user.recurrent_schedule` (any)

  - `items.limits.per_user.limit_exceeded_visibility` (string)
    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.
    Enum: "show", "hide"

  - `items.limits.per_item` (object,null)
    Límites de artículos para un artículo.

  - `items.limits.per_item.total` (integer)
    Número máximo de artículos que pueden comprar todos los usuarios.
    Example: 5

  - `items.limits.per_item.available` (integer)
    Número restante de artículos que todos los usuarios pueden comprar.
    Example: 3

  - `items.periods` (array,null)
    Periodo de venta del artículo.

  - `items.periods.date_from` (string)
    Fecha en la que el artículo especificado estará disponible para la venta.
    Example: "2020-08-11T10:00:00+03:00"

  - `items.periods.date_until` (string,null)
    Fecha en la que el artículo especificado dejará de estar disponible para la venta. Puede ser null.
    Example: "2020-08-11T20:00:00+03:00"

  - `promotions` (array)
    Promociones aplicadas a toda la cesta. La matriz se devuelve en los siguientes casos:

* Una promoción afecta al importe total de la cesta, como un código promocional con el parámetro Descuento en la compra.

* Una promoción añade artículos de bonificación a la cesta.

Si no se aplican promociones a nivel de pedido, se devuelve una matriz vacía.

  - `promotions.name` (string)

  - `promotions.date_start` (string,null)

  - `promotions.date_end` (string,null)

  - `promotions.discount` (object,null)

  - `promotions.discount.percent` (string,null)

  - `promotions.discount.value` (string,null)

  - `promotions.bonus` (array)

  - `promotions.bonus.sku` (string)

  - `promotions.bonus.quantity` (integer)

  - `promotions.bonus.type` (string)
    Tipo de artículo de bonificación.
    Enum: "virtual_good", "virtual_currency", "bundle", "physical_good", "game_key", "nft"

  - `promotions.bonus.name` (string)
    Nombre del artículo de bonificación. No disponible para el tipo de artículo de bonificación physical_good.

  - `promotions.bonus.image_url` (string)
    URL de la imagen del artículo de bonificación. No disponible para el tipo de artículo de bonificación physical_good.

  - `promotions.bonus.bundle_type` (string)
    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"

  - `promotions.limits` (object)

  - `promotions.limits.per_user` (object)

  - `promotions.limits.per_user.available` (integer)

  - `promotions.limits.per_user.total` (integer)

  - `warnings` (array)

  - `warnings.sku` (string)

  - `warnings.quantity` (integer)

  - `warnings.errorCode` (integer)

  - `warnings.errorMessage` (string)


