> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kameleoon.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Importar y actualizar productos

> Importe o actualice su catálogo de productos en Kameleoon usando el endpoint preferido para catálogos con más de 50.000 productos.

Este endpoint importa sus productos en su cuenta de Kameleoon. Es el método preferido para importar su catálogo si tiene más de 50.000 productos.

Recomendamos encarecidamente utilizar este endpoint también para actualizar la lista de productos y sus propiedades, en lugar de reimportar el catálogo completo cada día.

<Warning>
  Si depende totalmente de este endpoint para importar su catálogo, asegúrese de que todas las categorías se hayan importado previamente utilizando el [endpoint import categories](./import-categories). Cualquier producto sin una categoría conocida se ignorará durante el proceso de importación.
</Warning>

Los datos se envían como una [cadena JSON](#ejemplo-de-solicitud-json) en el cuerpo de la solicitud.

## Límite de velocidad

* El límite de solicitudes a la API (Rate Limit) está establecido en 40 solicitudes por minuto, con un máximo de 1 solicitud cada 1,5 segundos.
* El límite de peso de las solicitudes a la API (Weight Limit) está limitado a 35 megabytes por solicitud.

## Solicitud HTTP

```
PUT https://api.products.kameleoon.com/import/products
```

## Lista de parámetros de consulta

| Parámetro     | Tipo   | Obligatorio | Descripción                                                                                                                                                                                            |
| ------------- | ------ | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `shop_id`     | String | Sí          | Su Store Key. Puede encontrarla en **Recommendations** > **Settings** > **Store settings** en la aplicación Kameleoon. También puede contactar con su Customer Success Manager para obtener la clave.  |
| `shop_secret` | String | Sí          | Su Secret Key. Puede encontrarla en **Recommendations** > **Settings** > **Store settings** en la aplicación Kameleoon. También puede contactar con su Customer Success Manager para obtener la clave. |
| `items`       | List   | Sí          | Una lista de artículos de producto. Encuentre en [esta tabla](#lista-de-parámetros-para-el-objeto-items) los parámetros requeridos para `items`.                                                       |
| `webhook`     | String | No          | La URL del Webhook al que se enviará una solicitud POST al completarse la importación.                                                                                                                 |

<Note>
  El propósito del `webhook` es notificar al desarrollador una vez que se ha completado una solicitud. Una vez importados y totalmente disponibles todos los productos de la llamada a la API, se enviará una solicitud POST al webhook designado.

  Ejemplo de una solicitud exitosa:

  ```json theme={null}
  {
  	"status": "success"
  }
  ```

  Ejemplo de una solicitud fallida:

  ```json theme={null}
  {
  	"status": "error", 
  	"message": "MESSAGE"
  }
  ```
</Note>

## Lista de parámetros para el objeto `items`

<Warning>
  Si desea actualizar solo determinados productos, debe proporcionar todos los valores de los parámetros obligatorios para cada producto en la solicitud. Si se omite alguna propiedad obligatoria de un producto, el producto se ignorará durante la importación y no se realizará ningún cambio en nuestra base de datos. Por ejemplo, si solo desea actualizar el precio de un producto, debe incluir todos sus parámetros obligatorios, como categoría, nombre, imagen, etiquetas, etc.

  Para las propiedades no obligatorias, los valores omitidos provocarán que esas propiedades se eliminen de nuestra base de datos.
</Warning>

| Parámetro        | Tipo                       | Obligatorio | Descripción                                                                                                                                                                                                                                                          |
| ---------------- | -------------------------- | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id`             | String (longitud máx. 64)  | Sí          | Un ID único asignado al artículo                                                                                                                                                                                                                                     |
| `group_id`       | String (longitud máx. 64)  | Opcional    | El ID asociado al grupo del artículo                                                                                                                                                                                                                                 |
| `name`           | String (longitud máx. 255) | Sí          | El nombre del artículo                                                                                                                                                                                                                                               |
| `price`          | Float (debe ser positivo)  | Sí          | El precio del artículo. Para indicar precios en varias ubicaciones, utilice en su lugar el objeto [locations](#lista-de-parámetros-para-el-objeto-locations).                                                                                                        |
| `oldprice`       | Float (debe ser positivo)  | Opcional    | El precio anterior del artículo                                                                                                                                                                                                                                      |
| `currency`       | String                     | Sí          | La moneda en la que se especificó el campo price                                                                                                                                                                                                                     |
| `url`            | String                     | Sí          | Una URL para asociar con el artículo                                                                                                                                                                                                                                 |
| `picture`        | String                     | Sí          | Una URL que contiene una imagen del artículo                                                                                                                                                                                                                         |
| `available`      | Boolean                    | Sí          | Indica si el artículo está disponible para la compra. Utilice el endpoint update products para actualizar este valor más adelante                                                                                                                                    |
| `categories`     | Array de strings           | Sí          | Cada cadena representa un ID de [categoría](./import-categories) al que pertenece este producto.                                                                                                                                                                     |
| `locations`      | Array                      | Opcional    | Array de precios del artículo en distintas ubicaciones. Encuentre en [esta tabla](#lista-de-parámetros-para-el-objeto-locations) los parámetros requeridos para `locations`                                                                                          |
| `accessories`    | Array de strings           | Opcional    | Contiene los IDs de los productos accesorios relacionados con el artículo                                                                                                                                                                                            |
| `seasonality`    | Array de enteros           | Opcional    | Representa los meses del año (enero=1, diciembre=12) en los que desea promocionar este artículo                                                                                                                                                                      |
| `brand`          | String                     | Opcional    | El nombre de la marca del artículo                                                                                                                                                                                                                                   |
| `barcode`        | Integer                    | Opcional    | Un valor de código de barras para el artículo                                                                                                                                                                                                                        |
| `price_margin`   | Integer                    | Opcional    | El margen de precio del artículo                                                                                                                                                                                                                                     |
| `tags`           | Array de strings           | Opcional    | Una lista de palabras clave que desea asociar con el artículo                                                                                                                                                                                                        |
| `is_child`       | Boolean                    | Opcional    | Indica si este artículo es hijo de otro artículo                                                                                                                                                                                                                     |
| `is_fashion`     | Boolean                    | Opcional    | Indica si este artículo es un artículo de moda                                                                                                                                                                                                                       |
| `is_new`         | Boolean                    | Opcional    | Indica si este artículo es nuevo                                                                                                                                                                                                                                     |
| `fashion`        | Object                     | Opcional    | Define varios parámetros adicionales para artículos de moda. Encuentre en [esta tabla](#lista-de-parámetros-para-el-objeto-fashion) los parámetros requeridos para `fashion`                                                                                         |
| `stock_quantity` | Integer                    | Opcional    | La cantidad de artículos en stock                                                                                                                                                                                                                                    |
| `type_prefix`    | String                     | Opcional    | Un prefijo para distinguir el tipo de artículo                                                                                                                                                                                                                       |
| `model`          | String                     | Opcional    | El nombre del modelo del artículo                                                                                                                                                                                                                                    |
| `params`         | Object                     | Opcional    | Añade parámetros personalizados. Encuentre en [esta tabla](#lista-de-parámetros-para-el-objeto-params) los parámetros requeridos para `params`                                                                                                                       |
| `merchant`       | String                     | Opcional    | El comerciante que desea asociar con el artículo                                                                                                                                                                                                                     |
| `rating`         | Integer                    | Opcional    | Un valor entre 1 y 5. La valoración de usuario que desea asignar al artículo                                                                                                                                                                                         |
| `leftovers`      | String                     | Opcional    | Una descripción del stock restante. Por ejemplo, "one" representa un producto disponible como una sola unidad, "few" representa un producto en cantidades limitadas (hasta 10 unidades) y "lot" representa un producto disponible en cantidades de 10 o más unidades |
| `creation_date`  | String                     | Opcional    | Debe estar en el formato `yyyy-mm-dd`. Esta es la fecha de creación del artículo                                                                                                                                                                                     |

## Lista de parámetros para el objeto `locations`

Utilice el objeto `locations` para proporcionar precios, inventario y otra información específica de la ubicación cuando tenga varias ubicaciones. Pase el objeto locations dentro del objeto product items.

| Parámetro        | Tipo                      | Obligatorio | Descripción                                                                                                                                                          |
| ---------------- | ------------------------- | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `location`       | String                    | Sí          | La ubicación para la que desea especificar un precio. Este campo es obligatorio si se proporciona el campo locations.                                                |
| `price`          | Float (debe ser positivo) | Opcional    | El precio en esta ubicación.                                                                                                                                         |
| `oldprice`       | Float (debe ser positivo) | Opcional    | El precio anterior del artículo (por ejemplo, el precio normal de un artículo en oferta).                                                                            |
| `stock_quantity` | Int (debe ser positivo)   | Opcional    | La cantidad del artículo en stock.                                                                                                                                   |
| `sizes`          | Array de Strings          | Opcional    | Una lista de opciones de tamaño para el artículo.                                                                                                                    |
| `weight`         | Int (debe ser positivo)   | Opcional    | El peso del artículo.                                                                                                                                                |
| `delivery_types` | Object                    | Opcional    | Indica la disponibilidad del artículo. Encuentre en [esta tabla](#lista-de-parámetros-para-el-objeto-delivery_types) los parámetros requeridos para `delivery_types` |

## Lista de parámetros para el objeto `delivery_types`

| Parámetro  | Tipo                    | Obligatorio | Descripción                                   |
| ---------- | ----------------------- | ----------- | --------------------------------------------- |
| `store`    | Int (debe ser positivo) | Sí          | Número de artículos disponibles en tienda     |
| `delivery` | Int (debe ser positivo) | Sí          | Número de artículos disponibles para entrega  |
| `delivery` | Int (debe ser positivo) | Sí          | Número de artículos disponibles en el almacén |

## Lista de parámetros para el objeto `Params`

El objeto params permite especificar valores personalizados para los parámetros del artículo. Pase el objeto `params` dentro del objeto product `items`.

| Parámetro | Tipo             | Obligatorio | Descripción                        |
| --------- | ---------------- | ----------- | ---------------------------------- |
| `name`    | String           | Sí          | El nombre del parámetro            |
| `value`   | Array de Strings | Sí          | Array de valores para el parámetro |
| `unit`    | String           | Opcional    | Unidad de medida para los valores. |

## Lista de parámetros para el objeto `Fashion`

El objeto fashion permite especificar información adicional sobre los artículos de moda. Pase el objeto fashion dentro del objeto product items.

| Parámetro | Tipo             | Obligatorio | Descripción                                                          |
| --------- | ---------------- | ----------- | -------------------------------------------------------------------- |
| `gender`  | String           | Opcional    | Un género que asociar al artículo. Por ejemplo, "m", "f" o "female". |
| `sizes`   | Array de Strings | Opcional    | Lista de tamaños para el artículo.                                   |
| `type`    | String           | Sí          | El tipo de artículo de moda. Por ejemplo, "jacket".                  |

## Ejemplo de solicitud JSON

```json theme={null}
{
    "id": "myID", // String (max 64). Required
    "group_id": "myGroup", // String (max 64). Optional
    "name": "myItem", // String (max 255). Required
    "price": "1", // Float (positive). Required
    "oldprice": "2", // Float (positive). Optional
    "currency": "USD", // Currency code: USD, EUR. Required.
    "url": "https://example.com/product", // String (URL). Required
    "picture": "https://example.com/product/image.png", // String (URL). Required
    "available": true, // Boolean (true, false). Required
    "categories": ["ID1", "ID2", ...], // Array of categories IDs. Required.
    "locations": [ 
    {
        "location": "USA",
        "delivery_types": {
            "store": 10,
            "stock": 50  }
    },
    {
        "location": "CAN",
        "price": 60
    }
    ], // Array of prices in locations. See below. Optional
    "accessories": ["ID", "ID", ...], // Array of product IDs. Optional
    "seasonality": [1, 2, ...], // Array of integers (months: 1-12). Optional
    "brand": "...", // String. Optional
    "barcode": "...", // String. Optional
    "price_margin": "...",// Integer. Optional
    "tags": ["TAG1", "TAG2", ...], // Array of strings. Optional
    "is_child": false, // Boolean (true, false). Optional
    "is_fashion": true, // Boolean (true, false). Optional
    "is_new": false, // Boolean (true, false). Optional
    "fashion": {
        "gender": "m",
        "sizes": ["48", "50", "52"],
        "type": "jacket"
    }, // Object. See below. Optional
    "stock_quantity": 60, // Int (positive). Optional
    "type_prefix": "...", // String. Optional
    "model": "Widget 3000", // String. Optional
    "params": [ 
    {
        "name": "Param 1",
        "value": ["bluetooth", "wi-fi"]
    }, 
    {
        "name": "Param 2",
        "value": [23]
    }
    ], // Array of params data. See below. Optional
    "merchant": "...", // String. Optional
    "rating": 4, // Integer (1-5). Optional
    "leftovers": "one", // String (one, few, lot). Optional
    "creation_date": "...", // String. Optional. Format yyyy-mm-dd,
}
```
