Skip to content

Documentação de Vitrines

Visão Geral

A vitrine é responsável por exibir produtos de forma estratégica dentro da loja 🛍️.

Ela permite destacar itens com base em regras específicas de filtragem, possibilitando criar seções como produtos mais vendidos, lançamentos, ofertas ou seleções personalizadas.

A configuração da vitrine é baseada em filtros armazenados no sistema, que determinam quais produtos devem ser retornados e exibidos. Esses filtros podem combinar diferentes critérios, como atributos do produto, categorias, ordenação e outras condições.

Internamente, o sistema utiliza a estrutura de listagem de produtos, aplicando os filtros configurados para montar automaticamente o conjunto de produtos exibidos na vitrine.

Essa abordagem permite criar desde vitrines simples até vitrines altamente segmentadas, adaptando a exibição de produtos conforme campanhas, estratégias comerciais ou necessidades específicas da loja.

Entidades Relacionadas

Produtos

Os produtos são a principal entidade relacionada às vitrines.

Cada vitrine retorna um conjunto de produtos que atendem aos critérios de filtragem configurados, permitindo organizar e destacar itens de maneira estratégica dentro da loja.

Essa relação é dinâmica, pois os produtos exibidos podem variar automaticamente conforme os filtros aplicados, mantendo a vitrine sempre atualizada.

Localização

A vitrine pode estar vinculada a uma localização específica.

As localizações são gerenciadas pelo frontend e permitem retornar um conjunto de entidades (incluindo vitrines) com base no local informado, determinando onde a vitrine deve ser exibida dentro da interface da loja.

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

Listagem de vitrines

GET /template/showcases

Listagem de vitrines

Descrição

Este endpoint é responsável por listar todas as vitrines cadastradas 📋.

A resposta retorna também as condições de filtro definidas no corpo da requisição, permitindo visualizar exatamente quais regras estão configuradas em cada vitrine.

Com isso, é possível auditar, revisar e replicar configurações, garantindo maior controle sobre a estratégia de exibição dos produtos.

Headers Obrigatórios

HeaderValorDescrição
AuthorizationBearer {userToken}Token de autenticação

Campos Disponíveis (fields)

CampoDescrição
bannerGroupscarrega banners associados à vitrine

Campos de Condição Disponíveis

CampoTipoDescrição
idintegeridentificador da vitrine
codestringcódigo de identificação da vitrine
namestringnome definido para a vitrine
titlestringtítulo da vitrine
salesChannelIdintegeridentificador do canal de venda associado
locationIdstringidentificador da localização associada
createdAtstringdata de cadastro da vitrine
updatedAtstringdata de última atualização da vitrine

Campos de Ordenação Disponíveis

CampoDescrição
idIdentificador da vitrine
priorityPrioridade de exibição da vitrine

Exemplo de Requisição

1curl --request GET \
2 --url {{MAIN_URL}}/template/showcases \
3 --header "Authorization: Bearer userToken" \

✅ Resposta de Sucesso

1{
2 {
3 "id": 1,
4 "salesChannelId": 1,
5 "code": "Tênis",
6 "locationId": null,
7 "name": "Primeira vitrine",
8 "title": "Vitrine básica",
9 "description": "Subtítulo da vitrine",
10 "bestSellers": true,
11 "limit": 7,
12 "bannerGroups": [],
13 "order": [
14 {
15 "field": "id",
16 "order": "ASC"
17 }
18 ],
19 "condition": {
20 "type": "AND",
21 "conditions": [
22 {
23 "field": "category",
24 "value": [
25 2
26 ],
27 "operator": "in"
28 }
29 ]
30 },
31 "createdAt": "2025-07-04 21:11:25",
32 "updatedAt": "2025-09-23 11:31:47"
33 },
34 {
35 "id": 2,
36 "salesChannelId": 1,
37 "code": "kit-promocionais-tenis",
38 "locationId": null,
39 "name": "Kit promocionais-tenis",
40 "title": "Vitrine 1",
41 "description": "",
42 "bestSellers": true,
43 "limit": 3,
44 "bannerGroups": [],
45 "order": [
46 {
47 "field": "id",
48 "order": "ASC"
49 }
50 ],
51 "condition": {
52 "type": "AND",
53 "conditions": [
54 {
55 "field": "id",
56 "value": [
57 2,
58 3
59 ],
60 "operator": "="
61 }
62 ]
63 },
64 "createdAt": "2025-07-04 21:11:25",
65 "updatedAt": "2025-08-22 14:11:12"
66 }
67 }

Busca detalhes de uma vitrine

GET /template/showcases/{showcaseId}

Busca informações detalhadas de uma vitrine da loja

Descrição

Este endpoint é responsável por retornar os detalhes das configurações de uma vitrine específica.

A vitrine desejada deve ser identificada pelo ID informado na URL do endpoint, garantindo que as informações retornadas correspondam ao registro correto.

A resposta permite consultar todas as configurações definidas para a exibição e funcionamento da vitrine.

Headers Obrigatórios

HeaderValorDescrição
AuthorizationBearer {userToken}Token de autenticação

Parâmetros da URL

ParâmetroTipoObrigatórioDescrição
showcaseIdintegerSimIdentificador da vitrine que deve ser consultada

Exemplo de Requisição

1curl --request GET \
2 --url {{MAIN_URL}}/template/showcases/{showcaseId} \
3 --header "Authorization: Bearer userToken" \

✅ Resposta de Sucesso

1{
2 "id": 1,
3 "salesChannelId": 1,
4 "code": "Tênis",
5 "locationId": null,
6 "name": "Tênis",
7 "title": "Vitrine 1",
8 "description": "",
9 "bestSellers": true,
10 "limit": 3,
11 "bannerGroups": [
12 "home-triple-grid-banner"
13 ],
14 "order": [
15 {
16 "field": "id",
17 "order": "ASC"
18 }
19 ],
20 "condition": {
21 "type": "AND",
22 "conditions": [
23 {
24 "field": "sku",
25 "value": [
26 "SKUABC123",
27 "SKUABC124",
28 "SKUABC125",
29 "SKUABC126"
30 ],
31 "operator": "in"
32 }
33 ]
34 },
35 "createdAt": "2025-07-04 21:11:25",
36 "updatedAt": "2025-10-13 17:06:45"
37}

⚠️ 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_SHOWCASE_NOT_FOUND404A vitrine solicitada não foi encontrada.
UAPPI_STORE_PROFILE_NOT_FOUND404O perfil do usuário solicitado não foi encontrado.
UAPPI_CORE_INVALID_TRADE_POLICY_ID400Os ids de política comercial solicitados não são permitidos.

Cadastro de vitrine

POST /template/showcases

Cadastra vitrines para exibição de produtos na loja

Descrição

Endpoint responsável por permitir que o lojista crie vitrines e exiba produtos estratégicos na loja 🛍️.

A rota possibilita definir se devem ser exibidos produtos mais vendidos, limitar a quantidade de itens da vitrine e configurar a exibição com base em condições específicas.

Para que a configuração funcione corretamente, é necessário montar um filtro, que será armazenado no banco de dados junto aos demais dados da vitrine.

Internamente, o sistema realiza consultas na listagem de produtos e aplica o filtro configurado para retornar apenas os itens desejados. Na prática, o comportamento é semelhante a utilizar diretamente o endpoint de listagem de produtos com um filtro personalizado.

Para mais detalhes sobre a montagem de filtros, consulte nosso guia de listagens.

Essa estrutura permite criar vitrines simples ou altamente segmentadas, combinando múltiplas regras de filtragem e ordenação conforme a estratégia da loja 🚀.

Parâmetros

Headers Obrigatórios

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

Parâmetros do Corpo

ParâmetroTipoObrigatórioDescrição
salesChannelIdinteger✅Define o canal de venda onde a vitrine deve ser exibida
codeboolean✅Codigo de identificação da vitrine (max 100)
locationIdstring❌Id da localização onde a vitrine será associada (max 50 caracteres)
namestring✅Nome da vitrine que esta sendo criada (max 100)
titlestring✅Titulo da vitrine que está sendo criada (max 100)
descriptionstring✅Descrição da vitrine (max 255)
bestsellersboolean✅Define se deve exibir os produtos mais venditos
limitinteger✅Limite de itens (max 100 min 1)
orderarray✅Lista de configurações de ordenação para a listagem
order.*.fieldstring✅Determina o campo que a listagem utilizará para a ordenação
order..orderstring✅Ordem da ordenação entre asc e desc (do menor para o maior, em ordem alfabética, etc.)
conditionarray✅Grupo de condição que armazena e aplica diversos filtros simutâneos
condition.typestring✅Determina abordagem de filtragem, onde usar "and" obriga a listagem a respeitar todos os filtros e "or" que retorna itens que atenda ao menos 1 dos filtros
condition.conditionsarray✅Lista de filtros que devem ser aplicados à listagem
condition.conditions.fieldstring❌Campo pelo qual a listagem deve ser filtrada
condition.conditions.operatorstring❌Operador lógico para a condição como "igual a", "diferente de", "maior que", "menor que", "entre x,y, z" e outros
condition.conditions.fieldstring❌Valor do filtro que a listagem deve atender

Campos de Condição Disponíveis

CampoTipoDescrição
idintegerID do produto
parentProductIdintegerID do produto pai
brandIdintegerID da marca
activebooleanProduto ativo (true/false)
typestringTipo do produto
skustringSKU do produto
urlstringURL do produto
showInSitebooleanExibir no site
saleWithoutStockbooleanPermitir venda sem estoque
minimumStockintegerEstoque mínimo
categoryintegerID da categoria
mainCategoryintegerID da categoria principal
salePricedecimalPreço de venda
comparisonPricedecimalPreço de comparação
priceDifferencedecimalDiferença entre preços
filterobjectFiltro por atributos
stockintegerQuantidade em estoque
stockInStorageintegerEstoque em armazém específico
productStorageIdintegerID do armazém
namestringNome do produto
shortDescriptionstringDescrição curta
descriptionstringDescrição completa
searchDescriptionstringDescrição de busca
sealintegerID do selo
tradePolicyIdintegerID da política comercial
productAttributeIdintegerID do atributo
productAttributeValueIdintegerID do valor do atributo
customerWishListIdintegerID da lista de desejos
exclusivebooleanProduto exclusivo
eanstringCódigo EAN/GTIN
averageRatingdecimalAvaliação média (2 casas decimais, ex.: 4.67). Prefira >=/<= ao =
quantityRatingintegerQuantidade de avaliações
childrenAmountintegerQuantidade de variações filhas
giftCardbooleanFiltrar por gift card
variationsQuantityinteger
Filtrar produtos por quantidade de variações (independente de status de ativação) | availableVariationsQuantity | integer | Filtrar produtos por quantidade de variações disponíveis (ativas) |

Campos de Ordenação Disponíveis

CampoDescrição
idID do produto
priorityPrioridade de exibição
typeTipo do produto
skuSKU do produto
relevanceRelevância em busca
stockQuantidade em estoque
stockByStorageEstoque em armazém
nameNome do produto
pricePreço do produto
hasStockDisponibilidade (produtos com estoque primeiro)

Exemplo de Requisição

1curl --request POST \
2 --url {{MAIN_URL}}/template/showcases \
3 --header "Authorization: Bearer userToken" \
4 --data '{
5 "salesChannelId": 1,
6 "code": "best-seller-showcase",
7 "locationId":"HOME_PAGE_SHOWCASE",
8 "name": "Vitrine de produtos mais vendidos",
9 "title": "Celulares a partir de R$ 2699,00*",
10 "description": "Samsung",
11 "bestSellers": false,
12 "limit": 100,
13 "order": [
14 {
15 "field":"id",
16 "order":"ASC"
17 }
18 ],
19 "condition": {
20 "type": "OR",
21 "conditions": [
22 {
23 "field":"productId",
24 "operator":"in",
25 "value":[1, 2, 3, 4, 5]
26 },
27 {
28 "field":"sku",
29 "operator":"in",
30 "value":["sku1", "sku2", "sku3", "sku4", "sku5"]
31 }
32 ]
33 }
34 }'

✅ Resposta de Sucesso

HTTP Status: 200 OK

1{
2 "id": 1,
3 "salesChannelId": 1,
4 "code": "TECHNOLOGY",
5 "locationId": "MENU_SHOWCAASEE",
6 "name": "Vitrine de produtos tecnologicos",
7 "title": "Celulares a partir de R$ 2699,00*",
8 "description": "Monitores, tablets, celulares",
9 "bestSellers": false,
10 "limit": 100,
11 "bannerGroups": [],
12 "order": [
13 {
14 "field": "id",
15 "order": "ASC"
16 }
17 ],
18 "condition": {
19 "type": "OR",
20 "conditions": [
21 {
22 "field": "id",
23 "value": [
24 1,
25 2,
26 3,
27 4,
28 5
29 ],
30 "operator": "in"
31 },
32 {
33 "field": "sku",
34 "value": [
35 "sku1",
36 "sku2",
37 "sku3",
38 "sku4",
39 "sku5"
40 ],
41 "operator": "in"
42 }
43 ]
44 },
45 "createdAt": "",
46 "updatedAt": ""
47}

⚠️ 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_CORE_INVALID_SALES_CHANNEL_ID400Os ids de canal de venda solicitados não são permitidos.
UAPPI_STORE_SHOWCASE_NOT_FOUND404A vitrine solicitada não foi encontrada.
UAPPI_STORE_PROFILE_NOT_FOUND404O perfil do usuário solicitado não foi encontrado.
UAPPI_CORE_INVALID_TRADE_POLICY_ID400Os ids de política comercial solicitados não são permitidos.
UAPPI_STORE_DUPLICATED_SHOWCASE_CODE400O código da vitrine informada já está sendo utilizado.
UAPPI_STORE_TEMPLATE_LOCATION_NOT_FOUND404A localização solicitada não foi encontrada.

Atualização de uma vitrine

PUT /template/showcase/{showcaseId}

Possibilita o lojista a atualizar e configurar as vitrines da loja

Descrição

Este endpoint é responsável por atualizar uma vitrine existente ✏️, utilizando a mesma estrutura de corpo da requisição aplicada no cadastro.

A vitrine que será alterada deve ser identificada pelo ID informado na URL do endpoint, garantindo que a atualização seja aplicada corretamente ao registro desejado.

Essa abordagem permite reaproveitar o mesmo padrão de configuração, mantendo consistência entre criação e edição.

Com isso, é possível ajustar completamente os critérios de exibição da vitrine, incluindo filtros, ordenação e configurações gerais, conforme a estratégia da loja 🚀.

Parâmetros

Headers Obrigatórios

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

Parâmetros do Corpo

ParâmetroTipoObrigatórioDescrição
salesChannelIdinteger✅Define o canal de venda onde a vitrine deve ser exibida
codeboolean✅Codigo de identificação da vitrine (max 100)
locationIdstring❌Id da localização onde a vitrine será associada (max 50 caracteres)
namestring✅Nome da vitrine que esta sendo criada (max 100)
titlestring✅Titulo da vitrine que está sendo criada (max 100)
descriptionstring✅Descrição da vitrine (max 255)
bestsellersboolean✅Define se deve exibir os produtos mais venditos
limitinteger✅Limite de itens (max 100 min 1)
orderarray✅Lista de configurações de ordenação para a listagem
order.*.fieldstring✅Determina o campo que a listagem utilizará para a ordenação
order..orderstring✅Ordem da ordenação entre asc e desc (do menor para o maior, em ordem alfabética, etc.)
conditionarray✅Grupo de condição que armazena e aplica diversos filtros simutâneos
condition.typestring✅Determina abordagem de filtragem, onde usar "and" obriga a listagem a respeitar todos os filtros e "or" que retorna itens que atenda ao menos 1 dos filtros
condition.conditionsarray✅Lista de filtros que devem ser aplicados à listagem
condition.conditions.fieldstring❌Campo pelo qual a listagem deve ser filtrada
condition.conditions.operatorstring❌Operador lógico para a condição como "igual a", "diferente de", "maior que", "menor que", "entre x,y, z" e outros
condition.conditions.fieldstring❌Valor do filtro que a listagem deve atender

Campos de Condição Disponíveis

CampoTipoDescrição
idintegerID do produto
parentProductIdintegerID do produto pai
brandIdintegerID da marca
activebooleanProduto ativo (true/false)
typestringTipo do produto
skustringSKU do produto
urlstringURL do produto
showInSitebooleanExibir no site
saleWithoutStockbooleanPermitir venda sem estoque
minimumStockintegerEstoque mínimo
categoryintegerID da categoria
mainCategoryintegerID da categoria principal
salePricedecimalPreço de venda
comparisonPricedecimalPreço de comparação
priceDifferencedecimalDiferença entre preços
filterobjectFiltro por atributos
stockintegerQuantidade em estoque
stockInStorageintegerEstoque em armazém específico
productStorageIdintegerID do armazém
namestringNome do produto
shortDescriptionstringDescrição curta
descriptionstringDescrição completa
searchDescriptionstringDescrição de busca
sealintegerID do selo
tradePolicyIdintegerID da política comercial
productAttributeIdintegerID do atributo
productAttributeValueIdintegerID do valor do atributo
customerWishListIdintegerID da lista de desejos
exclusivebooleanProduto exclusivo
eanstringCódigo EAN/GTIN
averageRatingdecimalAvaliação média (2 casas decimais, ex.: 4.67). Prefira >=/<= ao =
quantityRatingintegerQuantidade de avaliações
childrenAmountintegerQuantidade de variações filhas
giftCardbooleanFiltrar por gift card
variationsQuantityinteger
Filtrar produtos por quantidade de variações (independente de status de ativação) | availableVariationsQuantity | integer | Filtrar produtos por quantidade de variações disponíveis (ativas) |

Campos de Ordenação Disponíveis

CampoDescrição
idID do produto
priorityPrioridade de exibição
typeTipo do produto
skuSKU do produto
relevanceRelevância em busca
stockQuantidade em estoque
stockByStorageEstoque em armazém
nameNome do produto
pricePreço do produto
hasStockDisponibilidade (produtos com estoque primeiro)

Exemplo de Requisição

1curl --request PUT \
2 --url {{MAIN_URL}}/template/showcases/{showcaseId} \
3 --header "Authorization: Bearer userToken" \
4 --data '{
5 "salesChannelId": 1,
6 "code": "best-seller-showcase",
7 "locationId":"HOME_PAGE_SHOWCASE",
8 "name": "Vitrine de produtos mais vendidos",
9 "title": "Celulares a partir de R$ 2699,00*",
10 "description": "Samsung",
11 "bestSellers": false,
12 "limit": 100,
13 "order": [
14 {
15 "field":"id",
16 "order":"ASC"
17 }
18 ],
19 "condition": {
20 "type": "OR",
21 "conditions": [
22 {
23 "field":"productId",
24 "operator":"in",
25 "value":[1, 2, 3, 4, 5]
26 },
27 {
28 "field":"sku",
29 "operator":"in",
30 "value":["sku1", "sku2", "sku3", "sku4", "sku5"]
31 }
32 ]
33 }
34 }'

✅ Resposta de Sucesso

HTTP Status: 200 OK

1{
2 "id": 1,
3 "salesChannelId": 1,
4 "code": "samsung-showcase",
5 "locationId": null,
6 "name": "Vitrine de produtos da samsung-Xiamoi",
7 "title": "Celulares a partir de R$ 2699,00*",
8 "description": "Samsung",
9 "bestSellers": true,
10 "limit": 100,
11 "bannerGroups": [],
12 "order": [
13 {
14 "field": "id",
15 "order": "ASC"
16 }
17 ],
18 "condition": {
19 "type": "AND",
20 "conditions": [
21 {
22 "field": "brandId",
23 "value": 1,
24 "operator": "="
25 }
26 ]
27 },
28 "createdAt": "2026-03-02 13:46:07",
29 "updatedAt": "2026-03-02 13:46:07"
30}

⚠️ 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_CORE_INVALID_SALES_CHANNEL_ID400Os ids de canal de venda solicitados não são permitidos.
UAPPI_STORE_SHOWCASE_NOT_FOUND404A vitrine solicitada não foi encontrada.
UAPPI_STORE_PROFILE_NOT_FOUND404O perfil do usuário solicitado não foi encontrado.
UAPPI_CORE_INVALID_TRADE_POLICY_ID400Os ids de política comercial solicitados não são permitidos.
UAPPI_STORE_DUPLICATED_SHOWCASE_CODE400O código da vitrine informada já está sendo utilizado.
UAPPI_STORE_TEMPLATE_LOCATION_NOT_FOUND404A localização solicitada não foi encontrada.

Excluir uma vitrine

Endpoint

DELETE /template/showcases/{showcaseId}

Rota que possibilita ao lojista a exclusão de uma vitrine.

Descrição

Este endpoint é responsável por excluir uma vitrine, identificado pelo ID informado na URL da API. Após a exclusão, a vitrine não ficará mais disponível para consultas ou associações na plataforma.

Parâmetros da URL

ParâmetroTipoObrigatórioDescrição
showcaseIdintegerSimID único de uma vitrine

Exemplo de Requisição

1curl --request DELETE \
2 --url {{MAIN_URL}}/template/showcases/{showcaseId} \
3 --header "Authorization: Bearer userToken" \

✅ Resposta de Sucesso

HTTP Status: 200 OK

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

⚠️ Erro retornado:

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

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

;