Regras de comissão
Define quanto a loja retém de cada item vendido por um seller, por seller, categoria e faixa de valor.
Uma regra de comissão diz quanto do valor de um item vendido fica com a loja (a comissão) e quanto vai para o seller. Tudo é calculado por item dos pedidos dos sellers, e o resultado vira uma linha do razão de comissões.
Listar regras
Devolve todas as regras de comissão da loja, sem paginação.
/api/v1/admin/commission-rulesAdminLista as regras de comissão
Autenticação: Authorization: Bearer <token> de um administrador com o privilégio view_vendors ou manage_vendors (as escritas exigem manage_vendors). O módulo commissions precisa estar ativo na loja; com o módulo desligado a resposta é 403.
Sem parâmetros.
Exemplo de requisição
curl "$BASE_URL/api/v1/admin/commission-rules" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"rules": [
{
"id": "c962f0d4-b899-4055-b156-e559873970eb",
"name": "Comissão padrão 10%",
"rule_type": "percentage",
"vendor_id": null,
"category_id": null,
"rate": 1000,
"min_order_value": 0,
"max_order_value": 0,
"priority": 0,
"status": "active",
"created_at": "2026-03-16T15:27:29.907292Z",
"updated_at": "2026-03-16T15:27:29.907292Z"
}
],
"total": 1
}Campos da resposta
rulesarrayrules[].iduuidrules[].namestringrules[].rule_typestringpercentagefixedpercentage (taxa em pontos-base) ou fixed (valor fixo em centavos por item). O valor tiered aparece no modelo, mas nenhuma conta o aplica.rules[].vendor_iduuid | nullnull vale para todos os sellers.rules[].vendor_namestringvendor_id está preenchido.rules[].category_iduuid | nullnull vale para todas.rules[].rateintegerpercentage: pontos-base (1000 = 10%). Para fixed: centavos (500 = R$ 5,00).rules[].min_order_valueinteger0 = sem mínimo.rules[].max_order_valueinteger0 = sem máximo.rules[].priorityintegerrules[].statusstringactiveinactiveactive ou inactive.rules[].created_atstringrules[].updated_atstringtotalintegerErros
| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem token ou token inválido | {"error":"missing authorization header"} |
| 403 | Sem o privilégio exigido, ou módulo desligado | {"error":"module_disabled","module":"commissions"} / {"error":"insufficient privileges","required":"manage_vendors"} |
Criar regra
Cria uma regra. A partir daí, todo item vendido depois que casar com ela gera uma entrada no razão com essa taxa. Entradas já gravadas não são recalculadas.
/api/v1/admin/commission-rulesAdminCria uma regra de comissão
Autenticação: Authorization: Bearer <token> de um administrador com o privilégio view_vendors ou manage_vendors (as escritas exigem manage_vendors). O módulo commissions precisa estar ativo na loja; com o módulo desligado a resposta é 403.
Corpo da requisição
namestringobrigatóriorule_typestringobrigatóriopercentagefixedpercentage ou fixed. Qualquer outro valor é recusado.rateintegerobrigatóriopercentage: pontos-base (1000 = 10%); fixed: centavos.vendor_iduuidcategory_iduuidmin_order_valueintegerpadrão: 00 (sem mínimo).max_order_valueintegerpadrão: 00 (sem máximo).priorityintegerpadrão: 00.statusstringpadrão: activeactiveinactiveactive ou inactive. Se omitido, a regra nasce ativa.Exemplo de requisição
curl -X POST "$BASE_URL/api/v1/admin/commission-rules" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Seller Loja Otávio, 8%",
"rule_type": "percentage",
"rate": 800,
"vendor_id": "9d9d9d56-eb43-4719-889d-055632f7c7da",
"priority": 10
}'Resposta
{
"id": "0a6c7f5e-3b1d-4c55-9a7e-2d1f4b8a9c01",
"name": "Seller Loja Otávio, 8%",
"rule_type": "percentage",
"vendor_id": "9d9d9d56-eb43-4719-889d-055632f7c7da",
"category_id": null,
"rate": 800,
"min_order_value": 0,
"max_order_value": 0,
"priority": 10,
"status": "active",
"created_at": "2026-03-16T15:27:29.907292Z",
"updated_at": "2026-03-16T15:27:29.907292Z",
"vendor_name": "Loja Otávio"
}Campos da resposta
iduuidnamestringrule_typestringpercentagefixedpercentage (taxa em pontos-base) ou fixed (valor fixo em centavos por item). O valor tiered aparece no modelo, mas nenhuma conta o aplica.vendor_iduuid | nullnull vale para todos os sellers.vendor_namestringvendor_id está preenchido.category_iduuid | nullnull vale para todas.rateintegerpercentage: pontos-base (1000 = 10%). Para fixed: centavos (500 = R$ 5,00).min_order_valueinteger0 = sem mínimo.max_order_valueinteger0 = sem máximo.priorityintegerstatusstringactiveinactiveactive ou inactive.created_atstringupdated_atstringErros
| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem token ou token inválido | {"error":"missing authorization header"} |
| 403 | Sem o privilégio exigido, ou módulo desligado | {"error":"module_disabled","module":"commissions"} / {"error":"insufficient privileges","required":"manage_vendors"} |
| 400 | Corpo inválido, name vazio, rule_type diferente de percentage/fixed ou rate menor ou igual a zero | {"error":"rate is required and must be greater than zero"} |
| 500 | vendor_id ou category_id que não é UUID, ou falha ao gravar | {"error":"failed to create commission rule","detail":"..."} |
Alterar regra
Altera só os campos enviados (alteração parcial, apesar do PUT). Campos omitidos mantêm o valor atual.
/api/v1/admin/commission-rules/{id}AdminAltera uma regra de comissão
Autenticação: Authorization: Bearer <token> de um administrador com o privilégio view_vendors ou manage_vendors (as escritas exigem manage_vendors). O módulo commissions precisa estar ativo na loja; com o módulo desligado a resposta é 403.
Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
Todos os campos são opcionais. Envie só o que quer mudar.
namestringrule_typestringpercentagefixedpercentage ou fixed. A atualização não valida este valor, então envie apenas um dos dois.rateintegerpercentage: pontos-base (1000 = 10%); fixed: centavos.vendor_iduuidcategory_iduuidmin_order_valueinteger0 significa sem mínimo.max_order_valueinteger0 significa sem máximo.priorityintegerstatusstringactiveinactiveactive ou inactive.Exemplo de requisição
curl -X PUT "$BASE_URL/api/v1/admin/commission-rules/d5ccd9e1-dd21-458c-90a5-4a7f3c2b9e10" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"rate": 900,
"priority": 20
}'Resposta
{
"id": "c962f0d4-b899-4055-b156-e559873970eb",
"name": "Comissão padrão 10%",
"rule_type": "percentage",
"vendor_id": null,
"category_id": null,
"rate": 900,
"min_order_value": 0,
"max_order_value": 0,
"priority": 20,
"status": "active",
"created_at": "2026-03-16T15:27:29.907292Z",
"updated_at": "2026-03-16T15:27:29.907292Z"
}Campos da resposta
iduuidnamestringrule_typestringpercentagefixedpercentage (taxa em pontos-base) ou fixed (valor fixo em centavos por item). O valor tiered aparece no modelo, mas nenhuma conta o aplica.vendor_iduuid | nullnull vale para todos os sellers.vendor_namestringvendor_id está preenchido.category_iduuid | nullnull vale para todas.rateintegerpercentage: pontos-base (1000 = 10%). Para fixed: centavos (500 = R$ 5,00).min_order_valueinteger0 = sem mínimo.max_order_valueinteger0 = sem máximo.priorityintegerstatusstringactiveinactiveactive ou inactive.created_atstringupdated_atstringErros
| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem token ou token inválido | {"error":"missing authorization header"} |
| 403 | Sem o privilégio exigido, ou módulo desligado | {"error":"module_disabled","module":"commissions"} / {"error":"insufficient privileges","required":"manage_vendors"} |
| 400 | Corpo inválido ou rate menor ou igual a zero | {"error":"rate is required and must be greater than zero"} |
| 500 | id que não é UUID, regra inexistente (o servidor não distingue) ou falha ao gravar | {"error":"failed to update commission rule","detail":"..."} |
Excluir regra
Remove a regra de vez. O histórico não é afetado: as entradas do razão já criadas continuam, apenas deixam de apontar para uma regra existente.
/api/v1/admin/commission-rules/{id}AdminExclui uma regra de comissão
Autenticação: Authorization: Bearer <token> de um administrador com o privilégio view_vendors ou manage_vendors (as escritas exigem manage_vendors). O módulo commissions precisa estar ativo na loja; com o módulo desligado a resposta é 403.
Parâmetros de caminho
iduuidobrigatórioExemplo de requisição
curl -X DELETE "$BASE_URL/api/v1/admin/commission-rules/d5ccd9e1-dd21-458c-90a5-4a7f3c2b9e10" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"status": "deleted"
}Erros
| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem token ou token inválido | {"error":"missing authorization header"} |
| 403 | Sem o privilégio exigido, ou módulo desligado | {"error":"module_disabled","module":"commissions"} / {"error":"insufficient privileges","required":"manage_vendors"} |
| 500 | Regra inexistente ou id que não é UUID (não há 404 nesta rota) | {"error":"failed to delete commission rule","detail":"commission rule not found: ..."} |