Decisões de KYC
Aprova ou recusa documentos, marca o checklist e emite o veredito final (aprovar ou recusar) de uma verificação de seller.
A decisão tem dois níveis. Primeiro você marca cada documento (aprovado ou recusado) e cada item do checklist (passou ou falhou). Depois decide a verificação inteira. Os dois níveis são independentes: nenhuma das rotas abaixo impede a aprovação final por causa de um documento pendente. Todas gravam no log de atividade quem agiu.
Decidir um documento
Marca um documento como aprovado ou recusado. Pode ser chamada de novo para mudar a decisão.
/api/v1/admin/kyc/{id}/documents/{docId}/statusAdminAprova ou recusa um documento da verificação
Parâmetros de caminho
iduuidobrigatóriodocIduuidobrigatóriodocuments[].id no detalhe.Corpo da requisição
statusstringobrigatórioapprovedrejectedreasonstringrejection_reason. Vazio apaga o motivo anterior.{ "message": "document status updated", "status": "rejected" }Marcar um item do checklist
Registra o resultado de uma conferência interna (por exemplo, "o CNPJ é válido").
/api/v1/admin/kyc/{id}/checklist/{itemId}AdminMarca um item do checklist como passou ou falhou
Parâmetros de caminho
iduuidobrigatórioitemIduuidobrigatóriochecklist[].id no detalhe.Corpo da requisição
passedbooleanobrigatóriotrue passou, false falhou. Se omitido vale false.notesstring{ "message": "checklist item updated" }Aprovar a verificação
Aprova um caso em P ou O. Grava reviewed_at, reviewed_by, limpa qualquer motivo de recusa anterior e define expires_at para um ano a partir de agora.
/api/v1/admin/kyc/{id}/approveAdminAprova a verificação de KYC
Parâmetros de caminho
iduuidobrigatórioNão há corpo.
{ "message": "verification approved", "status": "approved" }Recusar a verificação
Recusa um caso em P ou O. O motivo é obrigatório e fica visível para o seller, que pode corrigir os documentos e tentar de novo.
/api/v1/admin/kyc/{id}/rejectAdminRecusa a verificação de KYC
Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
reasonstringobrigatório{ "message": "verification rejected", "status": "rejected" }Exemplo de requisição
curl -X POST "$BASE_URL/api/v1/admin/kyc/3f1c2a54-6b0e-4d1a-9c53-0a1f7a2b9e10/reject" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"reason": "Contrato social desatualizado."}'Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | id, docId ou itemId não é UUID. | {"error":"invalid docId","detail":"docId must be a valid UUID"} |
| 400 | Corpo não é JSON válido. | {"error":"invalid request body","detail":"..."} |
| 400 | Recusa sem reason. | {"error":"rejection reason is required"} |
| 500 | Documento ou item não existe; status do documento diferente de approved/rejected. | {"error":"failed to update document status","detail":"invalid document status \"x\": must be 'approved' or 'rejected'"} |
| 500 | Aprovar ou recusar verificação que não existe ou já foi decidida. | {"error":"failed to approve verification","detail":"verification not found or already processed"} |
| 401 / 403 | Sem token, módulo desligado ou sem privilégio. | {"error":"module_disabled","module":"vendor-kyc"} |