VenddorDocumentação API
API atualAPI legada
Guia rápidoReferência completa
Carregando índice…
API atual/Referência completa/Tema e layout

Menus de navegação

Lê um menu da loja pela posição (cabeçalho, rodapé, lateral) ou pelo id, com os itens já organizados em árvore.

Um menu é uma lista de links da loja (Feminino, Infantil, Lançamentos...) que o lojista monta no painel. Cada menu tem uma posição (location), que diz onde ele aparece, e uma lista de itens, que podem ter itens filhos (submenus). Estas duas rotas públicas devolvem o menu pronto, só com os itens ativos, já em árvore.

Menu de uma posição

GET/api/v1/storefront/navigation/{location}Pública

Consulta o menu de um local

Devolve o menu ativo da posição pedida. Se houver mais de um menu ativo na mesma posição, a API devolve sempre o primeiro em ordem alfabética do nome, de forma estável. É esse o menu que o painel marca como "servido" ao lojista, mas o campo is_served sempre vem false nesta rota pública, então não o use.

Posições válidas: header, header_account, footer, footer_about, footer_help, footer_contact, footer_brands, footer_policies, footer_shop e sidebar. Uma posição fora dessa lista só é aceita se existir um menu com esse nome de posição na loja; senão responde 400. Sem menu ativo na posição, responde 200 com menu: null e items vazio.

Parâmetros de caminho

locationstringobrigatório
headerheader_accountfooterfooter_aboutfooter_helpfooter_contactfooter_brandsfooter_policiesfooter_shopsidebar
Posição do menu.

Exemplo de requisição

Resposta

200Menu com itens
200Posição sem menu

Campos da resposta

iduuid
Id do menu. Ausente quando não há menu na posição.
namestring
Nome do menu no painel.
locationstring
Posição do menu.
statusstring
A (ativo). Só menus ativos são devolvidos.
is_servedboolean
Sempre false nesta rota pública. Só tem significado no painel.
created_atstring
Criação do menu, RFC 3339.
updated_atstring
Última alteração, RFC 3339.
itemsarray
Itens ativos de primeiro nível, ordenados por position. Submenus ficam em children.
items[].iduuid
Id do item.
items[].menu_iduuid
Menu a que o item pertence.
items[].parent_item_iduuid
Item pai. Ausente nos itens de primeiro nível.
items[].labelstring
Texto do link.
items[].urlstring
Destino. Pode faltar em itens ligados a uma categoria, página ou produto; nesse caso use reference_id.
items[].item_typestring
categorypageproductcustom_link
Tipo do destino.
items[].reference_iduuid
Id da categoria, página ou produto referenciado, quando item_type não é custom_link.
items[].positioninteger
Ordem do item entre os irmãos. Pode haver lacunas (0, 2, 3...).
items[].open_in_new_tabboolean
O link deve abrir em outra aba.
items[].css_classstring
Classe de CSS opcional para o item.
items[].statusstring
A (ativo).
items[].childrenarray
Subitens, no mesmo formato. Ausente quando não há.

Erros

StatusQuandoCorpo
400Posição inexistente{"error":"invalid location","detail":"invalid menu location: main"}
404Loja não identificada{"error":"tenant not found","message":"could not resolve storefront from request"}
500Falha ao ler{"error":"failed to get navigation","detail":"..."}
Dois formatos de resposta vazia

Posição válida sem menu devolve {"menu": null, "items": []}, sem os campos id e name. Código que lê menu.id direto quebra nesse caso: leia sempre items e trate items vazio como "sem menu".

Menu por id

GET/api/v1/storefront/navigation-menu/{id}Pública

Consulta um menu pelo id

Mesma resposta, mas buscando o menu por id em vez de posição. Serve para blocos do layout (como uma coluna do rodapé) que o lojista ligou a um menu específico. Só devolve menu ativo; id que não existe ou de menu inativo responde 200 com {"menu": null, "items": []}.

Parâmetros de caminho

iduuidobrigatório
Id do menu (campo id de uma resposta de menu). Um valor que não é UUID responde 500.

Exemplo de requisição

Resposta

200Menu com itens

Os campos são os mesmos de Menu de uma posição, aqui encurtados.

Erros

StatusQuandoCorpo
500id que não é UUID{"error":"failed to get menu","detail":"o valor \"nope\" não é um uuid válido. ..."}
500Falha ao ler{"error":"failed to get menu","detail":"..."}

O detail do 500 por id inválido é uma frase em português, como o servidor devolve.

Veja também

  • Layouts de página
  • Aparência, filtros e busca
  • Visão geral de tema e layout
Anterior
Construtor de temas e prévia
Próxima
Idiomas e localidades
Nesta página
  • Menu de uma posição
  • Exemplo de requisição
  • Resposta
  • Erros
  • Menu por id
  • Exemplo de requisição
  • Resposta
  • Erros
  • Veja também
bash
curl "$BASE_URL/api/v1/storefront/navigation/header"
bash
curl "$BASE_URL/api/v1/storefront/navigation-menu/b723eb99-ca29-4c4b-8b8a-7fbc0a9c219d"
json
{
  "id": "b723eb99-ca29-4c4b-8b8a-7fbc0a9c219d",
  "name": "Menu Home",
  "location": "header",
  "status": "A",
  "created_at": "2026-04-07T02:45:34.115783Z",
  "updated_at": "2026-06-18T12:29:32.465381Z",
  "is_served": false,
  "items": [
    {
      "id": "501f1e92-26eb-4ced-add2-2b1cdea77cbd",
      "menu_id": "b723eb99-ca29-4c4b-8b8a-7fbc0a9c219d",
      "label": "Feminino",
      "url": "/feminino",
      "item_type": "custom_link",
      "position": 0,
      "open_in_new_tab": false,
      "status": "A",
      "created_at": "2026-04-07T02:45:34.121123Z",
      "updated_at": "2026-04-07T02:45:34.121123Z"
    },
    {
      "id": "4a9c0d08-af2c-487c-8494-af46e9f67d63",
      "menu_id": "b723eb99-ca29-4c4b-8b8a-7fbc0a9c219d",
      "label": "Coleções",
      "url": "/colecoes",
      "item_type": "custom_link",
      "position": 3,
      "open_in_new_tab": false,
      "status": "A",
      "created_at": "2026-04-07T02:45:34.13228Z",
      "updated_at": "2026-04-07T02:45:34.13228Z"
    }
  ]
}
json
{ "menu": null, "items": [] }
json
{
  "id": "b723eb99-ca29-4c4b-8b8a-7fbc0a9c219d",
  "name": "Menu Home",
  "location": "header",
  "status": "A",
  "is_served": false,
  "items": [
    { "id": "501f1e92-26eb-4ced-add2-2b1cdea77cbd", "label": "Feminino", "url": "/feminino", "item_type": "custom_link", "position": 0, "open_in_new_tab": false, "status": "A" }
  ]
}