Import des produits

URL du Webservice : https://sws.spartoo.com/mp/xml_import_products.php

Ce 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 POST

Paramè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 :
  • created : le produit a été créé.
  • not created : le produit n'a pas été créé. Note : un produit peut avoir un statut 'OK' mais ne pas avoir été créé suite à certains 'Warning'.
  • updated : le produit a été mis à jour.
  • not updated : le produit n'a pas été mis à jour. Note : un produit peut avoir un statut 'OK' mais ne pas avoir été mis à jour suite à certains 'Warning'.
errors Liste des erreurs de traitement :
  • id : code d'erreur produit
  • level : niveau de l'erreur
    • Warning : n'empêche pas l'intégration du produit
    • Fatal : bloque l'intégration du produit
  • description : description texte de l'erreur


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>

Fichiers XSD

Fichier XSD Multi pays