> ## 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.

# Importer et mettre à jour des produits

> Importez ou mettez à jour votre catalogue de produits dans Kameleoon en utilisant l'endpoint préféré pour les catalogues de plus de 50K produits.

Cet endpoint importe vos produits dans votre compte Kameleoon. C'est la méthode préférée pour importer votre catalogue si vous avez plus de 50K produits.

Nous recommandons fortement d'utiliser cet endpoint également pour mettre à jour la liste des produits et leurs propriétés, plutôt que de réimporter complètement votre catalogue quotidiennement.

<Warning>
  Si vous utilisez exclusivement cet endpoint pour importer votre catalogue, assurez-vous que toutes les catégories ont d'abord été importées via l'[endpoint d'import de catégories](./import-categories). Tout produit sans catégorie connue sera ignoré lors du processus d'import.
</Warning>

Les données sont envoyées sous forme de [chaîne JSON](#exemple-de-requête-json) dans le corps de la requête.

## Limite de débit

* La limite de requêtes API (Rate Limit) est fixée à 40 requêtes par minute, avec un maximum d'1 requête toutes les 1,5 secondes.
* La limite de poids des requêtes API (Weight Limit) est plafonnée à 35 mégaoctets par requête.

## Requête HTTP

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

## Liste des paramètres de requête

| Paramètre     | Type   | Requis | Description                                                                                                                                                                                                             |
| ------------- | ------ | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `shop_id`     | String | Oui    | Votre Store Key. Vous pouvez la trouver dans **Recommendations** > **Settings** > **Store settings** dans l'application Kameleoon. Vous pouvez également contacter votre Customer Success Manager pour obtenir la clé.  |
| `shop_secret` | String | Oui    | Votre Secret Key. Vous pouvez la trouver dans **Recommendations** > **Settings** > **Store settings** dans l'application Kameleoon. Vous pouvez également contacter votre Customer Success Manager pour obtenir la clé. |
| `items`       | List   | Oui    | Une liste d'articles produits. Trouvez dans [ce tableau](#liste-des-paramètres-pour-l’objet-items) les paramètres requis pour `items`                                                                                   |
| `webhook`     | String | Non    | L'URL Webhook est l'endroit où une requête POST sera envoyée à la fin de l'import.                                                                                                                                      |

<Note>
  L'objectif du `webhook` est de notifier le développeur une fois qu'une requête est terminée. Une fois que tous les produits de l'appel API ont été importés et sont entièrement disponibles, une requête POST sera envoyée au webhook désigné.

  Exemple d'une requête réussie :

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

  Exemple d'une requête échouée :

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

## Liste des paramètres pour l'objet `items`

<Warning>
  Si vous souhaitez mettre à jour uniquement certains produits, vous devez fournir toutes les valeurs des paramètres obligatoires pour chaque produit dans la requête. Si l'une des propriétés obligatoires d'un produit est omise, le produit sera ignoré lors de l'import et aucune modification ne sera apportée à notre base de données. Par exemple, si vous souhaitez mettre à jour uniquement le prix d'un produit, vous devez inclure tous ses paramètres obligatoires, tels que category, name, picture, tags, etc.

  Pour les propriétés non obligatoires, toute valeur omise entraînera la suppression de ces propriétés de notre base de données.
</Warning>

| Paramètre        | Type                      | Requis    | Description                                                                                                                                                                                                                                                  |
| ---------------- | ------------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `id`             | String (longueur max 64)  | Oui       | Un ID unique attribué à l'article                                                                                                                                                                                                                            |
| `group_id`       | String (longueur max 64)  | Optionnel | L'ID associé au groupe d'articles                                                                                                                                                                                                                            |
| `name`           | String (longueur max 255) | Oui       | Le nom de l'article                                                                                                                                                                                                                                          |
| `price`          | Float (doit être positif) | Oui       | Le prix de l'article. Pour fournir des prix dans plusieurs lieux, utilisez plutôt l'objet [locations](#liste-des-paramètres-pour-l’objet-locations).                                                                                                         |
| `oldprice`       | Float (doit être positif) | Optionnel | Le prix précédent de l'article                                                                                                                                                                                                                               |
| `currency`       | String                    | Oui       | La devise dans laquelle le champ price a été spécifié                                                                                                                                                                                                        |
| `url`            | String                    | Oui       | Une URL à associer à l'article                                                                                                                                                                                                                               |
| `picture`        | String                    | Oui       | Une URL contenant une image de l'article                                                                                                                                                                                                                     |
| `available`      | Boolean                   | Oui       | Indique si l'article est disponible à l'achat. Utilisez l'endpoint update products pour le mettre à jour ultérieurement                                                                                                                                      |
| `categories`     | Array of strings          | Oui       | Chaque chaîne représente un ID de [catégorie](./import-categories) auquel ce produit appartient.                                                                                                                                                             |
| `locations`      | Array                     | Optionnel | Tableau des prix de l'article à différents endroits. Trouvez dans [ce tableau](#liste-des-paramètres-pour-l’objet-locations) les paramètres requis pour `locations`                                                                                          |
| `accessories`    | Array of strings          | Optionnel | Contient les IDs de produits des accessoires associés à l'article                                                                                                                                                                                            |
| `seasonality`    | Array of integers         | Optionnel | Représente les mois de l'année (Janvier=1, Décembre=12) où vous souhaitez promouvoir cet article                                                                                                                                                             |
| `brand`          | String                    | Optionnel | Le nom de la marque de l'article                                                                                                                                                                                                                             |
| `barcode`        | Integer                   | Optionnel | Une valeur de code-barres pour l'article                                                                                                                                                                                                                     |
| `price_margin`   | Integer                   | Optionnel | La marge de prix pour l'article                                                                                                                                                                                                                              |
| `tags`           | Array of strings          | Optionnel | Une liste de mots-clés que vous souhaitez associer à l'article                                                                                                                                                                                               |
| `is_child`       | Boolean                   | Optionnel | Indique si cet article est un enfant d'un autre article                                                                                                                                                                                                      |
| `is_fashion`     | Boolean                   | Optionnel | Indique si cet article est un article de mode                                                                                                                                                                                                                |
| `is_new`         | Boolean                   | Optionnel | Indique si cet article est un nouvel article                                                                                                                                                                                                                 |
| `fashion`        | Object                    | Optionnel | Définit plusieurs paramètres supplémentaires pour les articles de mode. Trouvez dans [ce tableau](#liste-des-paramètres-pour-l’objet-fashion) les paramètres requis pour `fashion`                                                                           |
| `stock_quantity` | Integer                   | Optionnel | La quantité de l'article en stock                                                                                                                                                                                                                            |
| `type_prefix`    | String                    | Optionnel | Un préfixe pour distinguer le type d'article                                                                                                                                                                                                                 |
| `model`          | String                    | Optionnel | Le nom du modèle de l'article                                                                                                                                                                                                                                |
| `params`         | Object                    | Optionnel | Ajoutez des paramètres personnalisés. Trouvez dans [ce tableau](#liste-des-paramètres-pour-l’objet-params) les paramètres requis pour `params`                                                                                                               |
| `merchant`       | String                    | Optionnel | Le marchand que vous souhaitez associer à l'article                                                                                                                                                                                                          |
| `rating`         | Integer                   | Optionnel | Une valeur entre 1 et 5. La note utilisateur que vous souhaitez attribuer à l'article                                                                                                                                                                        |
| `leftovers`      | String                    | Optionnel | Une description du stock restant. Par exemple, "one" représente un produit disponible en une seule unité, "few" représente un produit en quantités limitées (jusqu'à 10 unités), et "lot" représente un produit disponible en quantités de 10 unités ou plus |
| `creation_date`  | String                    | Optionnel | Doit être au format `yyyy-mm-dd`. C'est la date de création de l'article                                                                                                                                                                                     |

## Liste des paramètres pour l'objet `locations`

Utilisez l'objet `location`s pour fournir des informations sur les prix, les stocks et d'autres informations spécifiques à un lieu lorsque vous avez plusieurs lieux. Passez l'objet locations à l'intérieur de l'objet items des produits.

| Paramètre        | Type                      | Requis    | Description                                                                                                                                                     |
| ---------------- | ------------------------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `location`       | String                    | Oui       | Le lieu pour lequel vous souhaitez spécifier un prix. Ce champ est requis si le champ locations est fourni.                                                     |
| `price`          | Float (doit être positif) | Optionnel | Le prix à cet endroit.                                                                                                                                          |
| `oldprice`       | Float (doit être positif) | Optionnel | Le prix précédent de l'article (par exemple, le prix régulier d'un article en solde).                                                                           |
| `stock_quantity` | Int (doit être positif)   | Optionnel | La quantité de l'article en stock.                                                                                                                              |
| `sizes`          | Array of Strings          | Optionnel | Une liste d'options de taille pour l'article.                                                                                                                   |
| `weight`         | Int (doit être positif)   | Optionnel | Le poids de l'article.                                                                                                                                          |
| `delivery_types` | Object                    | Optionnel | Indique la disponibilité de l'article. Trouvez dans [ce tableau](#liste-des-paramètres-pour-l’objet-delivery_types) les paramètres requis pour `delivery_types` |

## Liste des paramètres pour l'objet `delivery_types`

| Paramètre  | Type                    | Requis | Description                                   |
| ---------- | ----------------------- | ------ | --------------------------------------------- |
| `store`    | Int (doit être positif) | Oui    | Nombre d'articles disponibles en magasin      |
| `delivery` | Int (doit être positif) | Oui    | Nombre d'articles disponibles à la livraison  |
| `delivery` | Int (doit être positif) | Oui    | Nombre d'articles disponibles dans l'entrepôt |

## Liste des paramètres pour l'objet `Params`

L'objet params vous permet de spécifier des valeurs de paramètres personnalisées pour l'article. Passez l'objet `params` à l'intérieur de l'objet `items` des produits.

| Paramètre | Type             | Requis    | Description                          |
| --------- | ---------------- | --------- | ------------------------------------ |
| `name`    | String           | Oui       | Le nom du paramètre                  |
| `value`   | Array of Strings | Oui       | Tableau de valeurs pour le paramètre |
| `unit`    | String           | Optionnel | Unité de mesure pour les valeurs.    |

## Liste des paramètres pour l'objet `Fashion`

L'objet fashion vous permet de spécifier des informations supplémentaires sur les articles de mode. Passez l'objet fashion à l'intérieur de l'objet items des produits.

| Paramètre | Type             | Requis    | Description                                                         |
| --------- | ---------------- | --------- | ------------------------------------------------------------------- |
| `gender`  | String           | Optionnel | Un genre à associer à l'article. Par exemple, "m", "f" ou "female". |
| `sizes`   | Array of Strings | Optionnel | Liste des tailles pour l'article.                                   |
| `type`    | String           | Oui       | Le type d'article de mode. Par exemple, "jacket".                   |

## Exemple de requête 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,
}
```
