mercredi 26 février 2014

Request Builder

Kelkoo a mis à la disposition des développeurs un site explicatif de son API et comment l'utiliser, vous pouvez vous y rendre à l'dresse suivante : http://developer.kelkoo.com/.

En cliquant sur l'onglet REQUEST BUILDER vous allez accéder à un formulaire qui vous permettra de simuler vos requêtes pour récupérer les flux xml souhaités.

Pour simuler une requête, vous devez remplir les paramètres obligatoires suivants :

  • Tracking Id : qui permettra le tracking de vos urls.
  • Affiliate Key : votre code d'affilié qui fera le lien avec votre compte Tradedoubler.
  • Region : votre pays choisi, attribué selon l'emplacement de votre site. Il est important de ne pas se tromper de pays sinon les résultats seront erronés ou nuls.
  • Template : indique le type de webservice que vous voulez interroger.
Lister les catégories

En choisissant le Template "Category Search" et en cliquant sur le bouton "Send Request", vous aurez comme résultat deux données :

Request Url : C'est l'url qui permet l'interrogation de l'API selon la requête choisie (dans ce cas lister les catégories disponibles), elle est sous cette forme : 
http://fr.shoppingapis.kelkoo.com/V2/categorySearch?shortcuts=false&features=None&aid=Tracking_Id&timestamp=1393414464&hash=LIoZhZMJSF1LD9p1OhOteA--

Response : Affiche le fichier le fichier xml résultant de la requête, chaque catégorie a les attributs suivants :

  • refinements : indique si la catégorie contient un filtre.
  • name : le nom de la catégorie.
  • id : l'Id de la catégorie.
  • catalogs : indique si la catégorie contient des catalogues ou juste des produits non comparés.
Si vous choisissez le format "Tree" vous allez affichez aussi les sous catégories. On notera aussi que Kelkoo attribue l'Id 601 à la catégorie racine.

Pour lister une catégorie spécifique, il suffit de renseigner le champ "Category" par l'Id de la catégorie voulue.

Lister les produits

Pour simuler une requête listant les produits, on choisit le Template "Product Search V3", on obtient un formulaire différent avec les champs suivants :


  • Query : requête selon un ou plusieurs mots clés, exemple : "apple iphone".
  • Category : l'Id de la catégorie dont on veut lister les produits.
  • EAN : chercher un produit par son code EAN.
  • Brand Name : nom de la marque qu'on cherche.
  • Product Id : l'Id du produit qu'on cherche.
  • Refinement : les filtres qu'on veut appliquer à la recherche, on expliquera plus loin comment l'utiliser.
  • Merchant : recherche par Id du marchand.
  • Offer Id : à chaque produit est attribué un "Offer Id" qui est différent du "Product Id".
  • Sort : permet de trier les résultats selon le prix, s'il n'est pas renseigner, le trie se fera selon la pertinence des produits.
  • Logical Operator : définit le mode de recherche si le champ "Query" est remplie par des mots clés, AND pour ET et OR pour OU, par défaut c'est AND.
  • Start : indique par quel résultat commencer dans le classement, ceci permettra la gestion de la pagination des résultats qu'on verra plus loin.
  • Results : permet de choisir le nombre de résultats qu'on veut afficher (limiter à 100 pour une requête).
  • Price Min et Price Max : limitent une fourchette de prix.
  •  Categories : affiche les catégories liées à la recherche.
  • Refinements : affiche les filtres disponibles pour affiner la requête si l'on souhaite.
  • Products : liste les produits.
Prenons un exemple : on lance la recherche de "iphone 5" sur le champs "Query", on a donc les données suivantes (notez que les résultats changent bien sûre selon la mise à jour de la base de données Kelkoo) :

Request Url : 
http://fr.shoppingapis.kelkoo.com/V3/productSearch?query=apple+iphone&sort=default_ranking&start=1&results=20&show_products=1&show_subcategories=1&show_refinements=1&aid=Tracking_Id&timestamp=1393417346&hash=a7uGNFKVNnMjNwft2B6zLw--

Response :

<ProductSearch>
+<Categories total_subcategories="30"></Categories>
+<Refinements></Refinements>
+<Products totalResultsAvailable="1622" firstResultPosition="1" totalResultsReturned="20" currency="EUR" lowestPrice="5.90" highestPrice="899.00" totalMerchantsAvailable="14" searchOperator="and"></Products>
+<Warnings></Warnings>
+<SearchInfo></SearchInfo>
</ProductSearch>

Traitons par nœud :

Categories : informe sur les sous catégories que contiennent le produit, si l'on déroule, on obtient les nœuds des sous catégories. Prenons le premier :

<SubCategory>
<Title>Accessoires pour téléphone portable</Title>
<Value>125801</Value>
<NumberOfProducts>937</NumberOfProducts>
</SubCategory>  

Title : nom de la sous catégorie.
Value : Id de la sous catégorie.
NumberOfProducts : nombre de produits existant pour cette sous catégorie.

Refinements : affiche les filtres disponibles pour ce produits, dans notre cas on obtient 5 filtres :

<Refinements>
+<Refinement name="NarrowsBy" label="Catégorie" totalvalues="30" type="ValueList"></Refinement>
+<Refinement name="Price" label="Prix" totalvalues="5" type="ValueList"></Refinement>
+<Refinement name="merchant" label="Marchand" totalvalues="14" type="ValueList"></Refinement>
+<Refinement name="Classification" label="Type" totalvalues="2" type="ValueList"></Refinement>
+<Refinement name="RebateRange" label="% de réduction" totalvalues="4" type="ValueList"></Refinement>
</Refinements>

Chaque noeud a les attributs suivants :
name : Nom du filtre, utilisé pour filtrer.
label : Nom du filtre, pour l'affichage.
totalvalues : nombre de résultats existants.
type : type du filtre, généralement "ValueList".

Si on déroule maintenant chaque nœud, on aura le détail des valeurs du filtre :

<RefineValue>
<Title>Accessoires pour téléphone portable</Title>
<Value>125801</Value>
<NumberOfProducts>937</NumberOfProducts>
</RefineValue>

Title : nom de la valeur filtre.
Value : Id de la valeur du filtre.
NumberOfProducts : nombre de produits existant pour cette valeur.

Products : liste les produits résultants de la requête :

<Products totalResultsAvailable="1622" firstResultPosition="1" totalResultsReturned="20" currency="EUR" lowestPrice="5.90" highestPrice="899.00" totalMerchantsAvailable="14" searchOperator="and">
+<Product></Product>
+<Product></Product>
-----------------------
+<Product></Product>
+<Product></Product>
<Products>

totalResultsAvailable : total des résultats disponibles.
firstResultPosition : position du premier résultat.
totalResultsReturned : total des résultats retournés.
currency : devise appliquée aux résultats.
lowestPrice : prix du produit le moins cher.
highestPrice : prix du produit le plus cher.
totalMerchantsAvailable : total des marchands proposant ce produit.
searchOperator : opérateur de recherche (par défaut AND).

Le nœud "Product" contient toutes les balises xml regroupant les informations du produit, en voici un exemple :

<Product>
<Offer id="8a5518b4a202369c5a6c04950cf0a4c0" type="MANUFACTURER_PRODUCTS">
<Title>Iphone 5 Blanc 64Go Occasion Usé Orange</Title>
<Images>
<Image>
<Url>http://r.kelkoo.com/r/fr/3012701/100020213/90/90/http%3A%2F%2Fpmcdn.priceminister.com%2Fphoto%2F977010780_L.jpg/ldgCEyvNMjz9JWmHShmQe8rz.icAcC66M5nurfBYOBc-</Url>
<Height>90</Height>
<Width>90</Width>
</Image>
<ZoomImage>
<Url>http://r.kelkoo.com/r/fr/3012701/100020213/auto/auto/http%3A%2F%2Fpmcdn.priceminister.com%2Fphoto%2F977010780_L.jpg/ldgCEyvNMjz9JWmHShmQe8rz.icAcC66M5nurfBYOBc-</Url>
</ZoomImage>
</Images>
<Video/>
<Url>http://ecs-fr.kelkoo.fr/ctl/go/sitesearchGo?.ts=1393443052309&.sig=TjvM_5Nr_W0Ppb6TJbEkPrLqbIk-&offerId=8a5518b4a202369c5a6c04950cf0a4c0&searchId=107611418913436_1393443052191_1746103&affiliationId=Tracking_Id&country=fr&wait=true&ecs=ok&contextLevel=1&merchantid=3012701&comId=3012701&catId=100020213&useSearch6=true</Url>
<MobileFriendly>false</MobileFriendly>
<CompareUrl>http://www.kelkoo.fr/p-telephone-portable-sans-abonnement-100020213/apple-iphone-5-64gb-19829092?partnerId=Tracking_Id</CompareUrl>
<Merchant id="3012701">
<Name>PriceMinister Occasions</Name>
<Logo>
<Url>http://r6.kelkoo.com/data/merchantlogos/3012701/PMOccasion.jpg</Url>
<Width>80</Width>
<Height>24</Height>
</Logo>
</Merchant>
<CatalogID>100020213-19829092</CatalogID>
<Catalog productId="19829092" categoryId="100020213">
<Name>Apple iPhone 5 64GB</Name>
</Catalog>
<Category id="100020213">
<Name>Téléphone portable sans abonnement</Name>
</Category>
<Price currency="EUR">
<Price>420</Price>
<DeliveryCost>9.2</DeliveryCost>
<DeliveryCostDetails>
<DeliveryCost>9.2</DeliveryCost>
</DeliveryCostDetails>
<TotalPrice>429.2</TotalPrice>
</Price>
<ProductClass>1</ProductClass>
<Availability>1</Availability>
<DeliveryTime>sous 2 à 5 jours</DeliveryTime>
<Promo/>
<OffensiveContent>false</OffensiveContent>
<FinancingOption/>
<MerchantCategory>Electronique Téléphones mobiles Non précisé</MerchantCategory>
<Brand>Apple</Brand>
<BrandId>211</BrandId>
<GreenProduct>false</GreenProduct>
</Offer>
</Product>

0 commentaires :

Enregistrer un commentaire