Skip to content

Restrições de Produtos

As restrições de produtos permitem configurar regras de acesso e venda vinculadas a uma Política Comercial específica. Elas são fundamentais para controlar quem pode visualizar ou comprar determinados itens baseando-se no contexto da loja.

Visão Geral

Diferente de configurações globais, as restrições operam no nível de política comercial. Atualmente, a principal restrição suportada é a idade mínima (requiredAge), utilizada para restringir produtos de conteúdo adulto ou controlados.

Entidades Envolvidas

  • Produto (productId): O item que receberá a regra.
  • Política Comercial (tradePolicyId): A política comercial onde a regra será aplicada.
  • Chave Única de Restrição

    Cada restrição é identificada de forma única pela combinação de productId e tradePolicyId. Esta chave composta garante que um produto possa ter comportamentos distintos em diferentes políticas comerciais, mas apenas uma configuração ativa por par.

    Processamento em Lote

    Os endpoints de restrição operam em lote (máximo de 100 itens por requisição) e seguem estas premissas:

    1. Independência: Os itens são processados um a um. Se um falhar, os demais continuam sendo processados.

    2. Feedback Detalhado: O campo error na resposta indica o status de cada item. Se estiver vazio (""), a operação para aquele item foi bem-sucedida.

    3. Idempotência: No caso de remoção, se o par informado não existir, a API não retornará erro, pois o estado final desejado (inexistência do registro) já foi alcançado.

    Notas e Considerações

  • Permissão: É necessário o escopo PRODUCT_WRITE.

Atualização de restrições de produtos

PUT /products/restrictions

Cria ou atualiza as restrições de múltiplos produtos em lote.

Descrição

Executa o upsert das restrições. Se a combinação de productId e tradePolicyId já existir, os dados serão atualizados; caso contrário, um novo registro será criado.

Para entender as regras de processamento em lote e a chave única, consulte a Restrições de Produtos.

🔓 Permissão

Escopo: PRODUCT_WRITE

Headers Obrigatórios

HeaderValorDescrição
Content-Typeapplication/jsonTipo de conteúdo da requisição
AuthorizationBearer {userToken}Token de autenticação do usuário

Parâmetros do Corpo

ParâmetroTipoObrigatórioPadrãoDescrição
productsarray✅—Lista de restrições. Máximo de 100 itens.
products.*.productIdinteger✅—ID do produto.
products.*.tradePolicyIdinteger✅—ID da política comercial vinculada.
products.*.requiredAgeinteger✅0Idade mínima exigida. Use 0 para remover a restrição etária.

Exemplo de Requisição

1curl --request PUT \
2 --url {{MAIN_URL}}/products/restrictions \
3 --header "Authorization: Bearer {userToken}" \
4 --header "Content-Type: application/json" \
5 --data '{
6 "products": [
7 {
8 "productId": 10,
9 "tradePolicyId": 2,
10 "requiredAge": 18
11 }
12 ]
13 }'

✅ Resposta de Sucesso

1{
2 "status": true,
3 "data": [
4 {
5 "productId": 10,
6 "tradePolicyId": 2,
7 "requiredAge": 18,
8 "error": ""
9 }
10 ]
11}

⚠️ Possíveis Erros

Código InternoCódigo HTTPDescrição
UAPPI_STORE_PRODUCT_NOT_FOUND404Produto não encontrado.
UAPPI_CORE_INVALID_TRADE_POLICY_ID404A(s) políticas comerciais não são permitidas ou não existem.

Remoção de restrições de produtos

DELETE /products/restrictions

Remove as restrições de múltiplos produtos por pares de produto e política comercial.

Descrição

Esta rota exclui permanentemente o registro de restrição vinculado ao par productId + tradePolicyId. Após a remoção, o produto volta a se comportar como um item sem restrições dentro da política comercial informada.

Para entender as regras de processamento em lote e a chave única, consulte a Restrições de Produtos.

🔓 Permissão

Escopo: PRODUCT_WRITE

Headers Obrigatórios

HeaderValorDescrição
Content-Typeapplication/jsonTipo de conteúdo da requisição
AuthorizationBearer {userToken}Token de autenticação do usuário

Parâmetros do Corpo

ParâmetroTipoObrigatórioDescrição
productsarray✅Lista de pares a serem removidos. Máximo de 100 itens.
products.*.productIdinteger✅ID do produto.
products.*.tradePolicyIdinteger✅ID da política comercial.

Exemplo de Requisição

1curl --request DELETE \
2 --url {{MAIN_URL}}/products/restrictions \
3 --header "Authorization: Bearer {userToken}" \
4 --header "Content-Type: application/json" \
5 --data '{
6 "products": [
7 {
8 "productId": 10,
9 "tradePolicyId": 2
10 }
11 ]
12 }'

✅ Resposta de Sucesso

A operação é idempotente: se o par não existir, o retorno será de sucesso com error: "".

1{
2 "status": true,
3 "data": [
4 {
5 "productId": 10,
6 "tradePolicyId": 2,
7 "error": ""
8 }
9 ]
10}

⚠️ Possíveis Erros

Código InternoCódigo HTTPDescrição
UAPPI_STORE_PRODUCT_NOT_FOUND404Produto não encontrado.
UAPPI_CORE_INVALID_TRADE_POLICY_ID404A(s) políticas comerciais não são permitidas ou não existem.

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

;