top of page

​​Endpoints responsáveis pela gestão e configuração dos portfólios de produtos atribuídos aos vendedores.

Início > Portifolio de produtos

Versão: 2.0

Portfólio de Produtos

GET Portfólio de Produtos -

Categorias

Endpoint responsável por consultar a árvore de categorias vinculadas ao fornecedor.

Endpoint GET

URL

Exemplo

curl --location 'https://yandeh-seller-integration.yandeh.com.br/portfolio-produtos/categorias' \
--header 'Authorization: Bearer ...'

Sintaxe da Resposta

Se os parâmetros forem informados corretamente, o endpoint retornará os dados  com status code 200.
Exemplo de retorno:

 {
     
"status": "sucesso",
      "mensagem": "Listagem de categorias realizada com sucesso!",
   
  "data": [
        {
       
  "id": 1,
   
      "nome": "Padrão Yandeh",
          "is_padrao": true,
       
  "categorias": [
            {
           
  "id": 1,
           
  "nome": "MERCEARIA SECA",
             
"metadata": {
               
"menu_image_url": "https://url.jpg",
               
"melhores_ofertas": {
                 
"cor": "#FF0000",
                 
"icone": "https://url.jpg"
                },
               
"search_mobile_image_url": "https://url.jpg",
               
"carrossel_home_image_url": "https://url.jpg",
             
  "carrossel_home_mobile_image_url": "https://url.jpg"
              },
             
"icon_name": "yandeh-mercearia_seca",
             
"subcategorias": [
                {
                 
        "id": 126,
                 
        "mae": 1,
                 
        "nome": "MERCEARIA SECA DOCE",
                 
        "nivel": 2,
               
          "subcategorias": [
                                                     {
                                                          
"id": 57,
                                                          
"mae": 126,
                   
                                      "nome": "BISCOITOS",
                     
                                    "nivel": 1,
                     
                                    "subcategorias": [],
                                                          
"total_produtos": 555,
                     
                                    "arvore_categoria": 1
                                                        },
                                                     ],
                  "
total_produtos": 1351,
                  "
arvore_categoria": 1
                }
              ],
              "
arvore_categoria": 1
            }
          ]
        }
      ]
    }

Elementos da Resposta

status: Indica o status da requisição.
  Tipo: String.

mensagem: Mensagem da requisição.
  Tipo: String.

id:Identificador (ID) da árvore de categorias.
  Tipo: Integer.

nome: Descrição da árvore de categorias.
  Tipo: String

is_padrao: Indica se a árvore de categorias é a padrão.

  Tipo: Booleano.
categorias: Lista de categorias.
  Tipo: Array de objetos JSON.

id: Identificador (ID) da categoria.
  Tipo: Integer.

nome: Descrição da categoria.
  Tipo: String.

metadata: Informações complementares da categoria.
  Tipo:
objeto (JSON).

menu_imagem_url: URL da imagem exibida no menu.

Tipo: String.

melhores_ofertas: Informações de exibição da categoria.

Tipo: objeto (JSON).

cor: Cor de exibição.

Tipo: String.

icone: URL da imagem do ícone exibido no menu.

Tipo: String.

search_mobile_image_url: URL da imagem exibida do carrossel para aplicativo.

Tipo: String.

carrosel_home_image_url: URL da imagem exibida do carrossel na página principal.

Tipo: String.

carrossel_home_mobile_image_url: URL da imagem exibida do carrossel na página principal para aplicativo.

Tipo: String.

icon_name: Nome do ícone.

Tipo: String.

subcategorias: Lista de subcategorias.

Tipo: Lista de json.

id: Identificador(ID) da subcategoria.

Tipo: Integer.

mae: Identificador (ID) da categoria relacionada.

Tipo: Integer.

nome: Descrição da subcategoria.

Tipo: String.

nivel: Ordem de exibição.

Tipo: Integer.

total_produtos: Quantidade total de produtos disponíveis na categoria ou subcategoria.

Tipo: Integer.

arvore_categoria: Identificador (ID) da árvore da categoria.

Tipo: Integer.

GET Portfólio de Produtos -
Indústrias e Marcas

Endpoint responsável por consultar as indústrias e marcas vinculadas ao fornecedor.

Endpoint GET

URL

Exemplo

Sintaxe da Resposta

Se os parâmetros forem informados corretamente, o endpoint retornará os dados  com status code 200.
Exemplo de retorno:

{
   
"detail": {
       
"success": true,
        "message": "(OK) Busca de Indrustrias e Marcas realizada com sucesso!"
    },
   
"data": {
       
"success": true,
       
"message": "OK",
     
  "errors": [],
   
    "data": [
            {
               
"industria_id": 9698,
               
"industria_nome": "AB MAURI",
               
"industria_imagem": "https://acbhGDK/IDOSJU889.jpg",
               
"marcas": [
                    {
                       
"id": 78,
                     
  "nome": "FLEISCHMANN",
                     
  "imagem": ""https://acbhGDK/IDOSJU889.jpg",
                       
"total_produtos": 81
                    },
                    {
                       
"id": 150,
                     
  "nome": "OVOMALTINE",
                       
"imagem": ""https://acbhGDK/IDOSJU889.jpg"",
                       
"total_produtos": 27
                    }
                ],
               
"sum": "144"
            },
            {
               
"industria_id": 309,
             
  "industria_nome": "ARCOR",
   
            "industria_imagem": ""https://acbhGDK/IDOSJU889.jpg"",
               
"marcas": [
                    {
                       
"id": 1352,
                       
"nome": "7 BELO",
                       
"imagem": ""https://acbhGDK/IDOSJU889.jpg"",
                       
"total_produtos": 24
                    }
                ],
               
"sum": "328"
            }
        ]
    }
}

Elementos da Resposta

success: Indica o status da requisição.
  Tipo: String.

message: Mensagem da requisição.
  Tipo: String.

industria_id: Identificador (ID) da indústria responsável pelo produto.
  Tipo: Integer.

industria_nome: Descrição da indústria responsável pelo produto.
  Tipo: String

industria_imagem: URL da imagem da indústria.

  Tipo: String.
marcas: Lista das marcas dos produtos vinculados a indústria.
  Tipo: Array de objetos JSON.

id: Identificador (ID) da marca.
  Tipo: Integer.

nome: Descrição da marca.
  Tipo: String.

imagem
URL da imagem da marca.
  Tipo: String

total_produtos: Quantidade total de produtos vinculados à marca..

Tipo: String.

sum:Quantidade total de produtos vinculados a indústria.

Tipo: String.

GET Portfólio de Produtos - Grupos

Endpoint para consulta das indústrias e marcas cadastrados no portfólio do vendedor.

Endpoint GET

URL

Parâmetros da requisição

Informe os parâmetros abaixo para realizar a consulta do portfólio.

tipo: Tipo de cadastro do portfólio.

  • Valores permitidos:

    • manual – cadastro por indústria ou marca

    • importacao – cadastro por produto

  • Parâmetro  não obrigatório.

pagina: Página a ser exibida.

  • Parâmetro  não obrigatório.

por_pagina: Quantidade de registros a serem exibidas por página. 

  • Parâmetro  não obrigatório.

Exemplo

Sintaxe da Resposta

Se os parâmetros forem informados corretamente, o endpoint retornará os dados  com status code 200.
Exemplo de retorno:

   {
     
"status": "sucesso",
     
"mensagem": "Listagem de grupos realizada com sucesso!",
     
"data": [
        {
         
"id": 123,
          "nome": "Grupo Produtos base",
         
"skus": 6640,
       
  "imagem": "https://static.com/1737049317102-49b8-9fb7-12f6a1.png",
       
  "created_at": "2025-01-01T00:00:00.0",
     
    "modified_at": "2025-01-01T00:00:00.0",
         
"tipo_criacao": "importacao",
         
"todas_categorias": false,
     
    "todas_industrias": false
        }
      ],
     
"total": 73,
     
"paginação": {
       
"pagina_atual": 1,
       
"por_pagina": 1
      }
    }

Elementos da Resposta

status: Indica o status da requisição.
  Tipo: String.

mensagem: Mensagem da requisição.
  Tipo: String.

id: Identificador (ID) do grupo de portfólio.
  Tipo: Integer.

nome: Descrição do grupo.
  Tipo: String.

skus: Quantidade de produtos vinculados ao grupo.

  Tipo: String.
imagem: URL da imagem do grupo.
  Tipo: String.

created_at: Data de criação do grupo.
  Tipo: Datetime.

modified_at: Data de modificação do grupo.
  Tipo: Datetime.

tipo_criacao
Tipo do cadastro do portfólio.
  Tipo: String

todas_categorias: Indica se o grupo abrange todas as categorias.

Tipo: booleano.

todas_industrias:Indica se o grupo abrange todas as indústrias.

Tipo: booleano.

total: Quantidade total de registros retornados na requisição.

Tipo: String.

paginacao:Informações da paginação.

Tipo: objeto (JSON).

pagina_atual: Número da página atual retornada na requisição.

Tipo: Integer.

por_pagina:Quantidade de registros por página retornada na requisição.

Tipo: Integer.

GET Portfólio de Produtos

Endpoint para consulta dos produtos cadastrados no portfólio do vendedor.

Endpoint GET

URL

Parâmetros da requisição

Informe os parâmetros abaixo para realizar a consulta do portfólio.

email: Endereço de e-mail do vendedor.

  • Parâmetro obrigatório.

ean_ou_dun: EAN ou DUN do produto.

  • Parâmetro não obrigatório.

produto_nome: Nome do produto. É possível informar apenas parte da descrição, e serão retornados todos os produtos que contenham a palavra informada. Exemplo: Arroz

  • Parâmetro não obrigatório.

industria_id: Identificador(ID) da indústria do produto na Yandeh.

  • Parâmetro  não obrigatório.

marca_id: Identificador(ID) da marca do produto na Yandeh.

  • Parâmetro  não obrigatório.

pagina: Página a ser exibida.

  • Página inicial e default 1

  • Parâmetro não obrigatório. 

por_pagina: Quantidade de registros a serem exibidas por página. 

  • Default 50 registros por página.

  • Máxima de 100 conciliações por página permitida.

  • Parâmetro não obrigatório.

Exemplo

Sintaxe da Resposta

Se os parâmetros forem informados corretamente, o endpoint retornará os dados  com status code 200.
Exemplo de retorno:

{
    "
status": "sucesso",
    "
mensagem": "Produtos encontrados com sucesso!",
    "
data": {
        "produtos": [
            {
                "
marca_id": 150,
                "
ean_ou_dun": "17898409950002",
                "
marca_nome": "OVOMALTINE",
                "
industria_id": 9698,
                "
produto_nome": "ACHOCOLATADO PÓ OVOMALTINE CHOCOMALTINE ",
                "
industria_nome": "AB MAURI",
                "
pallet_multiplo_dun": 0
            },
            {
                "
marca_id": 150,
                "
ean_ou_dun": "7898409950100",
                "
marca_nome": "OVOMALTINE",
                "
industria_id": 9698,
                "
produto_nome": "ACHOCOLATADO PÓ OVOMALTINE FLOCOS ",
                "
industria_nome": "AB MAURI",
                "
pallet_multiplo_dun": 2
            }
        ],
        "paginacao": {
            "
pagina_atual": 1,
            "
por_pagina": 50,
            "
total_itens": 1015,
            "
total_paginas": 21
        }
    }
}

Elementos da Resposta

status: Indica o status da requisição.
  Tipo: String.

mensagem: Mensagem da requisição.
  Tipo: String.

produtos:Lista dos produtos cadastrados no portfólio do vendedor.
  Tipo: Array de objetos.

marca_id: Identificador (ID) da marca do produto.
  Tipo: Integer

ean_ou_dun: EAN ou DUN do produto.

  Tipo: String.
marca_nome: Nome da marca do produto.
  Tipo: String.

industria_id: Identificador (ID) da indústria responsável pelo produto.
  Tipo: Integer.

produto_nome: Descrição do produto.
  Tipo: String.

industria_nome: Nome da indústria responsável pelo produto.
  Tipo: String.

pallet_multiplo_dun: Múltiplo de venda para comercialização da embalagem.

Tipo: Integer.

pagina_atual: Número da página atual no retorno da requisição.

Tipo: Integer.

por_pagina: Número de registros retornados por página na requisição.

Tipo: Integer.

total_itens: Total de itens disponíveis na requisição.

Tipo: Integer.

total_paginas: Total de páginas disponíveis na requisição.

Tipo: Integer.

Respostas para erros

400 Bad Request - Parâmetro email não informado.

{

    "mensagem": "O parâmetro \"email\" é obrigatório.",

    "correlationId": "cf54fc01-5812-4939-83e4-dd6ee9f12dbc"

}

400 Bad Request - Informado no parâmetro por_pagina uma quantidade acima de 100 registros.

{

    "mensagem": "O parâmetro \"por_pagina\" deve ser um número entre 1 e 100.",

    "correlationId": "bc62bacf-ef39-4b44-ba0e-e7ed59b30e9e"

}

POST Portfólio de Produtos

Endpoint responsável pela criação do portfólio de produtos.

 

Existem duas opções de cadastro disponíveis: por importação, que permite cadastrar o portfólio por produtos (EAN ou DUN), e de forma manual, que permite a criação do portfólio com base em indústrias, marcas e categorias.

Cadastro por importação

Endpoint POST

URL

Sintaxe da Requisição

  1. Tipo de requisição: POST.

  2. Cabeçalho (Headers):

    • Content-Type: application/json

    • Authorization: Bearer <token>

  3. Corpo da requisição:

Envio do JSON como exemplo abaixo:

{
  "
grupos": [
      {
          "
nome": "Grupo A",
          "
imagem": "https://example.com/image.jpg",
          "
produtos": [
              "7891097102967",
              "7896001001152"
          ]
      }
  ]
}

Exemplo

curl --location 'https://yandeh-seller-integration.yandeh.com.br/portfolio-produtos/importacao' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer ...' \
--data '{
   "grupos": [
       {
           "nome": "Grupo A",
           "imagem": "https://example.com/image.jpg",
           "produtos": [
               "7891097102967",
               "7896001001152"
           ]
       }
   ]
}'

Elementos da Requisição

grupos: Lista de grupos a ser inserida.

  • Campo obrigatório.

  • Máximo de 500 grupos.

  Tipo: Lista de Json.

nome: Nome do grupo.

  • Campo obrigatório.

  • Máximo de 20 caracteres.

  • Valor único.

  Tipo: String.

imagem : URL da imagem do grupo. 

Tipo: String.
produtos: Lista de ean de produtos a serem adicionados no grupo de portfólio.

  • Campo obrigatório.

  • Produtos não encontrados serão ignorados.

Tipo: Lista de String.

Sintaxe da Resposta

Se os parâmetros forem informados corretamente, o endpoint retornará os dados com status code 200.
Exemplo de retorno:

{
   "success": true,
   "message": "ok",
   "resultados": [
       {
           "nome": "Grupo A",
           "sucesso": true,
           "grupoId": 123,
           "produtosAssociados": 2,
           "produtosIgnorados": 0
       }
   ],
   "totalProcessados": 1,
   "sucessos": 1,
   "falhas": 0,
   "gruposCriados": [
       123
   ]
}

207 Multi-Status  - Sucesso parcial.

{
   "success": true,
   "message": "Alguns grupos foram criados com sucesso",
   "resultados": [
       {
           "nome": "Grupo A",
           "sucesso": true,
           "grupoId": 125,
           "produtosAssociados": 2,
           "produtosIgnorados": 0
       },
       {
           "nome": "Grupo B",
           "sucesso": false,
           "erro": "Grupo com este nome já existe",
           "grupoId": null
       }
   ],
   "totalProcessados": 2,
   "sucessos": 1,
   "falhas": 1,
   "gruposCriados": [
       125
   ]
}

207 Multi-Status  - Sucesso com produtos ignorados.

{
   "success": true,
   "message": "Alguns grupos foram criados com sucesso",
   "resultados": [
       {
           "nome": "Grupo Mix",
           "sucesso": true,
           "grupoId": 126,
           "produtosAssociados": 1,
           "produtosIgnorados": 2,
           "erros": {
               "EAN duplicado": [
                   "7891097102967"
               ],
               "Produto não encontrado": [
                   "9999999999999"
               ]
           }
       },
       {
           "nome": "Grupo Vazio",
           "sucesso": false,
           "erro": "Nenhum produto válido encontrado",
           "grupoId": null,
           "erros": {
               "Produto não encontrado": [
                   "8888888888888"
               ]
           }
       }
   ],
   "totalProcessados": 2,
   "sucessos": 1,
   "falhas": 1,
   "gruposCriados": [
       126
   ]
}

Resposta para Erros

400 Bad Request  - Envio de grupos inválidos.

{
   "success": false,
   "message": "O grupo \" \" (índice 0) não será processado",
   "resultados": [
       {
           "nome": " ",
           "indice": 0,
           "sucesso": false,
           "erro": "O grupo \" \" (índice 0) não será processado",
           "campo": "Nome do grupo não pode ser vazio ou conter apenas espaços"
       }
   ],
   "totalProcessados": 1,
   "sucessos": 0,
   "falhas": 1
}

400 Bad Request - Multiplos grupos inválidos.

{
   "success": false,
   "message": "Nenhum grupo pôde ser criado",
   "resultados": [
       {
           "nome": "Grupo Err1",
           "sucesso": false,
           "erro": "Nenhum produto válido encontrado",
           "grupoId": null,
           "erros": {
               "Produto não encontrado": [
                   "9999999999999"
               ]
           }
       },
       {
           "nome": "Grupo Err2",
           "sucesso": false,
           "erro": "Nenhum produto válido encontrado",
           "grupoId": null,
           "erros": {
               "Produto não encontrado": [
                   "8888888888888"
               ]
           }
       }
   ],
   "totalProcessados": 2,
   "sucessos": 0,
   "falhas": 2,
   "gruposCriados": []
}

400 Bad Request  - Envio de nomes vazios.

{
   "success": false,
   "message": "O grupo \" \" (índice 0) não será processado",
   "resultados": [
       {
           "nome": " ",
           "indice": 0,
           "sucesso": false,
           "erro": "O grupo \" \" (índice 0) não será processado",
           "campo": "Nome do grupo não pode ser vazio ou conter apenas espaços"
       }
   ],
   "totalProcessados": 1,
   "sucessos": 0,
   "falhas": 1,
   "gruposCriados": []
}

400 Bad Request  - Erro de validação do schema.

{
   "success": false,
   "message": "Erro de validação",
   "statusCode": 400,
   "errors": [
       {
           "code": "too_big",
           "message": "Nome do grupo deve ter no máximo 20 caracteres",
           "path": [
               "grupos",
               0,
               "nome"
           ]
       },
       {
           "code": "too_small",
           "message": "Grupo deve ter pelo menos 1 produto",
           "path": [
               "grupos",
               0,
               "produtos"
           ]
       },
       {
           "code": "custom",
           "message": "URL da imagem inválida. Deve ser uma URL válida terminando em .jpg, .jpeg ou .png",
           "path": [
               "grupos",
               0,
               "imagem"
           ]
       },
       {
           "code": "too_big",
           "message": "Máximo de 500 grupos por requisição",
           "path": [
               "grupos"
           ]
       }
   ],
   "data": {}
}

Cadastro manual

Endpoint POST

URL

Sintaxe da Requisição

  1. Tipo de requisição: POST.

  2. Cabeçalho (Headers):

    • Content-Type: application/json

    • Authorization: Bearer <token>

  3. Corpo da requisição:

Envio do JSON como exemplo abaixo:

  {
     
"imagem": "http://www.image.com/url.jpg",
     
"nome": "Grupo Produtos diversos",
     
"todasIndustrias": false,
     
"todasCategorias": false,
     
"arvoreCategoria": 1,
     
"associacoes": [
        {
         
"industria": 1,
         
"marca": 2,
          "categoria": 3
        }
      ]
    }

Exemplo

curl --location 'https://yandeh-seller-integration.yandeh.com.br/portfolio-produtos/manual' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer ...' \
--data '   {
      "imagem": "http://www.image.com/url.jpg",
      "nome": "Grupo Produtos diversos",
      "todasIndustrias": false,
      "todasCategorias": false,
      "arvoreCategoria": 1,
      "associacoes": [
        {
          "industria": 2228,
          "marca": 3552,
          "categoria": 3
        }
      ]
    }'

Elementos da Requisição

imagem : URL da imagem do grupo. 

  • Campo obrigatório

Tipo: String.

nome: Nome do grupo.

  • Campo obrigatório.

  Tipo: String.
todasIndustrias: Indica se todas as indústrias devem ser incluídas no grupo de portfólio.​

  • Campo obrigatório.

Tipo: booleano (true ou false).
todasCategorias: Indica se todas as categorias devem ser incluídas no grupo de portfólio.​

  • Campo obrigatório.

Tipo: booleano (true ou false).

arvoreCategoria: Identificador (ID) da árvore de categoria.

  • Campo obrigatório.

Tipo: Integer.

associacoes: Lista de indústrias, marcas e categorias a serem adicionados no portfólio.

Tipo: array (lista) de objetos JSON.

industria: Identificador (ID) da indústria responsável pelos produtos.

  • Campo obrigatório.

Tipo: Integer.

marca: Identificador (ID) da marca dos produtos.

  • Campo obrigatório.

Tipo: Integer.

categoria: Identificador (ID) da categoria dos produtos.

  • Campo obrigatório.

Tipo: Integer.

Sintaxe da Resposta

Se os parâmetros forem informados corretamente, o endpoint retornará status code 200.
Exemplo de retorno:

{

    "status": "sucesso",

    "mensagem": "Dados cadastrados com sucesso!",

    "grupoId": 1262

}

Respostas para erros

400 Bad Request - Campos obrigatórios não informados no payload.

{

    "mensagem": "Há dados inválidos. Por favor, verifique e tente novamente.",

    "detalhes": [

        {

            "erros": [

                {

                    "campo": "nome",

                    "erro": "O campo \"nome\" é obrigatório e não pode estar vazio."

                }

            ]

        }

    ],

    "correlationId": "030a007f-d2fe-4d6b-8b73-6000b023681d"

}

{

    "mensagem": "Nome do grupo já existe",

    "detalhes": []

}

400 Bad Request - Nome do categoria informada já existe.

PUT Portfólio de Produtos

Endpoint responsável pela atualização do portfólio de produtos.

 

Existem duas opções de atualizações disponíveis: por importação, que permite atualizar o portfólio por produtos (EAN ou DUN), e de forma manual, ou a atualização do portfólio com base em indústrias, marcas e categorias.

Atualização por importação

Endpoint PUT

URL

Sintaxe da Requisição

  1. Tipo de requisição: PUT.

  2. Cabeçalho (Headers):

    • Content-Type: application/json

    • Authorization: Bearer <token>

  3. URL: O parâmetro {id_grupo} representa o identificador único do grupo que você deseja  atualizar. Ele deve ser substituído pelo ID real do grupo que foi previamente registrado na Yandeh.

  4. Corpo da requisição:

Envio do JSON como exemplo abaixo:

{
   
"grupos": [
       {
           
"id": 123,
           
"nome": "Grupo A Editado",
           
"imagem": "https://example.com/new-image.jpg",
           
"produtos": [
               {
                   
"ean": "7891097102967",
                   
"acao": "adicionar"
               },
               {
                   
"ean": "7896001001152",
                   
"acao": "remover"
               }
           ]
       },
       {
           
"id": 124,
           
"nome": "Grupo B Editado",
           
"imagem": "https://example.com/image2.jpg",
           
"produtos": [
               {
                   
"ean": "1234567890123",
                   
"acao": "adicionar"
               }
           ]
       }
   ]
}

Exemplo

curl --location --request PUT 'https://yandeh-seller-integration.yandeh.com.br/portfolio-produtos/importacao/1263' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer ...' \
--data '   {
   "grupos": [
       {
           "id": 123,
           "nome": "Grupo A Editado",
           "imagem": "https://example.com/new-image.jpg",
           "produtos": [
               {
                   "ean": "7891097102967",
                   "acao": "adicionar"
               },
               {
                   "ean": "7896001001152",
                   "acao": "remover"
               }
           ]
       },
       {
           "id": 124,
           "nome": "Grupo B Editado",
           "imagem": "https://example.com/image2.jpg",
           "produtos": [
               {
                   "ean": "1234567890123",
                   "acao": "adicionar"
               }
           ]
       }
   ]
}'

Elementos da Requisição

grupos: Lista de grupos.

  • Campo obrigatório.

  • Máxima de 500 grupos.

Tipo: Lista de JSON.

id: Id do grupo a ser modificado.

  • Campo obrigatório

Tipo: Integer.

nome: Nome do grupo.

  • Campo obrigatório.

  Tipo: String.

imagem: URL da imagem do grupo. 

  • Campo obrigatório

Tipo: String.
produtos: Lista de produtos a serem atualizados no grupo de portfólio.

Tipo: array (lista) de objetos JSON.
ean: Código ean ou dun do produto.

  • Campo obrigatório.
      Tipo: String.

acao: Define a ação a ser executada para o produto.

  • Ações permitidas: 

    • adicionar-  Inclui um novo produto no portfólio.

    • remover: Remove um produto do portfólio.

  • Campo obrigatório.

Tipo: String.

Sintaxe da Resposta

Se os parâmetros forem informados corretamente, o endpoint retornará status code 200.
Exemplo de retorno:

{
   "success": true,
   "message": "ok",
   "resultados": [
       {
           "id": 123,
           "nome": "Grupo A Editado",
           "sucesso": true,
           "produtosAdicionados": 1,
           "produtosRemovidos": 1,
           "produtosIgnorados": 0
       },
       {
           "id": 124,
           "nome": "Grupo B Editado",
           "sucesso": true,
           "produtosAdicionados": 1,
           "produtosRemovidos": 0,
           "produtosIgnorados": 0
       }
   ],
   "totalProcessados": 2,
   "sucessos": 2,
   "falhas": 0
}

207 Multi-Status  - Sucesso parcial.

{
   "success": true,
   "message": "Alguns grupos foram atualizados com sucesso",
   "resultados": [
       {
           "id": 123,
           "nome": "Grupo OK",
           "sucesso": true,
           "produtosAdicionados": 1,
           "produtosRemovidos": 0,
           "produtosIgnorados": 0
       },
       {
           "nome": "Grupo Não Existe",
           "indice": 1,
           "sucesso": false,
           "erro": "O grupo \"Grupo Não Existe\" (índice 1) não será processado",
           "campo": "Grupo com ID 999 não encontrado ou não pertence ao fornecedor"
       }
   ],
   "totalProcessados": 2,
   "sucessos": 1,
   "falhas": 1
}

207 Multi-Status  - Sucesso parcial com erros de validação.

{
   "success": true,
   "message": "Alguns grupos foram atualizados com sucesso",
   "resultados": [
       {
           "id": 123,
           "nome": "Grupo OK",
           "sucesso": true,
           "produtosAdicionados": 1,
           "produtosRemovidos": 0,
           "produtosIgnorados": 0
       },
       {
           "nome": "Grupo Inválido",
           "sucesso": false,
           "erro": "O grupo \"Grupo Inválido\" (índice 1) não será processado",
           "campo": "EAN 7891097102967 com campo ação 'adicsionar' incorreto: Ação deve ser \"adicionar\" ou \"remover\"",
           "indice": 1
       }
   ],
   "totalProcessados": 2,
   "sucessos": 1,
   "falhas": 1
}

207 Multi-Status  - Sucesso parcial com produtos ignorados.

{
   "success": true,
   "message": "Processamento parcial - alguns produtos foram ignorados",
   "resultados": [
       {
           "id": 125,
           "nome": "Grupo OK",
           "sucesso": true,
           "produtosAdicionados": 1,
           "produtosRemovidos": 1,
           "produtosIgnorados": 2,
           "erros": {
               "EAN duplicado": [
                   "7891097102967"
               ],
               "Produto não encontrado": [
                   "9999999999999"
               ]
           }
       }
   ],
   "totalProcessados": 1,
   "sucessos": 1,
   "falhas": 0
}

207 Multi-Status  - Sucesso parcial com todos os produtos ignorados.

{
   "success": true,
   "message": "Processamento parcial - alguns produtos foram ignorados",
   "resultados": [
       {
           "id": 126,
           "nome": "Grupo Sem Sucesso",
           "sucesso": false,
           "erro": "Nenhum produto foi processado com sucesso",
           "produtosAdicionados": 0,
           "produtosRemovidos": 0,
           "produtosIgnorados": 3,
           "erros": {
               "Produto não encontrado": [
                   "9999999999999",
                   "8888888888888",
                   "7777777777777"
               ]
           }
       }
   ],
   "totalProcessados": 1,
   "sucessos": 0,
   "falhas": 1
}

Resposta para Erros

400 Bad Request  - Envio de grupos inválidos com nomes vazios.

{
   "success": false,
   "message": "O grupo \" \" (índice 0) não será processado",
   "resultados": [
       {
           "nome": " ",
           "indice": 0,
           "sucesso": false,
           "erro": "O grupo \" \" (índice 0) não será processado",
           "campo": "Nome do grupo não pode ser vazio ou conter apenas espaços"
       }
   ],
   "totalProcessados": 1,
   "sucessos": 0,
   "falhas": 1
}

400 Bad Request  - Multiplos grupos inválidos.

{
   "success": false,
   "message": "O grupo \" \" (índice 0) não será processado",
   "resultados": [
       {
           "nome": " ",
           "indice": 0,
           "sucesso": false,
           "erro": "O grupo \" \" (índice 0) não será processado",
           "campo": "Nome do grupo não pode ser vazio ou conter apenas espaços"
       }
   ],
   "totalProcessados": 1,
   "sucessos": 0,
   "falhas": 1
}

400 Bad Request  - Erro de validação do schema.

{
   "success": false,
   "message": "Erro de validação",
   "statusCode": 400,
   "errors": [
       {
           "code": "invalid_type",
           "message": "Deve ser um número",
           "path": [
               "grupos",
               0,
               "id"
           ]
       },
       {
           "code": "too_big",
           "message": "Nome do grupo deve ter no máximo 20 caracteres",
           "path": [
               "grupos",
               1,
               "nome"
           ]
       }
   ],
   "data": {}
}

Cadastro manual

Endpoint PUT

URL

Sintaxe da Requisição

  1. Tipo de requisição: PUT.

  2. Cabeçalho (Headers):

    • Content-Type: application/json

    • Authorization: Bearer <token>

  3. URL: O parâmetro {id_grupo} representa o identificador único do grupo que você deseja  atualizar. Ele deve ser substituído pelo ID real do grupo que foi previamente registrado na Yandeh.

  4. Corpo da requisição:

Envio do JSON como exemplo abaixo:

  {
     
"imagem": "http://www.image.com/url.jpg",
     
"nome": "Grupo Produtos diversos",
     
"todasIndustrias": false,
     
"todasCategorias": false,
     
"arvoreCategoria": 1,
     
"associacoes": [
        {
         
"industria": 1,
         
"marca": 2,
          "categoria": 3
        }
      ]
    }

Exemplo

curl --location --request PUT 'https://yandeh-seller-integration.yandeh.com.br/portfolio-produtos/manual/1264' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer ...' \
--data '   {
      "imagem": "http://www.image.com/url.jpg",
      "nome": "Grupo Produtos diversos",
      "todasIndustrias": false,
      "todasCategorias": false,
      "arvoreCategoria": 1,
      "associacoes": [
        {
          "industria": 2228,
          "marca": 3552,
          "categoria": 3
        }
      ]
    }'

Elementos da Requisição

imagem : URL da imagem do grupo. 

  • Campo obrigatório

Tipo: String.

nome: Nome do grupo.

  • Campo obrigatório.

  Tipo: String.
todasIndustrias: Indica se todas as indústrias devem ser atualizadas no grupo de portfólio.​

  • Campo obrigatório.

Tipo: booleano (true ou false).
todasCategorias: Indica se todas as categorias devem ser atualizadas no grupo de portfólio.​

  • Campo obrigatório.

Tipo: booleano (true ou false).

arvoreCategoria: Identificador (ID) da árvore de categoria.

  • Campo obrigatório.

Tipo: Integer.

associacoes: Lista de indústrias, marcas e categorias a serem atualizadas no portfólio.

Tipo: array (lista) de objetos JSON.

industria: Identificador (ID) da indústria responsável pelos produtos.

  • Campo obrigatório.

Tipo: Integer.

marca: Identificador (ID) da marca dos produtos.

  • Campo obrigatório.

Tipo: Integer.

categoria: Identificador (ID) da categoria dos produtos.

  • Campo obrigatório.

Tipo: Integer.

Sintaxe da Resposta

Se os parâmetros forem informados corretamente, o endpoint retornará status code 200.
Exemplo de retorno:

{

    "status": "sucesso",

    "mensagem": "Dados atualizados com sucesso!"

}

Respostas para erros

400 Bad Request - Campos obrigatórios não informados no payload.

{

    "mensagem": "Há dados inválidos. Por favor, verifique e tente novamente.",

    "detalhes": [

        {

            "erros": [

                {

                    "campo": "nome",

                    "erro": "O campo \"nome\" é obrigatório e não pode estar vazio."

                }

            ]

        }

    ],

    "correlationId": "030a007f-d2fe-4d6b-8b73-6000b023681d"

}

{

    "mensagem": "Nome do grupo já existe",

    "detalhes": []

}

400 Bad Request - Nome do categoria informada  não pertence ao ID informado.

DELETE Portfólio de Produtos

Endpoint responsável por excluir um portfólio de produtos.

Endpoint DELETE

URL

Sintaxe da Requisição

  1. Tipo de requisição: DELETE.

  2. Cabeçalho (Headers):

    • Content-Type: application/json

    • Authorization: Bearer <token>

  3. U: O parâmetro {id_grupo} representa o identificador único do grupo que você deseja  remover. Ele deve ser substituído pelo ID real do grupo que foi previamente registrado na Yandeh.

Exemplo

curl --location --request DELETE 'https://yandeh-seller-integration.yandeh.com.br/portfolio-produtos/1264' \
--header 'Authorization: Bearer ...'

Sintaxe da Resposta

Se os parâmetros forem informados corretamente, o endpoint retornará status code 200.
Exemplo de retorno:

{

    "status": "sucesso",

    "mensagem": "Dados removidos com sucesso!"

}

Respostas para erros

400 Bad Request - ID do grupo informado inexistente.

{

    "mensagem": "Não foi possível remover esse item. Verifique os dados e tente novamente."

}

GET Associação de Portfólio ao consultor

Endpoint para consulta dos grupos de portfólios associados ao vendedor.

Endpoint GET

URL

Parâmetros da requisição

Informe os parâmetros abaixo para realizar a consulta do portfólio.

consultorId: Identificador (ID) do consultor.

  • Parâmetro obrigatório.

pagina: Página a ser exibida.

  • Página inicial 1.

  • Parâmetro obrigatório.

por_pagina: Quantidade de registros a serem exibidas por página. 

  • Default de 100 registros por página.

  • Parâmetro obrigatório.

Exemplo

Sintaxe da Resposta

Se os parâmetros forem informados corretamente, o endpoint retornará os dados  com status code 200.
Exemplo de retorno:

{
   
"status": "sucesso",
   
"mensagem": "Listagem de associações de consultor com portfólio de produtos realizada com sucesso!",
   
"data": [
        {
         
  "imagem": "https://static-asd-stg.dev.com.br/produtos/1756308.png",
       
    "nome": "Produtos diversos",
     
      "tipo": "grupo_produto",
           
"agrupamento_produto_id": 1227,
           
"id": 1042
        }
    ],
 
  "total": 1
}

Elementos da Resposta

status: Indica o status da requisição.
  Tipo: String.

mensagem: Mensagem da requisição.
  Tipo: String.

data:Lista dos grupos cadastrados no portfólio do vendedor.
  Tipo: Array de objetos.

imagem: URL da imagem do grupo.
  Tipo:
String.
nome: Nome do grupo do portfólio.
  Tipo: String.
tipo: Classificação do grupo.
  Tipo: String.

agrupamento_produto_id: Identificador (ID) do agrupamento de produtos.
  Tipo: Integer.

Id: Identificador (ID) do grupo.
  Tipo: Integer.

total: Total de registros da requisição.
  Tipo: Integer.

Respostas para erros

404 Not Found - Informar um ID inexistente de consultor.

{

    "mensagem": "Consultor não encontrado.",

    "detalhes": []

}

POST Associação de Portfólio ao consultor

Endpoint para cadastrar a associação de grupos de portfólio a consultores.

Endpoint POST

URL

Sintaxe da Requisição

  1. Tipo de requisição: POST.

  2. Cabeçalho (Headers):

    • Content-Type: application/json

    • Authorization: Bearer <token>.

  3. Corpo da requisição:

Envio do JSON como exemplo abaixo:

 {
     
"consultorId": 1234,
     
"grupoProdutos": [
        12345
      ]
    }

Exemplo

curl --location 'https://yandeh-seller-integration.yandeh.com.br/portfolio-produtos/associacao/consultor' \
--header 'Authorization: Bearer ...' \
--header 'Content-Type: application/json' \
--data '{
   "consultorId": 1234,
   "grupoProdutos": [
       1234
   ]
}'

Elementos da Requisição

consultorIdIdentificador (ID) do consultor.

  • Campo obrigatório

Tipo: Integer.

grupoProdutos:  Identificador (ID) do grupo.

  • Campo obrigatório.

  Tipo: Integer.

Sintaxe da Resposta

Se os parâmetros forem informados corretamente, o endpoint retornará status code 200.
Exemplo de retorno:

{
"status": "sucesso",
"mensagem": "Criação de associações de consultor com portfólio de produtos realizada com sucesso!",
"data": {}
}

Respostas para erros

404 Not Found - Informar um ID inexistente de consultor.

{
"mensagem": "Consultor não encontrado.",
"detalhes": []
}

404 Not Found - Informar um grupo de produtos inexistente.

{
"mensagem": "Agrupamento de Produtos com o id 12345 não encontrado",
"detalhes": []
}

DELETE Associações de Portfólio de Produtos com Consultor

Última Atualização: 06/02/2025

Este endpoint é utilizado para remover as associações de portfólios de produtos por consultor.

Endpoint DELETE

Parâmetros da requisição

Ex: /associacao/{associacaoId}/consultor/{consultorId}

*associacaoId: Integer.

Id da associação.

*consultorId: Integer

Id do consultor.

Sintaxe da Resposta

Caso ocorra tudo certo com a requisição e retorne o status code 200, essa será a resposta que você receberá:

status

Indica se a requisição foi bem-sucedida.

Tipo: String.

mensagem

Descrição da operação realizada.

Tipo: String.

Respostas para erros

Caso ocorra algum erro durante a requisição, os possíveis erros são:

404 Not Found

Caso o id do consultor não seja encontrado na base:

404 Not Found

Caso o portfólio não seja localizado na base:

POST Upload de Imagem

Última Atualização: 03/02/2025

Endpoint responsável por subir imagens para serem utilizadas na criação de grupos de produtos ou campanhas.

Endpoint POST

Sintaxe da Requisição

Para que a requisição do método POST seja bem-sucedida, é necessário que

seja enviada uma requisição do tipo "multipart/form-data", com uma imagem para o produto.

No header deve ser informado  o content-type e a Authorization: Exemplo:

No body, informar o form-data com os conteúdos:

Imagem

Imagem nos formatos PNG, JPEG ou JPG (Mín.: 150x150 px; Máx.: 500 x 500 px).

Tipo: File.

Sintaxe da Resposta

Caso ocorra tudo certo com a requisição e retorne o status code 200, você receberá um retorno parecido com esse:

status

Indica se a requisição foi bem-sucedida.

Tipo: String.

mensagem

Descrição da operação realizada.

Tipo: String.

data

Dados do retorno.

Tipo: Objeto.

url

URL de acesso à imagem.

Tipo: String.

Respostas para erros

Caso ocorra algum erro durante a requisição, os possíveis erros são:

400 Bad Request

Caso o formato do arquivo seja diferente de "png", "jpeg" e "jpg":

400 Bad Request

Caso a imagem possua dimensões inadequadas:

bottom of page