⭐ Documentação de Favoritos de Apps
📋 Visão Geral
O módulo de Favoritos permite que cada usuário marque apps de sua preferência para acesso rápido.
Os favoritos são vinculados ao usuário autenticado — não à loja. Isso significa que dois usuários diferentes que operam na mesma loja possuem listas de favoritos independentes.
O módulo oferece três operações: listar os apps favoritados pelo usuário atual, adicionar um app à lista de favoritos e remover um app dessa lista.
Todas as rotas do módulo exigem autenticação via token de usuário e o escopo APP_READ.
🔄 Entidades Envolvidas
App favoritado
Cada item retornado pela listagem representa um app que o usuário marcou como favorito.
O objeto carrega o id e o code do app — identificadores únicos na plataforma. O campo name contém o nome legível do app e icon aponta para o ícone visual.
O shortDescription fornece uma descrição resumida do app. Os campos averageRating e ratingQuantity refletem a avaliação média (decimal com 2 casas, ex.: 4.67) e o número de avaliações recebidas pelo app na plataforma.
O campo active indica se o app está ativo na plataforma. O campo installed indica se o app está instalado na loja do contexto autenticado.
O campo categoryId identifica a categoria à qual o app pertence, e order determina a ordem de exibição dos favoritos do usuário.
Operações de marcação
Para adicionar um favorito, o appCode é passado diretamente na URL da rota POST /apps/{appCode}/favorite. Não é necessário corpo na requisição.
Para remover, o mesmo padrão é utilizado com o método DELETE /apps/{appCode}/favorite.
📌 Notas e Considerações
O escopo APP_READ é obrigatório para as três rotas do módulo: listagem, adição e remoção.
Os favoritos são isolados por usuário — a lista retornada sempre reflete exclusivamente os favoritos do usuário autenticado na requisição.
Ao tentar adicionar um app que já está na lista de favoritos do usuário, o sistema retorna sucesso sem duplicar o registro.
A operação de adição exige que o app esteja instalado na loja autenticada. Apps não instalados não podem ser favoritados.
A operação de remoção não exige que o app esteja instalado — valida apenas a existência do app pelo appCode.
Somente apps com o campo active igual a true são retornados na listagem de favoritos.
⭐ Listagem de Apps Favoritos
/apps/favorite
Retorna a lista de apps marcados como favoritos pelo usuário autenticado
📄 Descrição
Endpoint utilizado para obter a lista de apps favoritados pelo usuário autenticado.
A resposta é um array de objetos, onde cada objeto representa um app que o usuário marcou como favorito. O array pode ser vazio caso o usuário não tenha nenhum favorito registrado.
Os resultados são retornados ordenados pelo campo order, que representa a posição definida pelo usuário para cada favorito.
Apenas apps com status ativo na plataforma aparecem na listagem — apps desativados são excluídos automaticamente da resposta.
Requer o escopo APP_READ.
📋 Parâmetros
🏷️ Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Authorization | Bearer {userToken} | Token de autenticação do usuário |
💡 Exemplo de Requisição
1curl --request GET \2 --url {{MAIN_URL}}/apps/favorite \3 --header "Authorization: Bearer SEU_TOKEN_AQUI"✅ Resposta de Sucesso
HTTP Status: 200 OK
1{2 "status": true,3 "data": [4 {5 "id": 5,6 "categoryId": 2,7 "code": "meu-app-exemplo",8 "name": "Meu App Exemplo",9 "icon": "https://cdn.exemplo.com/apps/meu-app-exemplo/icon.png",10 "shortDescription": "Descrição resumida do app para exibição nas listagens.",11 "longDescription": "",12 "averageRating": 4.67,13 "ratingQuantity": 12,14 "active": true,15 "installed": true,16 "order": 117 },18 {19 "id": 9,20 "categoryId": 1,21 "code": "outro-app-exemplo",22 "name": "Outro App Exemplo",23 "icon": "https://cdn.exemplo.com/apps/outro-app-exemplo/icon.png",24 "shortDescription": "Outro app marcado como favorito pelo usuário.",25 "longDescription": "",26 "averageRating": 5,27 "ratingQuantity": 3,28 "active": true,29 "installed": false,30 "order": 231 }32 ]33}Campos da resposta
| Campo | Tipo | Descrição |
|---|---|---|
id | integer | ID único do app na plataforma |
categoryId | integer | ID da categoria à qual o app pertence |
code | string | Código único do app |
name | string | Nome legível do app |
icon | string | URL do ícone do app |
shortDescription | string | Descrição resumida do app |
longDescription | string | Descrição completa do app |
averageRating | decimal | Avaliação média do app na plataforma, com 2 casas decimais (ex.: 4.67) |
ratingQuantity | integer | Quantidade de avaliações recebidas |
active | boolean | Indica se o app está ativo na plataforma |
installed | boolean | Indica se o app está instalado na loja autenticada |
order | integer | Posição do favorito na lista do usuário |
⚠️ Possíveis Erros
> Os cenários abaixo representam os principais erros que podem ocorrer neste endpoint, servindo como referência para entendimento e tratamento das falhas.
| Código Interno | HTTP | Descrição |
|---|---|---|
UAPPI_AUTH_INVALID | 401 | ❌ O token de autenticação é inválido ou está ausente. |
UAPPI_AUTH_DISABLED | 403 | ❌ O usuário não possui o escopo APP_READ. |
⭐ Adicionar App aos Favoritos
/apps/{appCode}/favorite
Adiciona um app à lista de favoritos do usuário autenticado
📋 Descrição
Endpoint utilizado para adicionar um app à lista de favoritos do usuário autenticado.
O appCode é passado diretamente na URL — nenhum corpo de requisição é necessário.
O app deve estar instalado na loja do contexto autenticado. Tentativas de favoritar um app não instalado resultam no erro UAPPI_APP_APP_NOT_INSTALLED.
Caso o app já esteja na lista de favoritos do usuário, o endpoint retorna sucesso sem criar um registro duplicado.
Requer o escopo APP_READ.
📝 Parâmetros
🏷️ Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Authorization | Bearer {userToken} | Token de autenticação do usuário |
🔗 Parâmetros da URL
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
appCode | string | ✅ Sim | Código único do app a ser favoritado |
💡 Exemplo de Requisição
1curl --request POST \2 --url {{MAIN_URL}}/apps/meu-app-exemplo/favorite \3 --header "Authorization: Bearer SEU_TOKEN_AQUI"✅ Resposta de Sucesso
HTTP Status: 200 OK
1{2 "status": true,3 "data": true4}⚠️ Possíveis Erros
> Os cenários abaixo representam os principais erros que podem ocorrer neste endpoint, servindo como referência para entendimento e tratamento das falhas.
| Código Interno | HTTP | Descrição |
|---|---|---|
UAPPI_AUTH_INVALID | 401 | ❌ O token de autenticação é inválido ou está ausente. |
UAPPI_AUTH_DISABLED | 403 | ❌ O usuário não possui o escopo APP_READ. |
UAPPI_APP_APP_NOT_FOUND | 404 | ❌ O app com o appCode informado não foi encontrado ou está inativo. |
UAPPI_APP_APP_NOT_INSTALLED | 400 | ❌ O app existe, mas não está instalado nesta loja. |
🗑️ Remover App dos Favoritos
/apps/{appCode}/favorite
Remove um app da lista de favoritos do usuário autenticado
📋 Descrição
Endpoint utilizado para remover um app da lista de favoritos do usuário autenticado.
O appCode é passado diretamente na URL — nenhum corpo de requisição é necessário.
O endpoint valida a existência do app pelo appCode informado, mas não exige que o app esteja instalado na loja. A remoção opera sobre o registro de favorito vinculado ao usuário e à loja do contexto autenticado.
Requer o escopo APP_READ.
📝 Parâmetros
🏷️ Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Authorization | Bearer {userToken} | Token de autenticação do usuário |
🔗 Parâmetros da URL
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
appCode | string | ✅ Sim | Código único do app a ser removido dos favoritos |
💡 Exemplo de Requisição
1curl --request DELETE \2 --url {{MAIN_URL}}/apps/meu-app-exemplo/favorite \3 --header "Authorization: Bearer SEU_TOKEN_AQUI"✅ Resposta de Sucesso
HTTP Status: 200 OK
1{2 "status": true,3 "data": true4}⚠️ Possíveis Erros
> Os cenários abaixo representam os principais erros que podem ocorrer neste endpoint, servindo como referência para entendimento e tratamento das falhas.
| Código Interno | HTTP | Descrição |
|---|---|---|
UAPPI_AUTH_INVALID | 401 | ❌ O token de autenticação é inválido ou está ausente. |
UAPPI_AUTH_DISABLED | 403 | ❌ O usuário não possui o escopo APP_READ. |
UAPPI_APP_APP_NOT_FOUND | 404 | ❌ O app com o appCode informado não foi encontrado ou está inativo. |