Regras do repricer
Lista, cria, pausa e exclui as regras do repricer automático que disputa o menor preço do seller.
Uma regra do repricer diz a um produto do seller: "acompanhe o menor preço dos outros sellers no mesmo produto-mestre e fique 1 centavo abaixo, sem descer de tal piso". O produto-mestre é o cadastro único que agrupa as ofertas de vários sellers para o mesmo item. Há no máximo uma regra por produto: enviar o mesmo produto de novo atualiza a regra existente.
Ao salvar, a plataforma já avalia os produtos enviados, então a primeira decisão aparece em Execuções do repricer logo em seguida. As regras de proteção (piso, teto, corte de 20% por execução, esfriamento de 10 minutos, limite de 5 preços por hora) estão descritas na visão geral.
Listar regras
/api/v1/vendor/repricing/rulesSellerLista as regras do repricer do seller
Parâmetros de consulta
pageintegerpadrão: 1Exemplo de requisição: listar
curl "$BASE_URL/api/v1/vendor/repricing/rules?page=1" \
-H "Authorization: Bearer $TOKEN"Resposta: listar
{
"items": [
{
"id": "e1a4b7c2-0d3f-4e58-9a61-3c2f8b7d1a90",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"product_id": "0e6c2f44-5d1a-4c8b-8f33-2a9b7c1d5e60",
"product_name": "Camiseta Algodão Azul",
"strategy": "beat_lowest",
"min_price_cents": 7500,
"max_price_cents": 9990,
"status": "active",
"last_result": "applied"
}
],
"total": 1
}Campos da resposta
itemsarrayRegras da página, da alterada mais recentemente para a mais antiga.
iduuidvendor_iduuidproduct_iduuidproduct_namestringstrategystringbeat_lowest (bater o menor preço).min_price_centsinteger | omittedmin_margin_bpsinteger | omitted1500 = 15%).max_price_centsinteger | omittedstatusstringactivepausedactive avalia; paused não.last_resultstring | omittedtotalintegerCriar ou atualizar regras
/api/v1/vendor/repricing/rulesSellerCria ou atualiza regras para vários produtos
Aplica o mesmo piso e teto a todos os product_ids enviados. A regra fica ativa. Produtos que não são do seller, não existem ou foram excluídos são ignorados em silêncio: confira o upserted da resposta.
Corpo da requisição
product_idsarray of uuidobrigatóriomin_price_centsintegermin_margin_bps.min_margin_bpsintegermax_price_centsintegerstrategystringbeat_lowest.Exemplo de requisição: criar
curl -X POST "$BASE_URL/api/v1/vendor/repricing/rules" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"product_ids": ["0e6c2f44-5d1a-4c8b-8f33-2a9b7c1d5e60"],
"min_price_cents": 7500,
"max_price_cents": 9990
}'Resposta: criar
{ "upserted": 1 }Campos da resposta
upsertedintegerproduct_ids quando algum produto foi ignorado.Pausar ou retomar uma regra
/api/v1/vendor/repricing/rules/{id}/statusSellerPausa ou retoma uma regra do repricer
Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
statusstringobrigatórioactivepausedpaused interrompe a avaliação; active retoma.Exemplo de requisição: pausar
curl -X POST "$BASE_URL/api/v1/vendor/repricing/rules/e1a4b7c2-0d3f-4e58-9a61-3c2f8b7d1a90/status" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{ "status": "paused" }'Resposta: pausar
{ "status": "paused" }A resposta repete o status enviado, mesmo quando o id não é de nenhuma regra sua (nesse caso nada muda).
Excluir uma regra
/api/v1/vendor/repricing/rules/{id}SellerExclui uma regra do repricer
A exclusão é lógica: a regra sai da lista e para de ser avaliada. O histórico em Execuções do repricer é mantido. Enviar o mesmo produto em POST depois a recria ativa.
Parâmetros de caminho
iduuidobrigatórioResposta: excluir
{ "deleted": true }A resposta é 200 mesmo que o id não exista ou seja de outro seller; nesse caso nada é apagado.
Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 401 | Token ausente ou inválido. | {"error":"missing authorization header"} |
| 403 | O token não é de um usuário seller, ou ele não está ligado a um seller. | {"error":"no vendor account associated with this user"} |
| 400 | Corpo que não é JSON. | {"error":"invalid request body","detail":"..."} |
| 400 | Criar sem piso. | {"error":"failed to save rules","detail":"a floor is required: set min_price_cents or min_margin_bps"} |
| 400 | Pausar com status diferente de active e paused, ou id que não é UUID. | {"error":"failed to update status","detail":"invalid status"} |
| 500 | Falha ao listar ou excluir. | {"error":"failed to list rules","detail":"..."} |