Skip to content

Documentação de Menus

Visão Geral

O menu é responsável por estruturar a navegação da loja, organizando links e acessos para as principais áreas da plataforma 🧭.

Por meio dos menus, é possível direcionar usuários para categorias, páginas, marcas, vitrines ou outras seções estratégicas, facilitando a descoberta de conteúdos e produtos.

Cada menu pode conter múltiplos itens de navegação, permitindo construir estruturas simples ou hierarquias mais completas, conforme a necessidade da loja.

Além disso, os menus podem ser vinculados a localizações específicas, possibilitando que diferentes menus sejam exibidos em áreas distintas da interface, como cabeçalho, rodapé ou menus laterais.

Entidades Relacionadas

Itens de Menu

Os itens de menu representam os elementos individuais de navegação dentro de um menu.

Cada item define o rótulo exibido ao usuário e o destino do link, podendo apontar para diferentes áreas da loja ou conteúdos específicos.

Essa estrutura permite organizar a navegação de forma flexível, criando desde menus simples até estruturas mais complexas de navegação.

Localização

O menu pode estar vinculado a uma localização específica.

As localizações são gerenciadas pelo frontend e permitem retornar um conjunto de entidades com base no local informado, determinando onde o menu deve ser exibido na interface.

Para mais informações sobre localizações, clique [aqui]({{ MAIN_URL }}/).

Cadastra itens de menu

POST /template/menus/{menuId}/items

Cadastra itens em um menu selecionado

Descrição

Este endpoint é responsável por cadastrar itens em um menu, que deve ser identificado pelo ID informado na URL da API.

Os itens cadastrados representam links ou entradas de navegação, podendo direcionar para páginas, categorias ou outras áreas da loja.

Com isso, é possível estruturar e personalizar a navegação do menu, facilitando o acesso dos usuários às principais seções da plataforma.

Tipo de Vínculo (type)

O campo type define o conteúdo ao qual o item estará vinculado e pode assumir os valores:

product, category, brand, page ou custom.

Essa definição impacta diretamente as validações da requisição, pois o endpoint aplica regras condicionais (required_if):

  • product → obrigatório informar productId
  • category → obrigatório informar productCategoryId
  • brand → obrigatório informar productBrandId
  • page → obrigatório informar productPageId
  • custom → obrigatório informar customUrl

Os demais campos que não correspondem ao type informado não devem ser enviados.

Estrutura Hierárquica

O endpoint permite criar menus com múltiplos níveis. Para vincular o item como submenu de outro item existente, deve ser informado o campo templateMenuItemId com o ID do item pai.

Se esse campo for nulo ou não for informado, o item será criado como item de primeiro nível no menu.

Essa estrutura possibilita desde menus simples até composições mais complexas com múltiplos níveis de navegação.

Parâmetros

Headers Obrigatórios

HeaderValorDescrição
Content-Typeapplication/jsonO body definirá o item que será cadastrado
AuthorizationBearer {userToken}Token de autenticação

Parâmetros da URL

ParâmetroTipoObrigatórioDescrição
menuIdintegerSimIdentificador do menu que o item deve ser associado

Parâmetros do Corpo

ParâmetroTipoObrigatórioDescrição
templateMenuItemIdinteger✅Identificador de outro item de menu, para definir uma hierarquia
activeboolean✅Este campo irá definir se o item estará ativo ou inativo no menu
titlestring✅Titulo do item do menu (max 100 caracteres)
typestring✅Tipo do item do menu (product, category, brand, page, custom)
productIdintegerObrigatório apenas quando o type for "product"Identificador do produto que deve ser um dos links no menu
productCategoryIdintegerObrigatório apenas quando o type for "category"Identificador da categoria que deve ser um dos links no menu
productBrandIdintegerObrigatório apenas quando o type for "brand"Identificador da marca que deve ser um dos links no menu
productPageIdintegerObrigatório apenas quando o type for "page"Identificador da página que deve ser um dos links no menu
customUrlstringObrigatório apenas quando o type for "custom"Determina um link específico interno ou externo que o item de menu deve direcionar
highlightboolean✅Determina se o item de menu deve ser destacado visualmente em relação aos demais itens
targetstring✅Define onde o link do item de menu será aberto no navegador

Exemplo de Requisição

1curl --request POST \
2 --url {{MAIN_URL}}/template/menus/{menuId}/items \
3 --header "Authorization: Bearer userToken" \
4 --data '{
5 "templateMenuItemId": null,
6 "active": true,
7 "title": "Uappi",
8 "type": "brand",
9 "productBrandId": 1,
10 "highlight": true,
11 "target": "_blank"
12 }'

✅ Resposta de Sucesso

HTTP Status: 200 OK

1{
2 "id": 1,
3 "templateMenuItemId": 0,
4 "active": true,
5 "title": "Titulo de item do menu",
6 "type": "brand",
7 "productId": null,
8 "productCategoryId": null,
9 "productBrandId": 1,
10 "productPageId": null,
11 "image1": "",
12 "image2": "",
13 "highlight": true,
14 "order": 0,
15 "url": "",
16 "target": "_blank",
17 "bannerGroups": [],
18 "items": []
19}

⚠️ Possíveis erros:

Atenção: a seguir estão destacados os principais erros que podem ocorrer neste endpoint.

Os cenários descritos representam os erros mais relevantes do contexto atual, servindo como referência para entendimento e tratamento das falhas.

Código InternoCódigo HttpDescrição
UAPPI_STORE_MENU_NOT_FOUND404O menu solicitado não foi encontrado.
UAPPI_STORE_MENU_ITEM_FOUND404O item de menu solicitado não foi encontrado.
UAPPI_STORE_PRODUCT_NOT_FOUND404O produto solicitado não foi encontrado.
UAPPI_STORE_BRAND_NOT_FOUND404A marca solicitada não foi encontrada.
UAPPI_STORE_CATEGORY_NOT_FOUND404A categoria solicitada não foi encontrada.
UAPPI_STORE_PAGE_NOT_FOUND404
A página solicitada não foi encontrada.

Atualização de um item de menu

PUT /template/menus/{menuId}/items/{menuItemId}

Possibilita o lojista atualizar os itens de um menu para ajustar links e a navegação

Descrição

Este endpoint é responsável por atualizar itens de um menu existente ✏️.

Tanto o menu quanto o item que será atualizado devem ser identificados pelos respectivos IDs informados na URL da API, garantindo que a alteração seja aplicada ao registro correto.

Por meio dessa rota, é possível ajustar as configurações do item de menu, como rótulo, destino do link ou demais propriedades relacionadas à navegação.

Isso permite manter a estrutura do menu atualizada e alinhada à organização da loja 🧭.

Tipo de Vínculo (type)

O campo type define o conteúdo ao qual o item estará vinculado e pode assumir os valores:

product, category, brand, page ou custom.

Essa definição impacta diretamente as validações da requisição, pois o endpoint aplica regras condicionais (required_if):

  • product → obrigatório informar productId
  • category → obrigatório informar productCategoryId
  • brand → obrigatório informar productBrandId
  • page → obrigatório informar productPageId
  • custom → obrigatório informar customUrl

Os demais campos que não correspondem ao type informado não devem ser enviados.

Estrutura Hierárquica

O endpoint permite criar menus com múltiplos níveis. Para vincular o item como submenu de outro item existente, deve ser informado o campo templateMenuItemId com o ID do item pai.

Se esse campo for nulo ou não for informado, o item será criado como item de primeiro nível no menu.

Essa estrutura possibilita desde menus simples até composições mais complexas com múltiplos níveis de navegação.

Parâmetros

Headers Obrigatórios

HeaderValorDescrição
Content-Typeapplication/jsonO body definirá o item que será cadastrado
AuthorizationBearer {userToken}Token de autenticação

Parâmetros da URL

ParâmetroTipoObrigatórioDescrição
menuIdintegerSimIdentificador do menu ao qual o item pertence
menuItemIdintegerSimIdentificador do item de menu que deve ser atualizado

Parâmetros do Corpo

ParâmetroTipoObrigatórioDescrição
templateMenuItemIdinteger✅Identificador de outro item de menu, para definir uma hierarquia
activeboolean✅Este campo irá definir se o item estará ativo ou inativo no menu
titlestring✅Titulo do item do menu (max 100 caracteres)
typestring✅Tipo do item do menu (product, category, brand, page, custom)
productIdintegerObrigatório apenas quando o type for "product"Identificador do produto que deve ser um dos links no menu
productCategoryIdintegerObrigatório apenas quando o type for "category"Identificador da categoria que deve ser um dos links no menu
productBrandIdintegerObrigatório apenas quando o type for "brand"Identificador da marca que deve ser um dos links no menu
productPageIdintegerObrigatório apenas quando o type for "page"Identificador da página que deve ser um dos links no menu
customUrlstringObrigatório apenas quando o type for "custom"Determina um link específico interno ou externo que o item de menu deve direcionar
highlightboolean✅Determina se o item de menu deve ser destacado visualmente em relação aos demais itens
targetstring✅Define onde o link do item de menu será aberto no navegador

Exemplo de Requisição

1curl --request PUT \
2 --url {{MAIN_URL}}/template/menus/{menuId}/items/{menuItemId} \
3 --header "Authorization: Bearer userToken" \
4 --data '{
5 "templateMenuItemId": null,
6 "active": true,
7 "title": "Uappi",
8 "type": "brand",
9 "productBrandId": 1,
10 "highlight": true,
11 "target": "_blank"
12 }'

✅ Resposta de Sucesso

HTTP Status: 200 OK

1{
2 "id": 1,
3 "templateMenuItemId": 0,
4 "active": false,
5 "title": "Whey protein",
6 "type": "brand",
7 "productId": null,
8 "productCategoryId": null,
9 "productBrandId": 1,
10 "productPageId": null,
11 "image1": "",
12 "image2": "",
13 "highlight": true,
14 "order": 0,
15 "url": "",
16 "target": "_blank",
17 "bannerGroups": [],
18 "items": []
19}

⚠️ Possíveis erros:

Atenção: a seguir estão destacados os principais erros que podem ocorrer neste endpoint.

Os cenários descritos representam os erros mais relevantes do contexto atual, servindo como referência para entendimento e tratamento das falhas.

Código InternoCódigo HttpDescrição
UAPPI_STORE_MENU_NOT_FOUND404O menu solicitado não foi encontrado.
UAPPI_STORE_MENU_ITEM_FOUND404O item de menu solicitado não foi encontrado.
UAPPI_STORE_SAME_MENU_ITEM_PARENT_MENU_ITEM400O item de menu atual e o item de menu pai não podem ser o mesmo.
UAPPI_STORE_PRODUCT_NOT_FOUND404O produto solicitado não foi encontrado.
UAPPI_STORE_BRAND_NOT_FOUND404A marca solicitada não foi encontrada.
UAPPI_STORE_CATEGORY_NOT_FOUND404A categoria solicitada não foi encontrada.
UAPPI_STORE_PAGE_NOT_FOUND404
A página solicitada não foi encontrada.

Imagens de itens de menu

POST /template/menus/{menuId}/items/{menuItemId}/image

Imagens de itens de menu

Descrição

Este endpoint é responsável por atualizar as imagens de itens de um menu.

Para cada item, é possível enviar até duas imagens por requisição, permitindo substituir ou atualizar os arquivos visuais associados.

Parâmetros

Headers Obrigatórios

HeaderValorDescrição
Content-Typemultipart/form-dataTipo do conteúdo
AuthorizationBearer {userToken}Token de autenticação

Parâmetros da URL

ParâmetroTipoObrigatórioDescrição
menuIdintegerSimIdentificador do menu ao qual o item pertence
menuItemIdintegerSimIdentificador do item de menu que deve receber a imagem

Parâmetros do Corpo

ParâmetroTipoObrigatórioDescrição
image1file✅Primeira imagem de um item
image2file❌Segunda imagem de um item

Exemplo de Requisição

1curl --request POST \
2 --url {{MAIN_URL}}/template/menus/{menuId}/items/{menuItemId}/image \
3 --header "Authorization: Bearer userToken" \
4 --form 'image1=@imagem.png' \
5 --form 'image2=@imagem.png' \

✅ Resposta de Sucesso

HTTP Status: 200 OK

1{
2 "image1": "/upload/menu/item/1.jpeg",
3 "image2": "/upload/menu/item/2.png"
4}

⚠️ Erro retornado:

1{
2 "status": false,
3 "data": {
4 "code": 404,
5 "errorCode": "UAPPI_STORE_MENU_ITEM_FOUND",
6 "message": "The requested menu item not found."
7 }
8}

Atualiza a ordem dos itens de um menu

PUT /template/menus/{menuId}/items/order

Atualiza a ordem dos itens de um menu

Descrição

Este endpoint é responsável por ordenar os itens de um menu. O menu que terá sua ordem alterada deve ser identificado pelo ID informado na URL da API.

A ordem desejada dos itens deve ser enviada no corpo da requisição, informando os IDs de cada item na sequência correta, que será utilizada como referência para reorganizar a exibição no menu.

Parâmetros

Headers Obrigatórios

HeaderValorDescrição
Content-Typeapplication/jsonO body definirá a ordem dos itens cadastrados
AuthorizationBearer {userToken}Token de autenticação

Parâmetros da URL

ParâmetroTipoObrigatórioDescrição
menuIdintegerSimIdentificador do menu que deve ser alterado

Parâmetros do Corpo

ParâmetroTipoObrigatórioDescrição
idsarray✅Lista de identificadores dos itens de menu que devem ser reordenados
ids.*integer✅Identificador do item de menu que deve ser reordenado

Exemplo de Requisição

1curl --request PUT \
2 --url {{MAIN_URL}}/template/menus/{menuId}/items/order \
3 --header "Authorization: Bearer userToken" \
4 --data '{
5 "ids":[
6 1, 3, 2
7 ]
8 }'

✅ Resposta de Sucesso

HTTP Status: 200 OK

1{
2 "status": true,
3 "data": true
4}

Exclusão de item de menu

Endpoint

DELETE /template/menus/{menuId}/items/{menuItemId}

Rota para excluir um item de um menu.

Descrição

Este endpoint é responsável por excluir um item de um menu. Tanto o menu quanto o item que será removido devem ser identificados pelos respectivos IDs informados na URL da API, garantindo que a exclusão seja aplicada ao registro correto.

Parâmetros

Exemplo de Requisição

1curl --request DELETE \
2 --url {{MAIN_URL}}/template/menus/{menuId}/items/{menuItemId}\
3 --header "Authorization: Bearer userToken" \

✅ Resposta de Sucesso

HTTP Status: 200 OK

1{
2 "status": true,
3 "data": true
4}

Uappi é a melhor opção para o crescimento da sua loja!

;