Importação dos produtos
URL do Webservice : https://sws.spartoo.pt/mp/xml_import_products.phpEste webservice serve para criar e atualizar os produtos no site da Spartoo.
Para cada produto, o webservice envia um código de erro indicando se correu tudo bem ou não. Alguns erros podem bloquear o produto (fatal), outros não (warning).
Este webservice funciona em modo "Atualização" e não em modo "Supressão". Isto significa que os produtos que não são enviados no ficheiro XML não serão suprimidos.
Para retirar um produto do site, é preciso colocar o stock a 0.
Lista dos parâmetros
Os parâmetros deste webservice devem passar obrigatoriamente em POSTParâmetro | Descrição |
---|---|
partenaire | Deve conter a sua identificação única: |
xml | Sequência de caracteres XML contendo a lista dos elementos a serem criados ou atualizados |
Parametros opcionais que podem ser passados em POST
Parâmetro | Descrição |
---|---|
force_overwrite | Colocar 1 se desejar corrigir os erros de integração relacionados a uma queda significativa dos preços |
Formato do parâmetro xml
Os campos de texto devem estar protegidos por balizas CDATA caso contenham caracteres especiais que possam tornar o XML inválido.
Formato mono país
<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> <!-- ... Várias balizas "size" possíveis ... --> </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> <!-- ... Várias balizas "info" possíveis ... --> </extra_infos> <selections> <selection>int</selection> <!-- ... Várias balizas "selection" possíveis ... --> </selections> </product> <!-- ... Várias balizas "product" possíveis ... --> </products> </root>
Formato multi país
<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> <!-- ... Várias balizas "language" possíveis ... --> </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> <!-- ... Várias balizas "language" possíveis ... --> </languages> </size> <!-- ... Várias balizas "size" possíveis ... --> </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> <!-- ... Várias balizas "info" possíveis ... --> </extra_infos> <selections> <selection>int</selection> <!-- ... Várias balizas "selection" possíveis ... --> </selections> </product> <!-- ... Várias balizas "product" possíveis ... --> </products> </root>
Descrição dos campos XML de entrada
Baliza | Descrição | Obrigatória |
---|---|---|
reference_partenaire |
Identificação do produto parceiro A identificação do produto só pode conter caracteres alfanuméricos e os caracteres - (hífen) _ (underscore) e . (ponto). |
Sim |
product_name |
Nome do modelo Não deve conter a categoria, a cor ou a marca do produto |
Não |
manufacturers_name | Nome da marca do produto | Sim |
product_sex |
Género do produto > Ver os valores possíveis |
Sim |
product_price | Preço do produto em euros (não obrigatório para preços de tamanho) | Sim Não |
color_id |
Cor destinada aos filtros dos menus Se não for indicada, o produto não aparecerá se o cliente utilizar o filtro por cor > Ver os valores possíveis |
Não |
product_style |
Categoria > Ver os valores possíveis |
Sim |
product_description | Descrição do produto. Aparece na página do produto. | Não |
product_color | Campo de texto livre para a cor. Aparece na página do produto. | Não |
product_quantity |
Stock total de um produto Ignorado se for detetada uma ou mais tags size_quantity para o produto. Para produtos de tamanho único, será necessária uma etiqueta product_quantity se a etiqueta size_quantity não for especificada. |
Não |
size |
Lista dos tamanhos e respetivo stock. Facultativo para os produtos sem tamanho ( Bolsas / Acessórios). Caso contrário é Obrigatório. |
Oui / Non |
size_name |
Nome do tamanho > Ver os valores possíveis |
Sim |
size_quantity | Para cada tamanho deve ser especificado o stock. Para desativar um produto, deve definir o stock para 0. Quando o stock chega a 0, o produto é desativado e deixa de aparecer em Spartoo. |
Sim |
size_reference |
Referência do produto por tamanho. Este campo serve apenas para ser enviado nas exportações de encomendas ou devoluções. Uma boa solução será de gerar esta referência ligando os campos reference_partenaire e size_name através de um underscore "_". |
Não |
ean | EAN do produto por tamanho | Obrigatório para o serviço logísticoNão / Sim |
fotos |
Lista das fotos e respetivos URL. É obrigatória pelo menos uma foto. Recomendamos ter pelo menos 3 fotos. Podemos integrar no máximo 8 fotos. A foto será baixada apenas uma vez, será em seguida armazenada nos nossos servidores depois de redimensionada para as dimensões Spartoo As fotos devem estar no formato jpg, quadradas e com pelo menos 350x350 pixeis. Se elas forem superiores ou iguais a 800x800 pixeis, haverá um possível zoom no site. |
Sim |
url1, url2 ... url8 |
Links para as fotos Deve fornecer um link para cada foto. O nome do arquivo deve conter apenas caracteres alfanuméricos e caracteres "-" (hífens), "_" (underscore) e "." (pontos). Espaços, bem como letras acentuadas (por ex. é, à e ã) não são autorizados. |
Sim | country_origin |
País de origem do produto > Ver os valores possíveis |
heel_height | Altura do tacão em centímetro (cm). Unicamente para os calçados femininos. Deve ser um múltiplo de 0,5. | No |
product_composition |
Composição do cano do produto. Apenas para o calçado. > Ver os valores possíveis |
Não |
voering_composition |
Composição do forro do produto. Apenas para o calçado. > Ver os valores possíveis |
Não |
first_composition |
Composição da palmilha do produto. Apenas para o calçado. > Ver os valores possíveis |
Não |
zool_composition |
Composição da sola do produto. Apenas para o calçado. > Ver os valores possíveis |
Não |
discount |
Permite aplicar uma promoção no produto ou no tamanho. O campo ratedo campo discountdiz respeito à redução do preço em percentagem em relação ao campo product_price. O campo price_discount do campo discount diz respeito à redução em preço fixo. A percentagem de redução apresentada será calculada. Se os dois campos estiverem presentes, o campo price_discount é prioritário em relação ao campo rate. Se o desconto é imediato, não será necessário indicar o campo startdate. Se a baliza sales for indicada, a promoção será uma promoção de saldos. Caso contrário, será uma promoção clássica. Indicar este parâmetro permite que os produtos estejam presentes na página de saldos durante o período de saldos. |
Não |
extra_infos |
Permite especificar informações complementares dependentes do tipo de produto. Cada informação tem um ID ( Ver os valores ) e de um valor no formato numérico. |
Não |
seleções | Permite especificar os contextos de utilização do produto através de uma lista de ID. O conjunto dos contextos está aqui. |
Não |
Exemplo de parâmetro 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[Mítica, a Chuck Taylor ALL STAR da Converse é incontornável. Aqui em versão de cano alto em lona e estampado uniforme clássico, esta sapatilha é intemporal e nunca está fora de moda! ]]></product_description> <product_color><![CDATA[Vermelho]]></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>
Formato do XML devolvido
<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> <!-- ... Várias balizas "error" possíveis ... --> </errors> </product> <!-- ... Várias balizas "product" possíveis ... --> </products> <errors>int</errors> </root>
Lista dos códigos de erros do webservice
Código | Descrição |
---|---|
1 | Sem erros nos parâmetros |
-1 | O parâmetro partenaire não passou no parâmetro ou está vazio |
-2 | O parâmetro do parceiro não existe |
-11 | O parâmetro xml não passou no parâmetro ou está vazio |
-15 | Erro de sintaxe XML, verifique o seu ficheiro XML |
-428 | A sua conta foi desativada. Não pode mais efetuar chamadas ao webservice |
-429 | Efetuou demasiado chamadas para o Webservice nesta hora corrida |
Descrição dos campos da resposta XML
Baliza | Descrição |
---|---|
reference_partenaire | Identificação do produto do parceiro |
status | OK se o produto foi inserido na base de dados KO se o produto não foi inserido |
action |
Lista das ações:
|
errors |
Lista de erros:
|
Lista dos códigos de erros dos produtos
Code | Nível | Descrição |
---|---|---|
1 | Fatal | A referência do parceiro é demasiado curta |
2 | Fatal | A referência do parceiro não é válida. A referência só pode ter caracteres alfanuméricos |
3 | Warning | O nome do produto não foi especificado |
4 | Fatal | A marca não foi especificada |
5 | Fatal | O género não é válido. Os únicos valores possíveis são: H, F, M, K, G, B |
6 | Fatal | O preço deve ser um número |
7 | Fatal | O preço deve ser positivo |
8 | Warning | O preço é demasiado elevado ( > 1000€ ) |
81 | Fatal | O preço não poderá ser superior a 180€ |
9 | Fatal | A quantidade deve ser um número inteiro |
10 | Fatal | A quantidade deve ser positiva |
11 | Warning | A cor xxx não existe: o produto não estará disponível através dos filtros de cor |
13 | Fatal | A categoria xxx não existe |
14 | Warning | A descrição do produto está vazia |
15 | Warning | A descrição da cor está vazia |
16 | Warning | Não há lista de tamanhos: utilização do tamanho único |
17 | Warning | A composição foi especificada, mas não é válida |
18 | Fatal | A imagem 1 é obrigatória |
19 | Warning | Esta promoção não é válida. A taxa de desconto da promoção deve ser entre 0 e 100. |
20 | Warning | O tamanho xxx não existe |
201 | Fatal | O código EAN é obrigatório |
202 | Fatal | O código EAN xxx na referência xxx no tamanho xxx já está a ser utilizado. |
205 | Fatal | Referência parceiro demasiado comprida |
23 | Warning | A imagem xxx é inferior a 350x350: esta imagem terá uma má qualidade no site |
24 | Warning | A imagem xxx é inferior a 350x350: esta imagem não será apresentada no site |
25 | Fatal | Tamanho xxx: Impossível regular o stock |
26 | Fatal | Não há stock: o produto não será criado |
27 | Fatal | Impossível aceder à imagem 1 ( url xxx ) |
28 | Warning | Impossível aceder à imagem xxx ( url xxx ) |
30 | Fatal | A quantidade do tamanho xxx é demasiada elevada (Quantité max : xxx) |
33 | Fatal | Um produto de género xxx não pode pertencer a categoria xxx |
34 | Fatal | A palavra xxx está bloqueada e não deve aparecer no nome do produto. |
35 | Fatal | Nome do produto muito comprido, deve conter apenas o nome do modelo. Erro(s) no(s) país(es): xxx |
341 | Fatal | A palavra xxx está bloqueada e não deve aparecer na descrição do produto. |
36 | Fatal | Impossível importar o produto: o produto possui uma duplicação do par tamanho/cor. |
37 | Fatal | Não forneceu informações de idioma para este produto |
38 | Fatal | O tamanho xxx só pode ser definido uma vez para a referência xxx |
39 | Warning | A referência parceira está presente várias vezes, as duplicações foram ignoradas |
451 | Fatal | Não há preço para o tamanho xxx no país xxx. (necessário para um desconto) |
452 | Warning | Data final do desconto excedida para o tamanho xxx do país xxx. |
453 | Fatal | "taxa" (xxx) invalido para o tamanho xxx do país xxx. |
454 | Fatal | "taxa" (xxx) > 85% para o tamanho xxx do país xxx. |
455 | Warning | O tamanho xxx tem um preço num país (xxx) não definido para o produto. |
456 | Warning | O tamanho xxx tem um preço de xxx idêntico ao preço global neste país. |
Exemplos de devolução XML
Exemplo de resposta a uma chamada web serviço KO :
<root> <products></products> <errors>-1</errors> </root>
Exemplo de resposta a uma chamada web serviço OK :
<root> <products> <product> <reference_partenaire>EEAJBCC</reference_partenaire> <status>KO</status> <action>not created</action> <errors> <error> <id>14</id> <description>A descrição do produto está vazia</description> <level>warning</level> </error> <error> <id>4</id> <description>A marca não foi especificada</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>