Passer au contenu principal
La Product Recommendation API est la méthode préférée pour les imports de catalogues dépassant 50 000 produits. Utilisez cet endpoint au lieu des réimports quotidiens complets du catalogue. Ce tutoriel décrit les étapes et les pièges courants pour importer un catalogue de produits dans Kameleoon à l’aide de la Product Recommendation API. La Product Recommendation API suit les principes RESTful. Le processus d’import comprend ces étapes consécutives :
  • Import Categories : envoyez une requête POST pour vous assurer que toutes les catégories sont à jour avant de télécharger les produits.
  • Import and Update Products : envoyez une requête PUT pour importer le catalogue de produits dans le compte Kameleoon.
  • Update available products : requête PATCH pour mettre à jour la disponibilité des produits.
L’API fournit également un endpoint dédié à la modification de la disponibilité des produits existants dans Kameleoon, qui est une approche plus légère.

Données

  • Shop ID eehj3eu84299kg5ghw5a6743r8 & Shop Secret pmd5362597thrgq8k256ep01t0
    • Trouvez-les dans Recommendations > Settings > Store settings dans l’application Kameleoon. Contactez le Customer Success Manager pour obtenir la clé si nécessaire.
  • Webhooks http://www.webhook.com/importCategoriesApiResponses/ & http://www.webhook.com/importProductsApiResponses/
    • Les webhooks garantissent l’achèvement de l’étape Import Categories avant l’import du catalogue et vérifient l’achèvement de la requête Import Products.
  • Catalogue de produits actuel dans Kameleoon :
[
{
    "id": "PD1", // String (max 64). Required
    "group_id": "Shoe", // String (max 64). Optional
    "name": "Sneaker", // 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": ["shoeID"], // Array of categories IDs. Required.
    "locations": [ 
    {
        "location": "USA",
        "delivery_types": {
            "store": 10,
            "stock": 50  }
    },
    {
        "location": "CAN",
        "price": 60
    }
    ]
},
{
    "id": "PD2", // String (max 64). Required
    "group_id": "Glass", // String (max 64). Optional
    "name": "Sunglasses", // 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": ["glassID"], // Array of categories IDs. Required.
    "locations": [ 
    {
        "location": "USA",
        "delivery_types": {
            "store": 10,
            "stock": 50  }
    },
    {
        "location": "CAN",
        "price": 60
    }
    ]
}
]
  • Catégories actuelles dans Kameleoon :
[ {{
            "id": "glassID",
            "name": "Glass"
        },
        {
            "id": "shoesID",
            "name": "shoes",
        },
}]
  • Produits à importer dans Kameleoon :
    • Le prix de PD2 (Glass) est passé à trois et il y a un nouveau produit avec une nouvelle catégorie ("id": "BootID", "name": "Boot")
{
    "id": "PD3", // String (max 64). Required
    "group_id": "Boot", // String (max 64). Optional
    "name": "Standard Boot", // 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": ["bootID"], // Array of categories IDs. Required.
    "locations": [ 
    {
        "location": "USA",
        "delivery_types": {
            "store": 10,
            "stock": 50  }
    },
    {
        "location": "CAN",
        "price": 60
    }
    ]
}

Importer des catégories

Utilisez l’endpoint Import categories pour cette étape. Les données sont envoyées sous forme de chaîne JSON dans le corps de la requête. Envoyez toutes les catégories dans une seule requête POST. L’exemple suivant envoie toutes les catégories, existantes et nouvelles, pour permettre l’import de nouveaux produits :
curl -X POST -L 'https://api.products.kameleoon.com/import/categories' \
             -H 'Content-Type: application/json' \
             -d '{
   "shop_id":"eehj3eu84299kg5ghw5a6743r8",
   "shop_secret":"pmd5362597thrgq8k256ep01t0",
   "items":[
      {
         "id":"slassID",
         "name":"Glass"
      },
      {
         "id":"shoesID",
         "name":"shoes"
      },
      {
         "id":"bootID",
         "name":"boots"
      }
   ],
   "webhook":"http://www.webhook.com/importCategoriesApiResponses/"
}'
Le webhook notifie le développeur à l’achèvement de la requête. Lorsque toutes les catégories spécifiées sont importées et disponibles, une requête POST est envoyée au webhook désigné.Utilisez le webhook pour les imports de catégories de grande envergure, car le traitement peut prendre plusieurs minutes.Si vous importez des produits via l’endpoint d’import de produits, le webhook garantit que toutes les catégories sont traitées avant de commencer l’import des produits. Les produits sans catégorie connue sont ignorés lors de l’import.Exemple d’une requête réussie :
{ "status": "success"}
Exemple d’une requête échouée :
{ "status": "error",  "message": "MESSAGE"}

Importer et mettre à jour des produits

Utilisez l’endpoint Import Products pour cette étape. La limite de l’API est de 40 requêtes par minute, avec un maximum d’une requête toutes les 1,5 secondes. La limite de poids des requêtes est de 35 mégaoctets. L’exemple suivant envoie le produit mis à jour PD2, avec les champs price et oldprice modifiés, et le nouveau produit PD3. Le produit PD1 est omis car il reste inchangé.
# !!! IMPORTANT: Wait for a successful POST request to the webhook endpoint
# (http://www.webhook.com/importCategoriesApiResponses)
# from the Import Categories step before making this call.

#Check that all required fields are filled for each product

curl -X PUT -L 'https://api.products.kameleoon.com/import/products' \
             -H 'Content-Type: application/json' \
             -d '{
   "shop_id":"eehj3eu84299kg5ghw5a6743r8",
   "shop_secret":"pmd5362597thrgq8k256ep01t0",
   "items":[
{
    "id": "PD3", // String (max 64). Required
    "group_id": "Boot", // String (max 64). Optional
    "name": "StandardBoot", // 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": ["bootID"], // Array of categories IDs. Required.
    "locations": [ 
    {
        "location": "USA",
        "delivery_types": {
            "store": 10,
            "stock": 50  }
    },
    {
        "location": "CAN",
        "price": 60
    }
    ]
},
{
    "id": "PD2", // String (max 64). Required
    "group_id": "Glass", // String (max 64). Optional
    "name": "Sunglasses", // String (max 255). Required
    "price": "3", // Float (positive). Required
    "oldprice": "1", // 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": ["glassID"], // Array of categories IDs. Required.
    "locations": [ 
    {
        "location": "USA",
        "delivery_types": {
            "store": 10,
            "stock": 50  }
    },
    {
        "location": "CAN",
        "price": 60
    }
    ]
}
   ],
   "webhook":"http://www.webhook.com/importProductsApiResponses/"
}'

# check for the result of the request, which will be sent 
# to the provided webhook http://www.webhook.com/importProductsApiResponses/

Mettre à jour les produits disponibles

Utilisez l’endpoint Update available products pour gérer le statut du stock. Cet endpoint met à jour la liste des produits disponibles en utilisant leurs IDs. Dans ce scénario, le produit PD1 est marqué comme indisponible en fournissant les IDs pour PD2 et PD3 et en omettant l’ID pour PD1.
curl -X PATCH -L 'https://api.products.kameleoon.com/import/products' \
             -H 'Content-Type: application/json' \
             -d '{
   "shop_id":"eehj3eu84299kg5ghw5a6743r8",
   "shop_secret":"pmd5362597thrgq8k256ep01t0",
   "items":["PD2","PD3"],
}'

Recommandations clés

  1. Ordre du workflow
    Importez toujours les catégories avant les produits
  2. Complétude des données
    Les imports de produits nécessitent tous les champs obligatoires
  3. Stratégie de webhook
    Essentielle pour surveiller les imports volumineux
  4. Conseils de performance
    • Lot de produits ≤35 Mo
    • Limite de débit : 40 requêtes/minute
    • Utilisez uniquement l’endpoint Update available products pour modifier la disponibilité d’un produit.
  5. Gestion des erreurs
    • Vérifiez les IDs de catégorie
    • Vérifiez les formats des champs
    • Surveillez les réponses du webhook