Criar, alterar e excluir regra
Cadastra, ajusta e remove uma regra de cupom automático.
Crie uma regra por campanha de relacionamento: pós-compra, reativação de quem comprou uma vez, recompensa para pedidos grandes. A regra vale para os pedidos concluídos a partir de agora. O PUT é parcial: envie só o que muda. Se a loja usa o Protetor de Margem, a criação é recusada quando o desconto levaria a margem abaixo do piso (a mensagem vem em detail).
Criar uma regra
/api/v1/admin/auto-couponsAdminCria uma regra de cupom automático
Corpo da requisição
namestringobrigatórioNome da regra.
trigger_typestringobrigatórioorder_completedfirst_ordernth_ordermin_order_amountmanualQuando gerar o cupom.
discount_typestringobrigatóriopercentagefixedTipo do desconto.
discount_valueintegerobrigatórioPontos-base (
percentage) ou centavos (fixed). Maior que zero.descriptionstringDescrição livre.
trigger_valueintegerpadrão: 0N de
nth_order ou mínimo em centavos de min_order_amount.coupon_prefixstringpadrão: AUTOPrefixo do código.
min_order_amountintegerpadrão: 0Subtotal mínimo para usar o cupom, em centavos.
max_usesintegerpadrão: 1Usos por cupom gerado. Zero ou negativo vira 1.
valid_daysintegerpadrão: 30Dias de validade do cupom gerado. Zero ou negativo vira 30.
statusstringpadrão: activeactive ou disabled (ou A/D). Vazio vira A.send_emailbooleanpadrão: trueEnvia o cupom por e-mail ao cliente.
vendor_iduuidTorna a regra de um seller. Omita para regra da loja.
Exemplo de requisição: criar
bash
curl -X POST "$BASE_URL/api/v1/admin/auto-coupons" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "10% na segunda compra",
"trigger_type": "first_order",
"discount_type": "percentage",
"discount_value": 1000,
"coupon_prefix": "VOLTE",
"min_order_amount": 15000,
"valid_days": 30
}'Resposta: criar
201Regra criada
json
{
"id": 3,
"name": "10% na segunda compra",
"description": "Cupom enviado depois do primeiro pedido concluído",
"trigger_type": "first_order",
"trigger_value": 0,
"coupon_prefix": "VOLTE",
"discount_type": "percentage",
"discount_value": 1000,
"min_order_amount": 15000,
"max_uses": 1,
"valid_days": 30,
"status": "A",
"send_email": true,
"created_at": "2026-10-11T14:20:05.113Z",
"updated_at": "2026-10-11T14:20:05.113Z"
}Campos da resposta
idintegerIdentificador da regra. Atenção: é um número inteiro, não UUID.
namestringNome da regra.
descriptionstringDescrição livre.
trigger_typestringQuando gerar o cupom (veja a tabela na home da seção).
trigger_valueintegerParâmetro do gatilho: o valor mínimo do pedido em centavos (
min_order_amount) ou o N (nth_order). Ignorado nos demais.coupon_prefixstringPrefixo do código gerado.
discount_typestringpercentage ou fixed.discount_valueintegerPontos-base em
percentage (1000 = 10%); centavos em fixed.min_order_amountintegerSubtotal mínimo, em centavos, para usar o cupom gerado.
max_usesintegerQuantas vezes cada cupom gerado pode ser usado.
valid_daysintegerValidade do cupom gerado, em dias a partir da geração.
statusstringA ativa ou D desativada.send_emailbooleanSe o cliente recebe o cupom por e-mail.
vendor_iduuid | omittedSeller dono da regra. Ausente = regra da loja.
created_atstring (RFC 3339)Criação.
updated_atstring (RFC 3339)Última alteração.
Erros: criar
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 401 | Token ausente ou inválido. | {"error":"authentication required"} |
| 403 | Módulo promotions ou auto-coupons desligado na loja. | {"error":"module_disabled","module":"auto-coupons"} |
| 403 | Falta o privilégio: view_auto_coupons (ou view_promotions) para ler, manage_auto_coupons (ou manage_promotions) para gravar. | {"error":"insufficient privileges","required":"manage_promotions"} |
| 400 | Nome vazio, trigger_type ou discount_type fora da lista, discount_value menor ou igual a zero, corpo inválido ou oferta abaixo do piso de margem. Todas as recusas desta rota são 400, com o motivo em detail. | {"error":"failed to create rule","detail":"invalid trigger_type: monthly"} |
Alterar uma regra
/api/v1/admin/auto-coupons/{id}AdminAltera campos de uma regra
Parâmetros de caminho
idintegerobrigatórioId da regra (inteiro).
Corpo da requisição
namestringNome da regra.
trigger_typestringorder_completedfirst_ordernth_ordermin_order_amountmanualQuando gerar o cupom.
discount_typestringpercentagefixedTipo do desconto.
discount_valueintegerPontos-base (
percentage) ou centavos (fixed). Maior que zero.descriptionstringDescrição livre.
trigger_valueintegerN de
nth_order ou mínimo em centavos de min_order_amount.coupon_prefixstringPrefixo do código.
min_order_amountintegerSubtotal mínimo para usar o cupom, em centavos.
max_usesintegerUsos por cupom gerado. Zero ou negativo vira 1.
valid_daysintegerDias de validade do cupom gerado. Zero ou negativo vira 30.
statusstringactive ou disabled (ou A/D). Vazio vira A.send_emailbooleanEnvia o cupom por e-mail ao cliente.
vendor_iduuidTorna a regra de um seller. Omita para regra da loja.
Exemplo de requisição: alterar
bash
curl -X PUT "$BASE_URL/api/v1/admin/auto-coupons/3" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"discount_value": 1500,
"valid_days": 45
}'Resposta: alterar
200Regra alterada
json
{
"id": 3,
"name": "10% na segunda compra",
"description": "Cupom enviado depois do primeiro pedido concluído",
"trigger_type": "first_order",
"trigger_value": 0,
"coupon_prefix": "VOLTE",
"discount_type": "percentage",
"discount_value": 1500,
"min_order_amount": 15000,
"max_uses": 1,
"valid_days": 45,
"status": "A",
"send_email": true,
"created_at": "2026-10-11T14:20:05.113Z",
"updated_at": "2026-10-11T14:20:05.113Z"
}Campos da resposta
idintegerIdentificador da regra. Atenção: é um número inteiro, não UUID.
namestringNome da regra.
descriptionstringDescrição livre.
trigger_typestringQuando gerar o cupom (veja a tabela na home da seção).
trigger_valueintegerParâmetro do gatilho: o valor mínimo do pedido em centavos (
min_order_amount) ou o N (nth_order). Ignorado nos demais.coupon_prefixstringPrefixo do código gerado.
discount_typestringpercentage ou fixed.discount_valueintegerPontos-base em
percentage (1000 = 10%); centavos em fixed.min_order_amountintegerSubtotal mínimo, em centavos, para usar o cupom gerado.
max_usesintegerQuantas vezes cada cupom gerado pode ser usado.
valid_daysintegerValidade do cupom gerado, em dias a partir da geração.
statusstringA ativa ou D desativada.send_emailbooleanSe o cliente recebe o cupom por e-mail.
vendor_iduuid | omittedSeller dono da regra. Ausente = regra da loja.
created_atstring (RFC 3339)Criação.
updated_atstring (RFC 3339)Última alteração.
Erros: alterar
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 401 | Token ausente ou inválido. | {"error":"authentication required"} |
| 403 | Módulo promotions ou auto-coupons desligado na loja. | {"error":"module_disabled","module":"auto-coupons"} |
| 403 | Falta o privilégio: view_auto_coupons (ou view_promotions) para ler, manage_auto_coupons (ou manage_promotions) para gravar. | {"error":"insufficient privileges","required":"manage_promotions"} |
| 400 | O id da regra não é um número inteiro. | {"error":"invalid rule ID","detail":"número em formato não aceito: \"abc\". ..."} |
| 400 | Validação (discount_value, trigger_type, discount_type), corpo inválido, ou regra inexistente (auto-coupon rule not found). | {"error":"failed to update rule","detail":"auto-coupon rule not found: 99999"} |
Excluir uma regra
/api/v1/admin/auto-coupons/{id}AdminExclui uma regra e os registros de cupons gerados
Parâmetros de caminho
idintegerobrigatórioId da regra (inteiro).
Exemplo de requisição: excluir
bash
curl -X DELETE "$BASE_URL/api/v1/admin/auto-coupons/3" \
-H "Authorization: Bearer $TOKEN"Resposta: excluir
200Regra excluída
json
{
"message": "rule deleted"
}Erros: excluir
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 401 | Token ausente ou inválido. | {"error":"authentication required"} |
| 403 | Módulo promotions ou auto-coupons desligado na loja. | {"error":"module_disabled","module":"auto-coupons"} |
| 403 | Falta o privilégio: view_auto_coupons (ou view_promotions) para ler, manage_auto_coupons (ou manage_promotions) para gravar. | {"error":"insufficient privileges","required":"manage_promotions"} |
| 400 | O id da regra não é um número inteiro. | {"error":"invalid rule ID","detail":"número em formato não aceito: \"abc\". ..."} |
| 404 | Regra inexistente. | {"error":"failed to delete rule","detail":"auto-coupon rule not found: 99999"} |