Import des produits
URL du Webservice : https://sws.spartoo.com/mp/xml_import_products.phpCe webservice sert à créer et mettre à jour les produits sur le site de Spartoo.
Pour chaque produit envoyé, le webservice va renvoyer un code d'erreur indiquant si tout s'est bien passé ou non. Certaines erreurs sont bloquantes (fatal), d'autres non (warning).
Ce webservice sert a créer de produits et mettre à jour votre catalogue. Il peut s'utiliser pour envoyer la totalité du catalogue ou seulement quelques produits.
Fréquence des appels:
- Quand ce webservice est utilisé pour faire une mise a jour complète du catalogue, nous conseillons de l'utiliser qu'une fois toutes les 6 heures.
- Quand ce webservice est utilisé pour faire une mise à jour partielle (que pour quelques produits), nous acceptons une fréquence maximale d'un appel tous les 10 minutes.
Ce webservice fonctionne en mode "Mise à jour" et non en mode "Ecrasement". C'est à dire que les produits qui ne sont pas envoyés dans le XML ne seront pas supprimés.
Pour retirer un produit du site, il faut mettre son stock à 0.
Liste des paramètres
Les paramètres de ce webservice doivent être obligatoirement passés en POSTParamètre | Description |
---|---|
partenaire | Doit contenir votre identifiant unique : |
xml | Chaîne de caractère XML contenant la liste des éléments à créer ou à mettre à jour |
Paramètres optionnels qui peuvent être passés en POST
Paramètre | Description |
---|---|
force_description | A mettre à 1 si on souhaite forcer la mise à jour des descriptions produits: supprimer des descriptions existantes, éditer la description d'un produit de stock nul, etc. |
force_overwrite | A mettre à 1 si on souhaite enlever du catalogue des erreurs de stock. Attention de bien envoyer le reste du catalogue sans overwrite immédiatement après. |
async | A mettre à 1 si on souhaite passer par la methode asynchrone |
Format du paramètre xml
Les champs texte doivent être protégés par des balises CDATA s'ils contiennent des caractères spéciaux qui rendrait le XML invalide.
Format mono pays
<root> <products> <product> <reference_partenaire>string</reference_partenaire> <product_name>string</product_name> <manufacturers_name>string</manufacturers_name> <product_sex>char</product_sex> <product_price>float</product_price> <product_quantity>int</product_quantity> <color_id>int</color_id> <product_style>int</product_style> <product_description>string</product_description> <product_color>string</product_color> <heel_height>float</heel_height> <country_origin>int</country_origin> <code_hs>int</code_hs> <size_list> <size> <size_name>string</size_name> <size_quantity>int</size_quantity> <size_reference>string</size_reference> <ean>string</ean> <code_hs>int</code_hs> <product_price>float</product_price> <discount> <startdate>timestamp</startdate> <stopdate>timestamp</stopdate> <price_discount>float</price_discount> <rate>int</rate> <sales/> </discount> </size> <!-- ... Plusieurs balises "size" possibles ... --> </size_list> <product_composition>int</product_composition> <voering_composition>int</voering_composition> <first_composition>int</first_composition> <zool_composition>int</zool_composition> <photos> <url1>url</url1> <url2>url</url2> <url3>url</url3> <url4>url</url4> <url5>url</url5> <url6>url</url6> <url7>url</url7> <url8>url</url8> </photos> <discount> <startdate>timestamp</startdate> <stopdate>timestamp</stopdate> <price_discount>float</price_discount> <rate>int</rate> <sales>0/1</sales> </discount> <extra_infos> <info> <id>int</id> <value>float</value> </info> <!-- ... Plusieurs balises "info" possibles ... --> </extra_infos> <selections> <selection>int</selection> <!-- ... Plusieurs balises "selection" possibles ... --> </selections> </product> <!-- ... Plusieurs balises "product" possibles ... --> </products> </root>
Format multi pays
<root> <products> <product> <reference_partenaire>string</reference_partenaire> <manufacturers_name>string</manufacturers_name> <product_sex>char</product_sex> <product_quantity>int</product_quantity> <color_id>int</color_id> <product_style>int</product_style> <heel_height>float</heel_height> <country_origin>int</country_origin> <code_hs>int</code_hs> <languages> <language> <code>string</code> <product_name>string</product_name> <product_description>string</product_description> <product_color>string</product_color> <product_price>float</product_price> <discount> <startdate>timestamp</startdate> <stopdate>timestamp</stopdate> <price_discount>float</price_discount> <rate>int</rate> <sales /> </discount> </language> <!-- ... Plusieurs balises "language" possibles ... --> </languages> <size_list> <size> <size_name>string</size_name> <size_quantity>int</size_quantity> <size_reference>string</size_reference> <ean>string</ean> <code_hs>int</code_hs> <languages> <language> <code>string</code> <product_price>float</product_price> <discount> <startdate>timestamp</startdate> <stopdate>timestamp</stopdate> <price_discount>float</price_discount> <rate>int</rate> <sales/> </discount> </language> <!-- ... Plusieurs balises "language" possibles ... --> </languages> </size> <!-- ... Plusieurs balises "size" possibles ... --> </size_list> <product_composition>int</product_composition> <voering_composition>int</voering_composition> <first_composition>int</first_composition> <zool_composition>int</zool_composition> <photos> <url1>url</url1> <url2>url</url2> <url3>url</url3> <url4>url</url4> <url5>url</url5> <url6>url</url6> <url7>url</url7> <url8>url</url8> </photos> <extra_infos> <info> <id>int</id> <value>float</value> </info> <!-- ... Plusieurs balises "info" possibles ... --> </extra_infos> <selections> <selection>int</selection> <!-- ... Plusieurs balises "selection" possibles ... --> </selections> </product> <!-- ... Plusieurs balises "product" possibles ... --> </products> </root>
Description des champs du XML d'entrée
Balise | Description | Obligatoire |
---|---|---|
reference_partenaire |
Identifiant produit du marchand. C'est le sku qu'identifie un produit d’une marque dans une couleur précise L'identifiant du produit ne peut contenir que des caractères alphanumérique ainsi que les caractères - (tiret) _ (tiret bas) et . (point). |
Oui |
product_name |
Nom du modèle Il ne doit pas contenir la catégorie, la couleur ou la marque du produit Il ne doit pas contenir non plus de caractères ou de balises html |
Non |
manufacturers_name | Nom de la marque du produit | Oui |
code_idu | Code IDU du produit (voir loi AGEC) | Non |
product_sex |
Sexe du produit > Voir les valeurs possibles |
Oui |
product_price | Prix du produit en euro (non obligatoire pour les prix des tailles) | Oui / Non |
color_id |
Couleur destinée aux filtres des menus Si elle n'est pas précisée, le produit ne ressortira pas si un client utilise un filtre sur la couleur > Voir les valeurs possibles |
Non |
product_style |
Catégorie du produit > Voir les valeurs possibles |
Oui |
product_description | Descriptif du produit. Apparait sur la fiche produit. | Non |
product_color | Champ texte libre pour la couleur. Apparaît sur la fiche produit. | Non |
product_quantity |
Stock total d'un produit Ignoré si un ou plusieurs balises size_quantity sont détectés pour le produit. Pour les produits de taille unique il faut obligatoirement une balise product_quantity si la balise size_quantity n'est pas renseigné. |
Non |
size |
Liste des tailles et leur stock. Facultatif pour les produits sans tailles ( Sacs / Accessoires ). Obligatoire Sinon. |
Oui / Non |
size_name |
Nom de la taille > Voir les valeurs possibles |
Oui |
size_quantity | Pour chaque taille, le stock doit être précisé. Pour désactiver un produit, il faut mettre le stock à 0. Quand le stock est à 0, le produit est désactivé et n'apparaît plus sur Spartoo. |
Oui |
size_reference |
Référence du produit à la taille. Ce champ sert uniquement à être renvoyé dans les exports des commandes ou retours. Une bonne pratique est de générer cette référence en concaténant les champs reference_partenaire et size_name à l'aide d'un tiret bas "_". |
Non |
ean | EAN du produit à la taille Obligatoire pour la prestation logistique |
Non / Oui |
photos |
Liste des photos et leur url. Au moins une photo est obligatoire. Nous recommandons d'avoir au minimum 3 photos. Nous pouvons intégrer au maximum 8 photos. La photo ne sera téléchargée qu'une seule fois, puis sera stockée sur nos serveurs, après avoir été redimensionnée aux dimensions Spartoo. Les photos doivent être au format jpg, carrées et au minimum en 350x350 pixels. Si elles sont supérieures ou égales à 800x800 pixels, il y aura un zoom possible sur le site. |
Oui |
url1, url2 ... url8 |
Liens vers les photos Il faut nous fournir un lien vers chaque photo. Le nom de fichier doit contenir uniquement des caractères alphanumérique ainsi que les caractères "-" (tiret), "_" (tiret bas) et "." (point). Les espaces, ainsi que les lettres accentués (par ex. é, à et ñ) ne sont pas autorisés. |
Oui |
country_origin |
Pays d'origine du produit > Voir les valeurs possibles |
Non |
code_hs | Code douane du produit | Non |
heel_height | Hauteur talon en centimètre (cm). Uniquement pour les chaussures femme. Il faut utiliser un point pour séparer l'unité des décimaux (par exemple: 1.5). | No |
product_composition |
Composition de la tige du produit. Uniquement pour les chaussures et les sacs > Voir les valeurs possibles |
Non |
voering_composition |
Composition de la doublure du produit. Uniquement pour les chaussures et les sacs > Voir les valeurs possibles |
Non |
first_composition |
Composition de la semelle intérieure du produit. Uniquement pour les chaussures > Voir les valeurs possibles |
Non |
zool_composition |
Composition de la semelle extérieure du produit. Uniquement pour les chaussures > Voir les valeurs possibles |
Non |
discount |
Permet d'appliquer une promotion sur le produit ou sur une taille. Le champ rate du champ discount concerne la réduction du prix en pourcentage par rapport au champ product_price. Le champ price_discount du champ discount concerne le prix discounté du produit. Le pourcentage de réduction affiché sera calculé. Si les deux champs sont présents, le champ price_discount est prioritaire sur le champ rate. Si le discount est immédiat, il n'y a pas besoin de préciser le champ startdate. Si le champ stopdate n'est pas précisé, la promotion aura une durée par défaut d'un mois. Si la balise sales est précisée, la promotion sera une promotion de soldes. Sinon, ce sera une promotion classique. Indiquer ce paramètre permet aux produits d'être présent sur la page des soldes pendant les périodes de soldes. |
Non |
extra_infos |
Permet de spécifier des informations complémentaires dépendantes du type de produit. Chaque information est constitué d'un id ( > Voir les valeurs ) et d'une valeur sous forme numérique. |
Non |
selections | Permet de spécifier les contextes d'utilisations du produit au moyen d'une liste d'id. L'ensemble des contexte disponibles est fourni ici. |
Non |
Exemple de paramètre xml
<root> <products> <product> <reference_partenaire>98</reference_partenaire> <product_name><![CDATA[ALL STAR HI]]></product_name> <manufacturers_name><![CDATA[Converse]]></manufacturers_name> <product_sex>M</product_sex> <product_price>64.99</product_price> <product_quantity>5</product_quantity> <color_id>8</color_id> <product_style>10010</product_style> <product_description><![CDATA[Mythique parmi les mythiques, la Chuck Taylor All Star de Converse est une incontournable. Ici en version montante avec une tige en toile et un imprimé uni classique, elle se la joue intemporelle et indémodable ! ]]></product_description> <product_color><![CDATA[Rouge]]></product_color> <country_origin>73</country_origin> <code_hs>64059090</code_hs> <size_list> <size> <size_name>38</size_name> <size_quantity>4</size_quantity> <size_reference>98_38</size_reference> <ean>123456789011></ean> </size> <size> <size_name>39</size_name> <size_quantity>1</size_quantity> <size_reference>98_39</size_reference> <ean>123456789012></ean> </size> </size_list> <product_composition>4</product_composition> <photos> <url1>https://imgext.spartoo.com/photos/98/98/98_350_A.jpg</url1> <url2>https://imgext.spartoo.com/photos/98/98/98_350_B.jpg</url2> <url3>https://imgext.spartoo.com/photos/98/98/98_350_C.jpg</url3> <url4>https://imgext.spartoo.com/photos/98/98/98_350_D.jpg</url4> <url5>https://imgext.spartoo.com/photos/98/98/98_350_E.jpg</url5> <url6>https://imgext.spartoo.com/photos/98/98/98_350_F.jpg</url6> <url7>https://imgext.spartoo.com/photos/98/98/98_350_G.jpg</url7> <url8>https://imgext.spartoo.com/photos/98/98/98_350_H.jpg</url8> </photos> <discount> <startdate>1199170800</startdate> <stopdate>1204354800</stopdate> <rate>20</rate> </discount> </product> </products> </root>
Format du XML retourné
<root> <products> <product> <reference_partenaire>string</reference_partenaire> <status>string</status> <action>string</action> <errors> <error> <id>int</id> <description>string</description> <level>string</level> </error> <!-- ... Plusieurs balises "error" possibles ... --> </errors> </product> <!-- ... Plusieurs balises "product" possibles ... --> </products> <errors>int</errors> </root>
Liste des codes d'erreurs du webservice
Code | Description |
---|---|
1 | Pas d'erreur de paramètres |
-1 | Le paramètre partenaire n’est pas passé en paramètre ou est vide |
-2 | Le paramètre partenaire n’existe pas |
-11 | Le paramètre xml n’est pas passé en paramètre ou est vide |
-15 | Erreur de syntaxe XML, vérifiez votre fichier XML |
-428 | Votre compte a été désactivé. Vous ne pouvez plus faire d'appels aux webservices |
-429 | Vous avez fait trop d'appel a ce webservice pour cette heure glissante |
Description des champs de la réponse XML
Balise | Description |
---|---|
reference_partenaire | Identifiant produit du marchand |
status | OK si le produit est inséré en base de données KO si le produit n’a pas pu être inséré |
action |
Liste des actions possibles :
|
errors |
Liste des erreurs de traitement :
|
Liste des codes d'erreurs produit
Code | Level | Description |
---|---|---|
1 | Fatal | La référence partenaire n'est pas assez longue |
2 | Fatal | La référence partenaire n'est pas valide, elle ne peut contenir que des caractères alphanumériques |
3 | Warning | Le nom du produit n'est pas spécifié |
4 | Fatal | La marque n'est pas spécifiée |
5 | Fatal | Le genre n'est pas valide, les seules valeurs possibles sont : H, F, M, K, G, B |
6 | Fatal | Le prix doit être un nombre |
7 | Fatal | le prix est négatif ou non-renseigné |
8 | Warning | Le prix nous semble très grand ( > 1000€ ) |
81 | Fatal | Le prix ne peut pas etre supérieur a 180€ |
9 | Fatal | La quantité doit être un nombre entier |
10 | Fatal | La quantité doit être positive |
11 | Warning | La couleur xxx n'existe pas : le produit ne sera pas disponible via les filtres de couleurs |
13 | Fatal | La catégorie xxx n'existe pas |
14 | Warning | Le descriptif produit est vide |
15 | Warning | La couleur d'affichage est vide |
16 | Warning | Pas de liste de tailles : utilisation de la taille unique |
17 | Warning | La composition est spécifiée, mais n'est pas valide |
18 | Fatal | La photo 1 est obligatoire |
19 | Warning | Le taux de discount de la promo doit être compris entre 0 et 100, la promo ne sera pas prise en compte |
20 | Warning | La taille xxx n'existe pas |
201 | Fatal | Le code EAN est obligatoire |
202 | Fatal | Le code EAN xxx sur la référence xxx en taille xxx est déjà utilisé par la ref : xxx. |
205 | Fatal | Référence partenaire trop longue |
23 | Warning | La photo xxx est plus petite que 350x350 : elle sera de mauvaise qualité sur le site |
24 | Warning | La photo xxx est plus petite que 350x350 : elle ne sera pas affichée sur le site |
25 | Fatal | Taille xxx : Impossible de réguler le stock |
26 | Fatal | Pas de stock : le produit ne sera pas créé |
27 | Fatal | Impossible d'accéder à la photo 1 ( url xxx ) |
28 | Warning | Impossible d'accéder à la photo xxx ( url xxx ) |
30 | Fatal | La quantité de la taille xxx est trop grande (Quantité max : xxx) |
33 | Fatal | Un produit de genre xxx ne peut pas appartenir à la catégorie xxx |
34 | Fatal | Le mot xxx est blacklisté et ne devrait pas apparaître dans le nom ou la description du produit. |
35 | Fatal | Nom produit trop long, il doit contenir seulement le nom du modèle. Erreur(s) sur le(s) pays: xxx |
341 | Fatal | Le mot xxx est blacklisté et ne devrait pas apparaître dans la description du produit. |
36 | Fatal | Impossible d'importer le produit : le produit a une duplication du couple taille/couleur. |
37 | Fatal | Ce produit ne contient aucune information de langue pour un site actif. |
38 | Fatal | La taille xxx ne peut être définie qu'une fois pour la référence xxx |
39 | Warning | La référence partenaire est présente plusieurs fois dans le flux, les doublons ont été ignorés |
451 | Fatal | Pas de prix pour la taille xxx du pays xxx. (nécessaire pour un discount) |
452 | Warning | Date de fin du discount dépassé pour la taille xxx du pays xxx. |
453 | Fatal | "rate" (xxx) invalide pour la taille xxx du pays xxx. |
454 | Fatal | "rate" (xxx) > 85% pour la taille xxx du pays xxx. |
455 | Warning | La taille xxx à un prix sur un pays (xxx) non défini pour le produit. |
456 | Warning | La taille xxx à un prix sur xxx identique au prix global sur ce pays. |
Exemples de retour XML
Exemple de réponse à un appel web service KO :
<root> <products></products> <errors>-1</errors> </root>
Exemple de réponse à un appel web service OK :
<root> <products> <product> <reference_partenaire>EEAJBCC</reference_partenaire> <status>KO</status> <action>not created</action> <errors> <error> <id>14</id> <description>Le descriptif produit est vide</description> <level>warning</level> </error> <error> <id>4</id> <description>La marque n'est pas spécifiée</description> <level>fatal</level> </error> </errors> </product> <product> <reference_partenaire>KJHGFDS</reference_partenaire> <status>OK</status> <action>created</action> </product> </products> <errors>1</errors> </root>