Criar uma posição de produto
Descrever um produto que será disponibilizado no portfólio.
Ao criar um produto, você receberá o código 201 - Created. Se você estiver recebendo o código 200 - OK é porque está sendo realizado o redirecionamento automático, mas o produto não foi atualizado.
Escopo requerido
| Escopo | Descrição |
|---|---|
portfolio:write | Permite gerenciar os SKUs |
portfolio:read | Permite visualizar os SKUs |
Endpoint
Para criar um SKU, utilize o endpoint:
apps.eupreciso.com.br/v1.0/marketplace/portfolios/skus
Observações
- Parâmetro: A URL não aceita parâmetros adicionais, exceto para consultas.
- Método: O método aceito é o
POST. - Identificador: O identificador do SKU é gerado automaticamente pela plataforma do Eu Preciso, conforme descrito aqui e deverá ser utilizado para consultas e atualizações.
Corpo da requisição
| Propriedade | Tipo | Descrição | Obrigatório | Tamanho |
|---|---|---|---|---|
code | string | Código SKU do produto. | Sim | Min 1 carácter. Max 50 caracteres. |
title | object | Objeto contendo o título em diferentes línguas. | Sim | - |
title.{language} | string | Título do SKU, language deve seguir o padrão ISO 639-1/2 (ex. pt_BR). | Sim | Min 1 carácter. Max 150 caracteres. |
variation_key | string | Código do SKU pai. Quando não houver um valor, poderá ser enviado ''. | Sim | Max 50 caracteres. |
condition | enum | Condição do SKU. Somente são aceitos os valores: new, used, remanufactured. | Sim | - |
brand | string | Marca do produto. | Sim | Min 1 carácter. Max 70 caracteres. |
tags | array | Palavras-chave do SKU. Quando não houver um valor, poderá ser enviado []. | Sim | Min 1 carácter. Max 100 caracteres (por tag). |
available | boolean | Disponibilidade da publicação. | Sim | - |
origin | enum | Origem do produto. Os valores aceitos são: national, imported. | Sim | - |
datasheet | object | Fichas técnicas do produto. Quando não houver um valor, poderá ser enviado {}. | Sim | - |
datasheet.reference | URL | URL referente à ficha técnica. | Não | - |
dimensions | array | Dimensões do produto. | Sim | - |
dimensions[].name | enum | Nome da dimensão. Valores aceitos: product, package. | Sim | - |
dimensions[].height | object | Altura. | Sim | - |
dimensions[].height.value | float | Valor da altura. | Sim | Min 1 carácter. Max 10 caracteres. |
dimensions[].height.unit | enum | Unidade da altura. Valores aceitos: cm (centímetros), m (metros). | Sim | - |
dimensions[].width | object | Largura. | Sim | - |
dimensions[].width.value | float | Valor da largura. | Sim | Min 1 carácter. Max 10 caracteres. |
dimensions[].width.unit | enum | Unidade da largura. Valores aceitos: cm (centímetros), m (metros). | Sim | - |
dimensions[].length | object | Comprimento. | Sim | - |
dimensions[].length.value | float | Valor do comprimento. | Sim | Min 1 carácter. Max 10 caracteres. |
dimensions[].length.unit | enum | Unidade do comprimento. Valores aceitos: cm (centímetros), m (metros). | Sim | - |
dimensions[].weight | object | Peso. | Sim | - |
dimensions[].weight.value | float | Valor do peso. | Sim | Min 1 carácter. Max 10 caracteres. |
dimensions[].weight.unit | enum | Unidade do peso. Valores aceitos: g (gramas), kg (quilogramas). | Sim | - |
description | object | Objeto contendo a descrição do produto em diferentes línguas. Quando não houver um valor, enviar {}. | Sim | - |
description.{language} | string | Descrição do produto. language deve seguir o padrão ISO 639-1/2 (ex. pt_BR). | Não | - |
description.{language}.verbose_value | string | Descrição detalhada do produto. | Não | Min 1 carácter. |
description.{language}.simplified_value | string | Descrição simplificada do produto. Quando não houver um valor, poderá ser enviado ''. | Não | Max 1000 caracteres. |
identifiers | array | Identificadores do produto. Quando não houver um valor, poderá ser enviado []. | Sim | - |
identifiers[].type | enum | Tipo do identificador. Valores permitidos: EAN, ISBN, UPC, NCM. | Não | Min 1 carácter. |
identifiers[].value | string | Valor do identificador. | Não | EAN - 8, 12, 13 ou 14 números. |
attributes | object | Atributos do produto. Quando não houver um valor, poderá ser enviado {}. | Sim | - |
attributes.variant | array | Atributos variantes do produto. Quando não houver um valor, poderá ser enviado []. | Não | - |
attributes.variant[].name | string | Nome variante do atributo. | Não | Min 1 carácter. |
attributes.variant[].value | string | Valor variante do atributo. | Não | Min 1 carácter. |
medias | array | Mídias do produto. Quando não houver um valor, poderá ser enviado []. | Sim | - |
medias[].name | string | Nome da mídia. | Não | Min 1 carácter. Max 50 caracteres. |
medias[].type | string | Tipo da mídia. | Não | Min 1 carácter. |
medias[].reference | URL | URL de referência da mídia. | Não | - |
extras | object | Informações adicionais sobre o SKU. Quando não houver um valor, poderá ser enviado {}. | Sim | - |
Para títulos, descrições e atributos a linguagem deve incluir obrigatoriamente o português (pt_BR).
O campo dimensions é uma lista de itens com as suas respectivas dimensões. E é necessário que um desses itens seja o pacote. Para isso informe package na chave name e especifique os valores para height, width, length e weight.
"dimensions": [
{
"name": "product",
"height": {
"value": 10,
"unit": "cm"
},
"width": {
"value": 10,
"unit": "cm"
},
"length": {
"value": 10,
"unit": "cm"
},
"weight": {
"value": 180,
"unit": "g"
}
},
{
"name": "package",
"height": {
"value": 20,
"unit": "cm"
},
"width": {
"value": 20,
"unit": "cm"
},
"length": {
"value": 20,
"unit": "cm"
},
"weight": {
"value": 200,
"unit": "g"
}
}
]Chamada
POST /v1.0/marketplace/portfolios/skus
Host: apps.eupreciso.com.br
Content-Type: application/json
{
"code": "CAMISETA_BRANCA_P",
"title": {
"pt_BR": "Camiseta Branca P",
"en_US": "White T-shirt S"
},
"variation_key": "CAMISETAS_PMG",
"condition": "new",
"brand": "Marca Exemplo",
"tags": ["camiseta", "branca", "algodão"],
"available": true,
"origin": "national",
"datasheet": {
"reference": "https://www.exemplo.com/ficha-tecnica"
},
"dimensions": [
{
"name": "product",
"height": {
"value": 70.5,
"unit": "cm"
},
"width": {
"value": 45,
"unit": "cm"
},
"length": {
"value": 1,
"unit": "cm"
},
"weight": {
"value": 300,
"unit": "g"
}
},
{
"name": "package",
"height": {
"value": 80,
"unit": "cm"
},
"width": {
"value": 50,
"unit": "cm"
},
"length": {
"value": 5,
"unit": "cm"
},
"weight": {
"value": 350,
"unit": "g"
}
}
],
"description": {
"pt_BR": {
"verbose_value": "Camiseta branca de algodão, tamanho pequeno, confortável para o dia a dia.",
"simplified_value": "Camiseta branca P de algodão"
},
"en_US": {
"verbose_value": "White cotton t-shirt, small size, comfortable for everyday wear.",
"simplified_value": "White t-shirt S cotton"
}
},
"identifiers": [
{
"type": "EAN",
"value": "1234567890123"
}
],
"attributes": {
"variant": [
{
"name": "cor",
"value": "branca",
"display": {
"pt_BR": {
"name": "Cor",
"value": "Branca",
"simplified_value": "Branca"
}
}
}
],
"optional": [
{
"name": "composição",
"value": "100% algodão",
"display": {
"pt_BR": {
"name": "Composição",
"value": "100% algodão",
"simplified_value": "Algodão"
}
}
}
]
},
"medias": [
{
"name": "Imagem Principal",
"type": "image",
"reference": "https://www.exemplo.com/imagem-camiseta-branca.jpg"
}
],
"extras": {
"observacao": "Produto recomendado para dias quentes."
}
}
Retorno esperado
O formato do retorno de nosso servidor será do tipo JSON, que contém a seguinte estrutura:
| Parâmetro | Valor | Descrição |
|---|---|---|
token | Retorna uma string com um token a ser usado para posteriormente acessar o status da importação. | |
statusMessage | Explica o retorno síncrono da importação, com detalhamento de erros da validação síncrona. | |
statusCode | Identifica o retorno síncrono da importação. | |
errors | array | Retorna uma lista de erros. |
data | Retorna os dados do SKU importado. |
Os statusCode e statusMessage possíveis são os seguintes:
| Código | Mensagem | Descrição |
|---|---|---|
| 0 | The sku was imported and will be processed | No caso, o sku foi validado sincronamente. Não é garantia de publicação, dado que há a validação assíncrona posterior (moderação, etc). |
| -1 | Unexpected error | Erro inesperado. |
| -2 | The request was blocked | Usuário não pode importar pois está bloqueado temporariamente por excesso de requisições. |
| -3 | There is no sku to import | Não há sku para importar. |
| -4 | An sku had problems on import | Se um sku falhar em sua validação, a importação é cancelada. |
| -5 | Import is down | O serviço de importação está desativado. |
| -6 | Without permission | Usuário sem permissão. |
No caso do erro do tipo -4, alguma validação síncrona aconteceu e, por isso, algum dos anúncios deixou de ser importado com sucesso. Os possíveis motivos serão retornados no campo errors.
Exemplo de retorno:
{
"token": "a0xioczbk1nvwvlohe7i5",
"id": "6712b08fc37c38e903909cbb",
"sku": "CAMISETA_BRANCA_P",
"statusCode": 0,
"statusMessage": "The sku was imported and will be processed",
"errors": [],
"data": {
"code": "CAMISETA_BRANCA_P",
"title": {
"pt_BR": "Camiseta Branca P",
"en_US": "White T-shirt S"
},
"variation_key": "CAMISETAS_PMG",
"condition": "new",
"brand": "Marca Exemplo",
"tags": ["camiseta", "branca", "algodão"],
"available": true,
"origin": "national",
"datasheet": {
"reference": "https://www.exemplo.com/ficha-tecnica"
},
"dimensions": [
{
"name": "product",
"height": {
"value": 70.5,
"unit": "cm"
},
"width": {
"value": 45,
"unit": "cm"
},
"length": {
"value": 1,
"unit": "cm"
},
"weight": {
"value": 300,
"unit": "g"
}
},
{
"name": "package",
"height": {
"value": 80,
"unit": "cm"
},
"width": {
"value": 50,
"unit": "cm"
},
"length": {
"value": 5,
"unit": "cm"
},
"weight": {
"value": 350,
"unit": "g"
}
}
],
"description": {
"pt_BR": {
"verbose_value": "Camiseta branca de algodão, tamanho pequeno, confortável para o dia a dia.",
"simplified_value": "Camiseta branca P de algodão"
},
"en_US": {
"verbose_value": "White cotton t-shirt, small size, comfortable for everyday wear.",
"simplified_value": "White t-shirt S cotton"
}
},
"identifiers": [
{
"type": "EAN",
"value": "1234567890123"
}
],
"attributes": {
"variant": [
{
"name": "cor",
"value": "branca",
"display": {
"pt_BR": {
"name": "Cor",
"value": "Branca",
"simplified_value": "Branca"
}
}
}
],
"optional": [
{
"name": "composição",
"value": "100% algodão",
"display": {
"pt_BR": {
"name": "Composição",
"value": "100% algodão",
"simplified_value": "Algodão"
}
}
}
]
},
"medias": [
{
"name": "Imagem Principal",
"type": "image",
"reference": "https://www.exemplo.com/imagem-camiseta-branca.jpg"
}
],
"extras": {
"observacao": "Produto recomendado para dias quentes."
}
}
};