Documentação de Produto
Visão Geral
O produto é a entidade central da loja, representando os itens disponíveis para venda ou exibição 🛍️.
Ele concentra todas as informações necessárias para comercialização, como preço, descrição, estoque, atributos, imagens, categorias e configurações específicas.
Os produtos podem ser configurados de forma flexível, permitindo:
- Criação de variações
- Definição de regras de venda
- Associação com políticas comerciais
- Personalização de conteúdo e SEO
- Produto (Product) Entidade principal que representa o item da loja.
- Atributos e Valores (Attributes & Values) Responsáveis por definir variações do produto.
- Categoria (Category) Organiza o produto dentro da estrutura da loja.
- Marca (Brand) Define o fabricante ou identidade do produto.
- Descrição (Description) Armazena conteúdos textuais do produto.
- URL (Url) Define o endereço de acesso do produto.
- Mídias (Media) Representam imagens, vídeos ou documentos associados.
- Dados Fiscais, Estoque e Dimensões Informações complementares para operação e logística.
- Produtos podem possuir variações baseadas em atributos.
- Podem ser configurados para diferentes políticas comerciais.
- Diversas entidades são criadas automaticamente no cadastro inicial.
- A correta configuração impacta diretamente na experiência do usuário e operação da loja ⚙️.
Além disso, diversas entidades relacionadas são geradas automaticamente no momento do cadastro, garantindo que o produto esteja pronto para uso.
Entidades Envolvidas
Entre várias outras entidades do sistema, sendo um dos pontos centrais da plataforma.
Notas e Considerações
Cadastro de produtos
/products
Possibilita o cadastro de produtos na loja
Descrição
Endpoint responsável por permitir que o lojista cadastre novos produtos na loja 🛍️.
Atua em contexto administrativo, sendo utilizado para inserir novos itens no catálogo da plataforma.
Por meio desse endpoint, é possível criar produtos e definir suas principais informações, como descrições, categorias, marcas, atributos e demais configurações necessárias para sua exibição e comercialização.
Dessa forma, o lojista consegue expandir e organizar o catálogo da loja, garantindo que novos produtos possam ser exibidos e vendidos corretamente na plataforma ⚙️.
Processos automáticos ao cadastrar um produto: durante o cadastro, o sistema também cria automaticamente algumas entidades relacionadas ao produto.
Entre elas:
- URLs do produto geradas para cada política comercial
- Uma descrição inicial criada para cada política comercial
- Preferências padrão do produto configuradas automaticamente
- Registro inicial de dados fiscais
- Registro inicial de dimensões
- Registro inicial de estoque
Esses registros são criados como estruturas iniciais, permitindo que o lojista possa complementar e ajustar as informações posteriormente conforme necessário.
Parâmetros
Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Content-Type | application/json | Tipo de conteúdo |
Authorization | Bearer {userToken} | Token de autenticação |
Parâmetros do Corpo
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| sku | string | ✅ | SKU para identificação do produto e controle de estoque |
| name | string | ✅ | Nome definido ao produto |
| brandId | integer | ✅ | Identificador da marca que deve ser associada ao produto |
| basePrice | decimal | ✅ | Preço base inicial do produto |
| active | bool | ✅ | Define se o produto deve ser ativo ou não |
| priority | integer | ✅ | Define a prioridade do produto |
| tradePolicies | array | ❌ | Lista de políticas comerciais associadas ao produto |
| tradePolicies | bool | ✅ | Determina se a política comercial deve ser associada ou não (padrão "id":bool ou "1":true) |
Exemplo de Requisição
1curl --request POST \2 --url {{MAIN_URL}}/products \3 --header "Authorization: Bearer SEU_TOKEN_AQUI" \4 --data '{5 "sku": "SKU123321",6 "name": "Techbrand - Smartphone 8gb RAM 256gb de armazenamento",7 "brandId": 1,8 "active": true,9 "priority": 1,10 "basePrice": 1599,11 "tradePolicies": {12 "1": true13 }14 }'✅ Resposta de Sucesso
HTTP Status: 200 OK
1{2 "id": 1,3 "brandId": 1,4 "type": "product",5 "sku": "SKU123321",6 "name": "Techbrand - Smartphone 8gb RAM 256gb de armazenamento",7 "priority": 1,8 "basePrice": 1599,9 "active": true,10 "createdAt": "2026-03-16 14:05:11",11 "updatedAt": "2026-03-16 14:05:11"12}⚠️ 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 Interno | Código Http | Descrição |
|---|---|---|
| UAPPI_CORE_INVALID_TRADE_POLICY_ID | 400 | Os ids de política comercial solicitados não são permitidos. |
| UAPPI_STORE_PRODUCT_DUPLICATED_SKU | 400 | O SKU solicitado já está sendo utilizado em outro produto. |
| UAPPI_STORE_BRAND_NOT_FOUND | 404 | A marca solicitada não foi encontrada. |
| UAPPI_STORE_DUPLICATED_URL | 400 | A url solicitada já está sendo utilizada. |
| UAPPI_STORE_INVALID_ENTITY_URL | 400 | A entidade solicitada para vincular à url não foi encontrada. |
| UAPPI_STORE_ENTITY_MAIN_URL_ALREADY_EXISTS | 409 | A url principal para a entidade solicitada já existe. |
| UAPPI_STORE_INVALID_DESCRIPTION_ENTITY | 400 | A entidade solicitada para criar a descrição não foi encontrada. |
| UAPPI_STORE_PRODUCT_NOT_FOUND | 404 | O produto solicitado não foi encontrado. |
| UAPPI_STORE_CARGO_TYPE_NOT_FOUND | 404 | O tipo de carga solicitado não foi encontrado. |
| UAPPI_STORE_STOCK_INSUFFICIENT_AVAILABLE_STOCK | 400 | A quantidade de estoque solicitada para uso não está disponível. |
| UAPPI_STORE_STOCK_INSUFFICIENT_RESERVED_STOCK | 400 | A quantidade de estoque para operação de reserva não está disponível. |
| UAPPI_STORE_STOCK_BELLOW_MINIMUM | 400 | A quantidade de estoque solicitada para o produto está abaixo do mínimo. |
| UAPPI_STORE_STORAGE_NOT_FOUND | 404 | O armazém solicitado não foi encontrado. |
| UAPPI_STORE_SALE_WITHOUT_STOCK_ACTIVE | 400 | A operação não pode continuar porque o produto está configurado para venda sem estoque. |
| UAPPI_STORE_STOCK_UPDATE_PRODUCT_WITH_VARIATION_STOCK | 400 | O produto possui variações e não pode receber atualização de estoque. |
Atualização de produto
/products/{productId}
Permite que o lojista atualize um produto da loja
Descrição
Endpoint responsável por permitir que o lojista atualize um produto da loja ✏️.
Atua em contexto administrativo, possibilitando a edição das informações já cadastradas de um produto.
Dessa forma, o lojista consegue manter as informações do produto sempre atualizadas, garantindo consistência e precisão nos dados exibidos no catálogo da loja ⚙️.
Parâmetros
Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Content-Type | application/json | Tipo de conteúdo |
Authorization | Bearer {userToken} | Token de autenticação |
Parâmetros da URL
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| productId | integer | Sim | Identificador único do produto a ser atualizado |
Parâmetros do Corpo
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| sku | string | ✅ | SKU para identificação do produto e controle de estoque |
| name | string | ✅ | Nome definido ao produto |
| brandId | integer | ✅ | Identificador da marca que deve ser associada ao produto |
| basePrice | decimal | ✅ | Preço base inicial do produto |
| active | bool | ✅ | Define se o produto deve ser ativo ou não |
| priority | integer | ✅ | Define a prioridade do produto |
| tradePolicies | array | ❌ | Lista de políticas comerciais associadas ao produto |
| tradePolicies | bool | ✅ | Determina se a política comercial deve ser associada ou não (padrão "id":bool ou "1":true) |
Exemplo de Requisição
1curl --request PUT \2 --url {{MAIN_URL}}/products/{productId} \3 --header "Authorization: Bearer SEU_TOKEN_AQUI" \4 --data '{5 "sku": "SKU123321",6 "name": "Techbrand - Smartphone 8gb RAM 256gb de armazenamento",7 "brandId": 1,8 "active": true,9 "priority": 1,10 "basePrice": 1599,11 "tradePolicies": {12 "1": true13 }14 }'✅ Resposta de Sucesso
HTTP Status: 200 OK
1{2 "id": 1,3 "brandId": 1,4 "type": "product",5 "sku": "SKU123321",6 "name": "Techbrand - Smartphone 8gb RAM 256gb de armazenamento",7 "priority": 1,8 "basePrice": 1599,9 "active": true,10 "createdAt": "2026-03-16 14:05:11",11 "updatedAt": "2026-03-16 14:05:11"12}⚠️ 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 Interno | Código Http | Descrição |
|---|---|---|
| UAPPI_AUTH_INVALID | 401 | O recurso solicitado é inválido. |
| UAPPI_AUTH_DISABLED | 403 | O recurso solicitado está desativado. |
| UAPPI_AUTH_NOT_FOUND | 404 | O recurso solicitado não foi encontrado. |
⚠️ Erro retornado:
1{2 "status": false,3 "data": {4 "code": 429,5 "errorCode": "THROTTLE_LIMIT_REACHED",6 "message": "Try again in 21 seconds."7 }8}Atualização de dimensões de produtos
/products/dimensions
Atualização de dimensões de produtos
Descrição
Endpoint responsável por atualizar as dimensões de um ou mais produtos 📦.
Atua em contexto administrativo, permitindo que o lojista gerencie informações físicas dos produtos de forma eficiente.
Por meio desse endpoint, é possível realizar atualizações em lote, enviando múltiplos produtos na mesma requisição.
Essas dimensões são utilizadas para cálculo de frete, logística e armazenamento, sendo fundamentais para o correto processamento das vendas.
Dessa forma, o lojista consegue manter os dados físicos dos produtos atualizados em escala, garantindo maior precisão nas operações logísticas ⚙️.
Parâmetros
Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Content-Type | application/json | Tipo de conteúdo |
Authorization | Bearer {userToken} | Token de autenticação |
Parâmetros do Corpo
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
products | array | ✅ | Lista de dimensões a ser cadastradas |
products.*.productId | string | ✅ | Identificador do produto que deve ser cadastrado a dimensão |
products.*.shippingCargoTypeId | integer | ✅ | Identificador do tipo de carga (super leve, leve, pesado, etc.) |
products.*.additionalTime | integer | ❌ | define um prazo extra, em dias, que é somado ao tempo de entrega da transportadora, aumentando o prazo final exibido ao cliente. |
products.*.width | numeric | ✅ | Definição do tamanho da largura do produto (decimal:0,6) |
products.*.height | numeric | ✅ | Definição do tamanho da altura do produto (decimal:0,6) |
products.*.length | numeric | ✅ | Definição do tamanho do comprimento do produto (decimal:0,6) |
products.*.weight | numeric | ✅ | Definição do peso do produto (decimal:0,6) |
Exemplo de Requisição
1curl --request PUT \2 --url {{MAIN_URL}}/products/dimensions \3 --header "Authorization: Bearer userToken" \4 --data '{5 "products": [6 {7 "productId": 1,8 "shippingCargoTypeId": null,9 "additionalTime": 5,10 "width": 10.123456,11 "height": 20.12,12 "length": 30.123,13 "weight": 40.123414 },15 {16 "productId": 2,17 "shippingCargoTypeId": null,18 "additionalTime": 5,19 "width": 10.123456,20 "height": 20.12,21 "length": 30.123,22 "weight": 40.123423 }24 ]25 }'✅ Resposta de Sucesso
HTTP Status: 200 OK
1{2 [3 {4 "shippingCargoTypeId": null,5 "additionalTime": 5,6 "width": 10.123456,7 "height": 20.12,8 "length": 30.123,9 "weight": 40.1234,10 "productId": 1,11 "error": ""12 },13 {14 "shippingCargoTypeId": null,15 "additionalTime": 5,16 "width": 10.123456,17 "height": 20.12,18 "length": 30.123,19 "weight": 40.1234,20 "productId": 2,21 "error": "UAPPI_STORE_PRODUCT_NOT_FOUND"22 }23 ]24}⚠️ 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 Interno | Código Http | Descrição |
|---|---|---|
| UAPPI_STORE_PRODUCT_NOT_FOUND | 404 | O produto solicitado não foi encontrado. |
| UAPPI_STORE_CARGO_TYPE_NOT_FOUND | 404 | O tipo de carga solicitado não foi encontrado. |
Atualização das configurações de produto
/products/flags
Permite atualizar configurações de funcionamento do produto
Descrição
Endpoint responsável por atualizar as configurações de um produto da loja ⚙️.
Atua em contexto administrativo, permitindo que o lojista ajuste comportamentos importantes relacionados à venda e exibição do produto.
Por meio desse endpoint, é possível definir regras e características específicas do produto, garantindo que ele funcione corretamente dentro da lógica do catálogo e das vendas.
Entre as principais configurações que podem ser definidas estão:
- Controle de estoque mínimo
- Permitir venda sem estoque
- Exibição do produto na loja
- Definir se o produto é um serviço
- Indicar se o produto possui assinatura
Dessa forma, o lojista consegue controlar como o produto será tratado dentro da plataforma, ajustando seu comportamento conforme as necessidades do negócio 🧩.
⚠️ Comportamento da venda sem estoque
Ao ativar a venda sem estoque em um produto a plataforma atualizará o estoque disponível desse produto (e suas variações caso ele possua) para 99999 e o estoque reservado para 0.É importante observar que também não será possível fazer atualizações de estoque diretas (entrada, saída e balanço) nos produtos com venda sem estoque ativa.
A listagem e detalhe de produtos também passam a exibir o estoque disponível como 99999 e o estoque reservado para 0.
Ao inativar a venda sem estoque, o estoque disponível do produto em todos os armazéns será zerado. Os pedidos criados com produtos enquanto a venda sem estoque estiver ativa, serão concluídos normalmente.
Após a inativação, é recomendado executar um balanço ou entrada de estoque nos produtos, dessa forma os mesmos poderão continuar sendo vendidos normalmente. Para executar essas ações utilize a rota de atualização de estoque.
Parâmetros
Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Content-Type | application/json | Tipo de conteúdo |
Authorization | Bearer {userToken} | Token de autenticação |
Parâmetros do Corpo
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| products | array | ✅ | Lista de produtos que devem ser atualizados |
| products.*.productId | integer | ✅ | Identificador do produto que deve ser reconfigurado |
| products.*.subscription | bool | ✅ | Determina se o produto deve conter assinatura |
| products.*.service | bool | ✅ | Determina se o produto é um serviço |
| products.*.showInSite | bool | ✅ | Determina se o produto deve ser exibido na loja |
| products.*.saleWithoutStock | bool | ✅ | Determina se o produto deve possuir venda sem estoque |
| products.*.minimumStock | bool | ✅ | Determina quantidade de estoque mínimo do produto |
Exemplo de Requisição
1curl --request PUT \2 --url {{MAIN_URL}}/products/flags \3 --header "Authorization: Bearer SEU_TOKEN_AQUI" \4 --data '{5 "products": [6 {7 "productId": 1,8 "subscription": true,9 "service": true,10 "pickUp": true,11 "showInSite": true,12 "saleWithoutStock": true,13 "minimumStock": 314 }15 ]16}'✅ Resposta de Sucesso
HTTP Status: 200 OK
1{2 "status": true,3 "data": [4 {5 "subscription": true,6 "service": true,7 "pickUp": true,8 "showInSite": true,9 "saleWithoutStock": false,10 "minimumStock": 3,11 "productId": 1,12 "error": ""13 } 14 ]15}⚠️ 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 Interno | Código Http | Descrição |
|---|---|---|
| UAPPI_STORE_PRODUCT_IS_VARIATION | 400 | O produto solicitado é uma variação. |
| UAPPI_STORE_PRODUCT_NOT_FOUND | 404 | O produto solicitado não foi encontrado. |
| UAPPI_STORE_PRODUCT_IS_GIFT_CARD | 400 | O produto é configurado como um cartão de presente e a operação não pôde continuar. |
Atualização de dados fiscais do produto
/products/tax
Permite ao lojista atualizar dados fiscais do produto e cumprir regras tributárias
Descrição
Endpoint responsável por permitir que o lojista defina os dados fiscais de um produto 🧾.
Atua em contexto administrativo, garantindo que o produto esteja configurado corretamente para atender às regras tributárias e fiscais exigidas pelo governo.
Por meio desse endpoint, é possível atribuir as informações fiscais necessárias ao produto, permitindo que o sistema calcule e aplique corretamente os impostos relacionados à sua venda.
Esses dados são utilizados para cumprimento das obrigações fiscais, emissão de documentos e correta tributação nas operações comerciais.
Dessa forma, o lojista consegue garantir que o produto esteja em conformidade com as regras tributárias, evitando inconsistências fiscais e problemas no processo de venda ⚙️.
---
MPN (Manufacturer Part Number)
Determina o código da peça definido pelo fabricante 🔎.
Ele identifica um produto específico dentro do catálogo do próprio fabricante, sendo muito utilizado para integração com marketplaces, ERPs e sistemas de comparação de produtos.
Diferente do EAN, ele não é padronizado globalmente, pois cada fabricante define o seu próprio código.
---
EAN (European Article Number)
Determina o código de barras do produto 📦.
Trata-se de um identificador padronizado internacionalmente, utilizado para identificar produtos no varejo, logística e sistemas de venda.
No Brasil é muito comum o EAN-13, que possui 13 dígitos. Esse código é usado em leitores de código de barras, marketplaces e sistemas fiscais.
---
NCM (Nomenclatura Comum do Mercosul)
Determina um código fiscal utilizado para classificar mercadorias 🧾.
Ele define qual é a categoria tributária do produto, sendo utilizado para cálculo de impostos, emissão de nota fiscal e cumprimento das obrigações fiscais.
Cada tipo de produto possui um NCM específico definido pela legislação.
---
Exclusive
Campo utilizado para indicar se o produto é exclusivo da própria loja ou empresa ⚙️.
Em muitos sistemas, essa flag é utilizada para representar produtos fabricados pela própria empresa, kits montados internamente ou itens sem código oficial de mercado.
Essa informação pode influenciar regras fiscais, origem da mercadoria ou tratamento tributário, dependendo das configurações do sistema. |
Parâmetros
Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Content-Type | application/json | Tipo de conteúdo |
Authorization | Bearer {userToken} | Token de autenticação |
Parâmetros do Corpo
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| products | array | ✅ | Lista de produtos que devem ser atualizados (max: 100) |
| products.*.productId | integer | ✅ | Identificador do produto que deve ser atualizado |
| products.*.mpn | string | ✅ | código da peça definido pelo fabricante (max: 70) |
| products.*.ean | string | ✅ | código de barras do produto (max: 13) |
| products.*.ncm | string | ✅ | código fiscal utilizado para classificar mercadorias (max: 8) |
| products.*.exclusive | bool | ✅ | indica se o produto é exclusivo da própria loja ou empresa |
Exemplo de Requisição
1curl --request PUT \2 --url {{MAIN_URL}}/products/tax \3 --header "Authorization: Bearer SEU_TOKEN_AQUI" \4 --data '{5 "products":[6 {7 "productId":1,8 "mpn": "MPN-AX45-9001",9 "ean": "7891234567895",10 "ncm": "85176259",11 "exclusive": false12 }13 ]14 }'✅ Resposta de Sucesso
HTTP Status: 200 OK
1{2 "mpn": "MPN-AX45-9001",3 "ean": "7891234567895",4 "ncm": "85176259",5 "exclusive": false,6 "productId": 1,7 "error": ""8}⚠️ Erro retornado:
1{2 "status": false,3 "data": {4 "code": 404,5 "errorCode": "UAPPI_STORE_PRODUCT_NOT_FOUND",6 "message": "The requested product was not found."7 }8}Atualização de vínculo entre produto e marca em lote
/products/brands/link
Permite vincular ou desvincular produtos e marcas em lote
Descrição
Endpoint responsável por permitir vincular ou desvincular produtos e marcas em lote 🔗.
Atua em contexto administrativo, possibilitando que o lojista gerencie a relação entre produtos e marcas de forma mais eficiente.
Por meio desse endpoint, é possível associar ou remover vínculos entre múltiplos produtos e uma marca, realizando a operação em massa.
Essa abordagem facilita a organização do catálogo e o gerenciamento de marcas, especialmente em cenários com grande volume de produtos ⚙️.
Parâmetros
Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Content-Type | application/json | Tipo de conteúdo |
Authorization | Bearer {userToken} | Token de autenticação |
Parâmetros do Corpo
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| links | array | ✅ | Lista de produtos e marcas que devem ser vinculados/desvinculados |
| links.*.brandId | integer | ❌ | Identificador da marca que deve ser vinculada |
| links.*.productId | integer | ✅ | Identificador do produto que deve vinculado |
Exemplo de Requisição
1curl --request PUT \2 --url {{MAIN_URL}}/products/brands/link \3 --header "Authorization: Bearer SEU_TOKEN_AQUI" \4 --data '{5 "links":[6 {7 "brandId":null,8 "productId":19 },10 {11 "brandId":1,12 "productId":213 }14 ]15 }'✅ Resposta de Sucesso
HTTP Status: 200 OK
1{2 [3 {4 "productId": 1,5 "brandId": null6 },7 {8 "productId": 2,9 "brandId": 110 }11 ]12}⚠️ 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 Interno | Código Http | Descrição |
|---|---|---|
| UAPPI_STORE_PRODUCT_NOT_FOUND | 404 | Os produtos solicitados (1, 2, 3) não foram encontrados. |
| UAPPI_STORE_BRAND_NOT_FOUND | 404 | As marcas solicitadas (1, 2, 3) não foram encontradas. |
Atualização de status de produto em massa
/products/status
Permite atualização de status de vários produtos em massa
Descrição
Endpoint responsável por permitir a atualização do status de múltiplos produtos em massa 🔄.
Atua em contexto administrativo, possibilitando que o lojista altere rapidamente o status de vários produtos ao mesmo tempo.
Por meio desse endpoint, é possível aplicar mudanças de status em lote, facilitando ações como ativar, desativar ou ajustar a disponibilidade de diversos produtos de forma eficiente.
Essa abordagem ajuda a agilizar a gestão do catálogo, especialmente em cenários com grande volume de produtos ⚙️.
Parâmetros
Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Content-Type | application/json | Tipo de conteúdo |
Authorization | Bearer {userToken} | Token de autenticação |
Parâmetros do Corpo
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
products | array | ✅ | Lista de produtos que devem ser atualizados |
products.*.productId | integer | ✅ | Identificador do produto que o status deve ser atualizado. |
products.*.active | bool | ✅ | Novo status de ativação do produto (sim/não). |
Exemplo de Requisição
1curl --request PUT \2 --url {{MAIN_URL}}/products/status \3 --header "Authorization: Bearer SEU_TOKEN_AQUI" \4 --data '{5 "products": [6 {7 "productId":1,8 "active": false9 },10 {11 "productId":2,12 "active": true13 }14 ]15 }'✅ Resposta de Sucesso
HTTP Status: 200 OK
1{2 "active": false,3 "productId": 1,4 "error": ""5 },6 {7 "active": true,8 "productId": 2,9 "error": ""10 }⚠️ Erro retornado:
1{2 "status": false,3 "data": {4 "code": 404,5 "errorCode": "UAPPI_STORE_PRODUCT_NOT_FOUND",6 "message": "The requested product was not found."7 }8}Exclusão de Produto
/products
Possibilita a exclusão lógica ou permanente de produtos da loja
Descrição
Endpoint responsável por permitir que o lojista exclua um ou mais produtos da loja em lote.
Atua em contexto administrativo e suporta dois modos de exclusão, controlados pelo campo force de cada item:
Exclusão lógica (soft delete) — comportamento padrão
Quando force é omitido ou enviado como false, o produto não é fisicamente removido da plataforma. O campo deleted_at é preenchido com a data e hora da operação, tornando o produto invisível no catálogo e nas buscas públicas. O registro permanece armazenado e pode ser recuperado posteriormente pelo endpoint de restauração.
Exclusão permanente (hard delete)
Quando force é enviado como true, o produto é removido fisicamente da plataforma. Essa operação é irreversível — o registro não poderá ser restaurado.
Comportamento em lote e cascata
A operação recebe uma lista de produtos. Cada item é processado individualmente: falhas em um item não impedem o processamento dos demais. Quando um produto pai é removido, suas variações são automaticamente incluídas no mesmo ciclo de remoção.
Parâmetros
Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Content-Type | application/json | Tipo de conteúdo |
Authorization | Bearer {userToken} | Token de autenticação |
Parâmetros do Corpo
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
products | array | ✅ | Lista de produtos que devem ser excluídos |
products.*.productId | integer | ✅ | Identificador do produto a ser removido (mínimo: 1, sem duplicatas no mesmo lote) |
force | boolean | ❌ | Define o modo de exclusão. true = exclusão permanente (hard delete); false ou omitido = exclusão lógica (soft delete) |
Exemplo de Requisição
Exclusão lógica (soft delete):
1curl --request DELETE \2 --url {{MAIN_URL}}/products \3 --header "Authorization: Bearer SEU_TOKEN_AQUI" \4 --data '{5 "products": [6 {7 "productId": 18 },9 {10 "productId": 211 }12 ]13 }'Exclusão permanente (hard delete):
1curl --request DELETE \2 --url {{MAIN_URL}}/products \3 --header "Authorization: Bearer SEU_TOKEN_AQUI" \4 --data '{5 "products": [6 {7 "productId": 18 },9 {10 "productId": 211 }12 ],13 "force": true14 }'✅ Resposta de Sucesso
HTTP Status: 200 OK
A resposta é um array com um objeto por produto solicitado. O campo error estará vazio em caso de sucesso, ou preenchido com o código de erro quando o produto não puder ser removido.
1{2 "status": true,3 "data": [4 {5 "productId": 1,6 "error": null7 },8 {9 "productId": 2,10 "error": null11 }12 ] 13}⚠️ Possíveis erros:
Atenção: os erros abaixo são retornados por item, dentro do array de resposta, e não como falha HTTP global da requisição.
| Código Interno | Código HTTP | Descrição |
|---|---|---|
UAPPI_STORE_PRODUCT_NOT_FOUND | 404 | O produto informado não foi encontrado. |
UAPPI_STORE_PRODUCT_IS_SOFT_DELETED | 409 | O produto informado está em exclusão lógica e não pode ser alterado. |
Restauração de Produto
/products/restore
Possibilita a restauração de produtos removidos logicamente
Descrição
Endpoint responsável por recuperar produtos que foram excluídos de forma lógica (soft delete), tornando-os visíveis novamente no catálogo sem a necessidade de recadastrá-los.
Atua em contexto administrativo e complementa o fluxo de exclusão lógica: apenas produtos que possuem o campo deleted_at preenchido podem ser restaurados. Produtos que nunca foram removidos, ou que foram excluídos permanentemente (hard delete), não são elegíveis para restauração.
Comportamento em lote
A operação recebe uma lista de produtos. Cada item é processado individualmente: falhas em um item não impedem o processamento dos demais. O campo error de cada objeto na resposta indica se a restauração foi bem-sucedida ou qual problema ocorreu.
Cascata de variações
Ao restaurar um produto pai, suas variações que estejam em soft delete são automaticamente restauradas com ele. Não é necessário listar as variações separadamente quando o objetivo é restaurar o produto pai completo.
Restrição para variações com pai removido
Não é possível restaurar uma variação cujo produto pai ainda esteja em soft delete. O produto pai precisa estar ativo para que suas variações possam ser restauradas individualmente. Para restaurar uma variação nessa situação, restaure primeiro o produto pai.
Parâmetros
Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Content-Type | application/json | Tipo de conteúdo |
Authorization | Bearer {userToken} | Token de autenticação |
Parâmetros do Corpo
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
products | array | ✅ | Lista de produtos que devem ser restaurados |
products.*.productId | integer | ✅ | Identificador do produto a ser restaurado (mínimo: 1, sem duplicatas no mesmo lote) |
Exemplo de Requisição
1curl --request PUT \2 --url {{MAIN_URL}}/products/restore \3 --header "Authorization: Bearer SEU_TOKEN_AQUI" \4 --data '{5 "products": [6 {7 "productId": 18 },9 {10 "productId": 211 }12 ]13 }'✅ Resposta de Sucesso
HTTP Status: 200 OK
A resposta é um array com um objeto por produto solicitado. O campo error estará vazio em caso de sucesso, ou preenchido com o código de erro quando o produto não puder ser restaurado.
1{2 "status": true,3 "data": [4 {5 "productId": 1,6 "error": null7 },8 {9 "productId": 2,10 "error": null11 }12 ]13}⚠️ Possíveis erros:
Atenção: os erros abaixo são retornados por item, dentro do array de resposta, e não como falha HTTP global da requisição.
| Código Interno | Código HTTP | Descrição |
|---|---|---|
UAPPI_STORE_PRODUCT_NOT_FOUND | 404 | O produto informado não foi encontrado. |
UAPPI_STORE_PRODUCT_NOT_RESTORABLE | 409 | O produto não está em soft delete e não pode ser restaurado. |
UAPPI_STORE_PRODUCT_VARIATION_PARENT_IS_SOFT_DELETED | 409 | A variação não pode ser restaurada enquanto o produto pai ainda estiver em exclusão lógica. |