Zum Hauptinhalt springen
Die Product Recommendation API ist die bevorzugte Methode für Katalogimporte mit mehr als 50.000 Produkten. Verwenden Sie diesen Endpoint anstelle täglicher vollständiger Katalog-Re-Importe. Dieses Tutorial beschreibt die Schritte und häufigen Fallstricke beim Importieren eines Produktkatalogs mit der Product Recommendation API in Kameleoon. Die Product Recommendation API folgt RESTful-Prinzipien. Der Importprozess umfasst die folgenden aufeinander folgenden Schritte:
  • Import Categories: Senden Sie eine POST-Anfrage, um sicherzustellen, dass alle Kategorien aktuell sind, bevor Sie Produkte hochladen.
  • Import and Update Products: Senden Sie eine PUT-Anfrage, um den Produktkatalog in das Kameleoon-Konto zu importieren.
  • Update available products: PATCH-Anfrage zum Aktualisieren der Verfügbarkeit von Produkten.
Die API bietet auch einen speziellen Endpoint zum Ändern der Verfügbarkeit bestehender Produkte in Kameleoon, der einen leichteren Ansatz darstellt.

Daten

  • Shop ID eehj3eu84299kg5ghw5a6743r8 & Shop Secret pmd5362597thrgq8k256ep01t0
    • Sie finden diese in Recommendations > Settings > Store settings in der Kameleoon App. Kontaktieren Sie den Customer Success Manager, falls erforderlich, um den Schlüssel zu erhalten.
  • Webhooks http://www.webhook.com/importCategoriesApiResponses/ & http://www.webhook.com/importProductsApiResponses/
    • Webhooks stellen den Abschluss des Schritts Import Categories vor dem Katalogimport sicher und überprüfen den Abschluss der Import Products-Anfrage.
  • Aktueller Produktkatalog in 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
    }
    ]
}
]
  • Aktuelle Kategorien in Kameleoon:
[ {{
            "id": "glassID",
            "name": "Glass"
        },
        {
            "id": "shoesID",
            "name": "shoes",
        },
}]
  • In Kameleoon zu importierende Produkte:
    • Der Preis von PD2 (Glass) wurde auf drei geändert und es gibt ein neues Produkt mit einer neuen Kategorie ("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
    }
    ]
}

Kategorien importieren

Verwenden Sie für diesen Schritt den Import categories-Endpoint. Die Daten werden als JSON-String innerhalb des Anfragetexts gesendet. Senden Sie alle Kategorien in einer einzigen POST-Anfrage. Das folgende Beispiel sendet alle Kategorien – sowohl bestehende als auch neue –, um den Import neuer Produkte zu ermöglichen:
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/"
}'
Der webhook benachrichtigt den Entwickler nach Abschluss der Anfrage. Wenn alle angegebenen Kategorien importiert und verfügbar sind, wird eine POST-Anfrage an den festgelegten Webhook gesendet.Verwenden Sie den webhook für große Kategorieimporte, da die Verarbeitung mehrere Minuten dauern kann.Wenn Sie Produkte über den Endpoint zum Importieren von Produkten importieren, stellt der Webhook sicher, dass alle Kategorien verarbeitet sind, bevor mit dem Produktimport begonnen wird. Produkte ohne bekannte Kategorie werden während des Imports ignoriert.Beispiel für eine erfolgreiche Anfrage:
{ "status": "success"}
Beispiel für eine erfolglose Anfrage:
{ "status": "error",  "message": "MESSAGE"}

Produkte importieren und aktualisieren

Verwenden Sie für diesen Schritt den Import Products-Endpoint. Das API-Limit beträgt 40 Anfragen pro Minute, mit maximal einer Anfrage alle 1,5 Sekunden. Das Anfragegewichtslimit beträgt 35 Megabyte. Das folgende Beispiel sendet das aktualisierte Produkt PD2 mit geänderten Feldern price und oldprice sowie das neue Produkt PD3. Das Produkt PD1 wird weggelassen, da es unverändert bleibt.
# !!! 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/

Verfügbare Produkte aktualisieren

Verwenden Sie den Update available products-Endpoint, um den Lagerstatus zu verwalten. Dieser Endpoint aktualisiert die Liste der verfügbaren Produkte anhand ihrer IDs. In diesem Szenario wird das Produkt PD1 als nicht verfügbar markiert, indem IDs für PD2 und PD3 angegeben und die ID für PD1 weggelassen werden.
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"],
}'

Wichtige Empfehlungen

  1. Workflow-Reihenfolge
    Importieren Sie Kategorien immer vor Produkten
  2. Vollständigkeit der Daten
    Produktimporte erfordern alle obligatorischen Felder
  3. Webhook-Strategie
    Wesentlich für die Überwachung großer Imports
  4. Leistungstipps
    • Produkte in Batches ≤35 MB
    • Ratenbegrenzung: 40 Anfragen/Minute
    • Verwenden Sie nur den Update available products-Endpoint, um die Verfügbarkeit eines Produkts zu ändern.
  5. Fehlerbehandlung
    • Überprüfen Sie die Kategorie-IDs
    • Überprüfen Sie die Feldformate
    • Überwachen Sie die Webhook-Antworten