Análises e revisão
Lista as análises de fraude, consulta uma, registra a decisão manual e vê os totais.
Estas rotas formam a fila de revisão do antifraude: a lista com os filtros, o detalhe de uma análise, a decisão do revisor e os totais do painel.
Listar análises
Lista as análises, da mais recente à mais antiga. Use o filtro status=manual_review para a fila de revisão.
/api/v1/admin/fraud/analysesAdminLista as análises de fraude
Autenticação: Authorization: Bearer <token> de um administrador com manage_fraud ou manage_orders. Requer o módulo clearsale ativo.
Parâmetros de consulta
statusstringpendingapprovedrejectedmanual_reviewcancellederrorblockedchallengereview_expiredpending em silêncio.risk_levelstringlowmediumhighlow, medium ou high.order_iduuidpageintegerpadrão: 1per_pageintegerpadrão: 20Exemplo de requisição
curl "$BASE_URL/api/v1/admin/fraud/analyses?status=manual_review" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"analyses": [
{
"id": 112,
"order_id": "6af86ed3-d949-474d-8e04-513c6e83bfe4",
"score": 54.5,
"status": "manual_review",
"risk_level": "medium",
"analysis_id": "CS-8841023",
"clearsale_order_id": "PEDIDO-20261010-0004",
"reason": "Divergência entre endereço de cobrança e entrega",
"created_at": "2026-10-11T21:06:50Z",
"updated_at": "2026-10-11T21:07:02Z"
}
],
"total": 1,
"page": 1,
"per_page": 20,
"total_pages": 1
}Campos da resposta
analysesarray | nullnull quando não há nenhuma, não uma lista vazia.analyses[].idintegeranalyses[].order_iduuidanalyses[].scorenumber0 (menor risco) a 100 (maior risco).analyses[].statusstringpendingapprovedrejectedmanual_reviewcancellederrorblockedchallengereview_expiredanalyses[].risk_levelstringlowmediumhighlow (até 30), medium (até 60) ou high.analyses[].analysis_idstringanalyses[].clearsale_order_idstringanalyses[].reasonstringanalyses[].reviewed_bystringanalyses[].reviewed_atstringanalyses[].raw_responseobjectanalyses[].created_atstringanalyses[].updated_atstringtotalintegerpageintegerper_pageintegertotal_pagesintegerErros
| 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":"clearsale"} / {"error":"insufficient privileges","required":"manage_fraud"} |
| 500 | Falha na consulta | {"error":"Failed to list analyses"} |
Consultar uma análise
Devolve uma análise pelo identificador numérico, com a resposta bruta do ClearSale.
/api/v1/admin/fraud/{id}AdminConsulta uma análise de fraude
Autenticação: Authorization: Bearer <token> de um administrador com manage_fraud ou manage_orders. Requer o módulo clearsale ativo.
Parâmetros de caminho
idintegerobrigatórioExemplo de requisição
curl "$BASE_URL/api/v1/admin/fraud/112" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"id": 112,
"order_id": "6af86ed3-d949-474d-8e04-513c6e83bfe4",
"score": 54.5,
"status": "manual_review",
"risk_level": "medium",
"analysis_id": "CS-8841023",
"clearsale_order_id": "PEDIDO-20261010-0004",
"reason": "Divergência entre endereço de cobrança e entrega",
"created_at": "2026-10-11T21:06:50Z",
"updated_at": "2026-10-11T21:07:02Z"
}Campos da resposta
idintegerorder_iduuidscorenumber0 (menor risco) a 100 (maior risco).statusstringpendingapprovedrejectedmanual_reviewcancellederrorblockedchallengereview_expiredrisk_levelstringlowmediumhighlow (até 30), medium (até 60) ou high.analysis_idstringclearsale_order_idstringreasonstringreviewed_bystringreviewed_atstringraw_responseobjectcreated_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":"clearsale"} / {"error":"insufficient privileges","required":"manage_fraud"} |
| 400 | id que não é número | {"error":"Invalid analysis ID"} |
| 404 | Análise inexistente | {"error":"Analysis not found"} |
Decidir uma análise
O revisor registra a decisão: aprovar, reprovar ou cancelar. A plataforma grava o estado novo, quem decidiu e quando. É a saída da fila manual_review.
/api/v1/admin/fraud/{id}AdminRegistra a decisão manual sobre uma análise
Autenticação: Authorization: Bearer <token> de um administrador com manage_fraud ou manage_orders. Requer o módulo clearsale ativo.
Parâmetros de caminho
idintegerobrigatórioCorpo da requisição
statusstringobrigatórioapprovedrejectedcancelledreasonstringExemplo de requisição
curl -X PUT "$BASE_URL/api/v1/admin/fraud/112" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"status": "approved",
"reason": "Cliente confirmou a compra por telefone"
}'Resposta
{
"success": true,
"analysis": {
"id": 112,
"order_id": "6af86ed3-d949-474d-8e04-513c6e83bfe4",
"score": 54.5,
"status": "approved",
"risk_level": "medium",
"analysis_id": "CS-8841023",
"clearsale_order_id": "PEDIDO-20261010-0004",
"reason": "Cliente confirmou a compra por telefone",
"created_at": "2026-10-11T21:06:50Z",
"updated_at": "2026-10-11T21:07:02Z",
"reviewed_by": "67bf291c-0846-4053-9528-8cfd5ab0ebf1",
"reviewed_at": "2026-10-11T21:30:00Z"
}
}Campos da resposta
successbooleantrue.analysisobjectanalysis.idintegeranalysis.order_iduuidanalysis.scorenumber0 (menor risco) a 100 (maior risco).analysis.statusstringpendingapprovedrejectedmanual_reviewcancellederrorblockedchallengereview_expiredanalysis.risk_levelstringlowmediumhighlow (até 30), medium (até 60) ou high.analysis.analysis_idstringanalysis.clearsale_order_idstringanalysis.reasonstringanalysis.reviewed_bystringanalysis.reviewed_atstringanalysis.raw_responseobjectanalysis.created_atstringanalysis.updated_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":"clearsale"} / {"error":"insufficient privileges","required":"manage_fraud"} |
| 400 | id que não é número | {"error":"Invalid analysis ID"} |
| 400 | Corpo inválido ou status fora de approved/rejected/cancelled | {"error":"Status must be 'approved', 'rejected', or 'cancelled'"} |
| 500 | Análise inexistente ou falha ao gravar (a mensagem diz Failed to update analysis: ...) | {"error":"Failed to update analysis: clearsale: analysis 999 not found"} |
Estatísticas
Totais para o painel de antifraude: quantas análises existem em cada estado, a taxa de aprovação e a pontuação média.
/api/v1/admin/fraud/statsAdminTotais das análises de fraude
Autenticação: Authorization: Bearer <token> de um administrador com manage_fraud ou manage_orders. Requer o módulo clearsale ativo.
Sem parâmetros.
Exemplo de requisição
curl "$BASE_URL/api/v1/admin/fraud/stats" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"total_analyses": 120,
"approved_count": 96,
"rejected_count": 8,
"manual_review_count": 4,
"pending_count": 2,
"error_count": 10,
"approval_rate_bps": 9230,
"average_score": 21.4,
"high_risk_count": 6
}Campos da resposta
total_analysesintegerapproved_countintegerrejected_countintegermanual_review_countintegerpending_countintegererror_countintegerapproval_rate_bpsinteger9230 = 92,30%).average_scorenumberhigh_risk_countintegerErros
| 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":"clearsale"} / {"error":"insufficient privileges","required":"manage_fraud"} |
| 500 | Falha na consulta | {"error":"Failed to get fraud statistics"} |