> ## 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 des commandes

> Importez ou mettez à jour des commandes de transaction et leurs lignes dans Kameleoon pour alimenter les recommandations de produits et l'analyse.

Cet endpoint vous permet d'importer une liste de commandes de transaction dans votre compte Kameleoon. Vous pouvez également utiliser cet endpoint pour mettre à jour les commandes et leurs propriétés si elles existent déjà dans notre base de données. Les données doivent être envoyées sous forme de [chaîne JSON dans le corps de la requête](#exemple-de-requête-json).

## Requête HTTP

```
POST https://api.products.kameleoon.com/sync/orders
```

## Liste des paramètres de requête

| Paramètre     | Type   | Requis | Description                                                                                                                                                                                                             |
| ------------- | ------ | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `shop_id`     | String | True   | 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 | True   | 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é. |
| `orders`      | Array  | True   | Liste des commandes. Trouvez dans [ce tableau](#liste-des-paramètres-pour-l’objet-orders) les paramètres requis pour `orders`.                                                                                          |

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

| Paramètre                | Type    | Requis | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| ------------------------ | ------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id`                     | String  | True   | ID de la commande                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `external_id`            | String  | True   | C'est un identifiant unique associé à un utilisateur dans votre système ou CRM. **(Pour assurer une correspondance précise avec le `VisitorCode` Kameleoon, l'ID doit d'abord être stocké en tant que Kameleoon Custom Data. Lors de la configuration de ce custom data, assurez-vous d'activer l'option `Use this custom data as a unique identifier for cross-device matching` pour garantir que l'ID est utilisé pour relier les activités utilisateur entre les deux systèmes.)** |
| `status`                 | String  | True   | Statut de la commande (par exemple, Processing, Out for delivery, Delivered)                                                                                                                                                                                                                                                                                                                                                                                                          |
| `channel`                | String  | True   | Moyen utilisé pour la commande (par exemple, Website, App, In-store)                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `date`                   | Integer | True   | Timestamp Unix en secondes du moment où la commande a été passée ou mise à jour                                                                                                                                                                                                                                                                                                                                                                                                       |
| `offline`                | Boolean | False  | Marque les commandes comme hors ligne. Défini sur `false` par défaut                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `location_id`            | String  | True   | ID de l'emplacement (ville) de l'utilisateur                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `promocode`              | String  | False  | Code promo utilisé dans la commande                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `delivery_type`          | String  | False  | Type de livraison (par exemple, Courier, Pickup in-store)                                                                                                                                                                                                                                                                                                                                                                                                                             |
| `delivery_address`       | String  | False  | Adresse de destination pour le CRM                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `delivery_date`          | Date    | False  | Date de livraison prévue. Format : "YYYY-MM-DD"                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `delivery_time`          | Time    | False  | Heure de livraison prévue. Format : "HH:MM"                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `payment_type`           | String  | False  | Type de paiement (par exemple, Cash, Card, Wire)                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `tax_free`               | Boolean | False  | Indique si l'article est exonéré de taxes                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| `bank_issuer`            | String  | False  | Émetteur bancaire                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `bank_pos_processor`     | String  | False  | Indique quel système/terminal de point de vente (POS) a été utilisé au moment du paiement                                                                                                                                                                                                                                                                                                                                                                                             |
| `bank_loyalty_program`   | String  | False  | Programme de fidélité bancaire                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `bank_total_installment` | Integer | False  | Nombre total de versements à payer par l'intermédiaire de la banque                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `payment_card_provider`  | String  | False  | Fournisseur de la carte de paiement                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `gift_package`           | Boolean | False  | Indique si l'article sera dans un emballage cadeau                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `value`                  | Object  | True   | Total général de la commande. Trouvez le paramètre requis pour `value` dans [ce tableau](#liste-des-paramètres-pour-l’objet-value).                                                                                                                                                                                                                                                                                                                                                   |
| `payment_structure`      | Object  | True   | Une ventilation du paiement (par exemple, paiements en espèces, remises, frais de livraison). Trouvez les paramètres requis pour `payment_structure` dans [ce tableau](#liste-des-paramètres-pour-l’objet-payment_structure).                                                                                                                                                                                                                                                         |
| `items`                  | Object  | True   | Tout ce qui est inclus dans la commande. Trouvez les paramètres requis pour `items` dans [ce tableau](#liste-des-paramètres-pour-l’objet-items).                                                                                                                                                                                                                                                                                                                                      |

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

| Paramètre | Type    | Requis | Description          |
| --------- | ------- | ------ | -------------------- |
| `Total`   | Numeric | True   | Total de la commande |

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

| Paramètre  | Type    | Requis | Description                                                              |
| ---------- | ------- | ------ | ------------------------------------------------------------------------ |
| `cash`     | Numeric | False  | Indique quelle partie du total de la commande a été payée en espèces     |
| `bonuses`  | Numeric | False  | Indique quelle partie du total de la commande a été payée avec des bonus |
| `delivery` | Numeric | False  | Indique le coût de la livraison de la commande                           |
| `discount` | Numeric | False  | Indique la valeur de la remise de la commande                            |

<Note>
  Veuillez vous assurer que `value.total == payment_structure.cash + payment_structure.bonuses + payment_structure.delivery - payment_structure.discount`
</Note>

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

| Paramètre          | Type    | Requis | Description                                                                                                     |
| ------------------ | ------- | ------ | --------------------------------------------------------------------------------------------------------------- |
| `id`               | String  | True   | ID du produit acheté                                                                                            |
| `price`            | Numeric | True   | Prix d'une seule unité du produit                                                                               |
| `quantity`         | Integer | True   | Quantité totale du ou des produits choisis                                                                      |
| `status`           | String  | True   | Statut de l'article ; ne peut être que : `created`, `invoiced`, `shipped`, `delivered`, `cancelled`, `refunded` |
| `original_price`   | Numeric | False  | Prix d'origine du produit                                                                                       |
| `discount_product` | Numeric | False  | Prix remisé du produit                                                                                          |
| `discount_bonuses` | Numeric | False  | Bonus remisés du produit                                                                                        |
| `delivery_company` | String  | False  | Service postal qui a livré l'article                                                                            |
| `barcode`          | String  | False  | Code-barres du produit                                                                                          |
| `line_id`          | String  | False  | ID unique pour la position de ce produit (ligne) dans le système de commande de votre magasin.                  |
| `cancel_reason`    | String  | False  | Raison de l'annulation                                                                                          |

<Note>
  L'objet `items` est requis lorsque vous créez une commande. Vous pouvez l'envoyer sous forme de tableau vide lors de la mise à jour du statut d'une commande.
</Note>

## Exemple de requête JSON

```json theme={null}

{
  "shop_id": "DvLWN2ZTMZ",
  "shop_secret": "EIxTuot8sj",
  "orders": [
    {
      "id": "yKsvZbWpCL",
      "external_id":"jhfakfkadak",
      "status": "Processing",
      "channel": "In-store",
      "date": 1602338740,
      "offline": false,
      "location_id": "7701123",
      "promocode": "vxawxSi9Uy",
      "delivery_type": "courier",
      "delivery_address": "111 Peter Street, Toronto, ON, M5V 2H1",
      "delivery_date": "2021-12-21",
      "delivery_time": "15:00",
      "tax_free": false,
      "bank_issuer": "Scotiabank",
      "bank_pos_processor": "Clover",
      "bank_loyalty_program": "PC Optimum",
      "bank_total_installment": 0,
      "payment_card_provider": "Visa"
      "gift_package":true,
      "value": {
        "total": 200.13,
      },
      "payment_structure": {
        "cash": 190,
        "bonuses": 15,
        "delivery": 20,
        "discount": 24.87
      },
      "items": [
        {
          "id": "ITEM-ID-1",
          "price": 205,
          "quantity": 1,
          "status": "created",
          "original_price": 230,
          "discount_product": 30,
          "discount_bonuses": 20,
          "delivery_company": "Canada Post",
          "barcode_id": "195204003541",
          "line_id": "195204003541-22323443-123434",
          "cancel_reason": "none",
        },
}
        ...
      ]
    },
    ...
  ]
}
```

## Annulation d'une commande

Étant donné que l'endpoint Import orders est utilisé à la fois pour créer et mettre à jour des commandes, vous pouvez l'utiliser pour enregistrer une commande annulée.

Pour enregistrer une commande annulée, fournissez les éléments suivants :

### Paramètres de requête

| Paramètre     | Type   | Requis | Description                                                                                                                                                                                                             |
| ------------- | ------ | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `shop_id`     | String | True   | 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 | True   | 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é. |
| `orders`      | Array  | True   | Liste des commandes. Fournissez les commandes que vous souhaitez enregistrer comme annulées.                                                                                                                            |

### Paramètres de l'objet `orders`

| Paramètre | Type   | Requis | Description                                    |
| --------- | ------ | ------ | ---------------------------------------------- |
| `id`      | String | True   | ID de la commande                              |
| `status`  | String | True   | Statut de la commande (défini sur `cancelled`) |

### Exemple de requête JSON d'annulation

```json theme={null}
{
  "shop_id": "DvLWN2ZTMZ",
  "shop_secret": "EIxTuot8sj",
  "orders": [
    {
      "id": "yKsvZbWpCL",
      "status": "Cancelled"
    },
    ...
  ]
}
```
