Regras automáticas de selo
Define o modo manual ou por regra de um selo, reavalia a regra na hora e lista os produtos ligados com o motivo de cada um.
No modo regra, em vez de você escolher produto a produto, a plataforma decide quais produtos merecem o selo e mantém a lista atualizada: "os 3 mais vendidos de cada categoria", "produtos com poucas unidades", "lançamentos dos últimos 14 dias". A tabela com todas as regras e seus parâmetros está na home da seção. O módulo product-stickers precisa estar ligado.
Ao salvar a regra, a plataforma já avalia uma vez. Depois, reavalia a cada 15 minutos (somente selos ativos em modo regra) e, para low_stock e best_seller, também em poucos segundos após uma mudança de estoque ou um novo pedido.
/api/v1/admin/stickers/{id}/ruleAdminDefine o modo e a regra do selo
Salva o modo e a regra e avalia na hora. Trocar para manual remove os produtos que haviam sido ligados pela regra e mantém os ligados à mão.
Parâmetros de caminho
iduuidobrigatórioCorpo da requisição (JSON)
assignment_modestringobrigatóriomanualrulemanual ou rule.rule_typestringbest_sellerlow_stocklowest_price_90dfree_shippingnew_arrivalon_promotionrule.rule_paramsobjectstarts_atstringends_atstring/api/v1/admin/stickers/{id}/evaluateAdminReavalia a regra agora
Roda a regra imediatamente e atualiza a lista de produtos ligados por regra. Sem corpo. A chamada só termina depois da avaliação. Só vale para selos em modo rule. Funciona mesmo com o selo desativado.
Parâmetros de caminho
iduuidobrigatório/api/v1/admin/stickers/{id}/assignmentsAdminLista os produtos ligados e o motivo
Mostra os produtos ligados ao selo, quem os ligou (rule ou à mão) e a evidência que fez a regra escolher cada um: unidades vendidas, saldo em estoque, preço mínimo, e assim por diante. Paginado em 50 por página.
Parâmetros de caminho
iduuidobrigatórioParâmetros de consulta
pageintegerpadrão: 1Exemplo de requisição
# "Últimas unidades": produtos com 5 unidades ou menos
curl -X PUT "$BASE_URL/api/v1/admin/stickers/$STICKER/rule" \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{"assignment_mode":"rule","rule_type":"low_stock","rule_params":{"max_qty":5}}'
# por que cada produto foi escolhido
curl "$BASE_URL/api/v1/admin/stickers/$STICKER/assignments" -H "Authorization: Bearer $TOKEN"Resposta
{ "message": "rule saved" }{ "status": "evaluated" }{
"products": [
{
"id": "5e833a7f-1a77-402c-835a-32594350d7a7",
"name": "Caneca Esmaltada 350 ml",
"assigned_by": "rule",
"evidence": { "days": 7 },
"attached_at": "2026-10-11T21:09:15Z"
}
],
"total": 5
}Campos de cada produto ligado
iduuidnamestringimage_urlstringassigned_bystringrulemanualevidenceobjectbest_seller traz units_sold e window_days; low_stock traz quantity e max_qty; lowest_price_90d traz current_cents, min_price_cents, max_price_cents e window_days; free_shipping e on_promotion trazem um indicador true. Em new_arrival, devolve os parâmetros da regra (days). Ausente nos ligados à mão.attached_atstringtotalintegerErros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | Corpo que não é JSON | {"error":"invalid request body","detail":"..."} |
| 401 | Token ausente ou expirado | {"error":"invalid or expired token"} |
| 403 | Módulo desligado | {"error":"module_disabled","module":"product-stickers"} |
| 404 | evaluate de um selo que não existe | {"error":"sticker not found"} |
| 422 | assignment_mode fora da lista, ou rule_type ausente ou inválido | {"error":"failed to set rule","detail":"invalid rule_type"} |
| 422 | evaluate em selo que não está em modo rule | {"error":"sticker is not in rule mode"} |
| 500 | Falha ao avaliar, ou id que não é UUID | {"error":"evaluation failed","detail":"..."} |