Status e candidatura do seller
Aprova, suspende, devolve à fila ou recusa um seller, e lê a candidatura dele com os documentos enviados.
Estas rotas mudam o que o seller pode fazer na loja. Escrever exige o privilégio manage_vendors; ler a candidatura exige view_vendors ou manage_vendors.
Mudar o status
Faz a transição e aplica os efeitos de cada uma.
/api/v1/admin/vendors/{id}/statusAdminMuda o status de um seller
Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
statusstringobrigatórioactivependingsuspendedrejected400.reasonstringrejected (fica em rejection_reason).status | Efeito |
|---|---|
active | Letra A. Grava approved_at e approved_by. Se o seller estava suspenso, os produtos ocultos (H) voltam a ativos. |
suspended | Letra D. Os produtos ativos passam a ocultos (H) e o seller é avisado. |
pending | Letra P. Devolve o seller à fila de aprovação, sem aprovar e sem publicar produtos. |
rejected | Letra R, com o reason. |
curl -X PATCH "$BASE_URL/api/v1/admin/vendors/94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36/status" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"status": "suspended"}'{ "message": "vendor suspended" }A mensagem muda conforme o status: vendor approved, vendor suspended, vendor back to pending, vendor rejected.
Recusar um seller
Atalho para a recusa, com o motivo.
/api/v1/admin/vendors/{id}/rejectAdminRecusa um seller com motivo
Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
reasonstring{ "message": "vendor rejected", "reason": "CNPJ divergente da razão social." }Ver a candidatura do seller
A candidatura do seller (a solicitação de entrada) e os documentos que ele anexou, direto da tela dele. Seller sem candidatura volta application: null e status: "not_started".
/api/v1/admin/vendors/{id}/applicationAdminLê a candidatura de um seller
Parâmetros de caminho
iduuidobrigatório{
"application": {
"id": "5bd98df9-8942-4cd2-b5b6-3806703d0c84",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"vendor_name": "Loja Seller Teste",
"status": "approved",
"submitted_at": "2026-05-29T19:54:40Z",
"reviewed_at": "2026-07-11T14:00:49Z",
"reviewed_by": "67bf291c-0846-4053-9528-8cfd5ab0ebf1",
"documents": [
{
"id": "bc0c7e42-613c-4da1-a34d-04ad104130e1",
"application_id": "5bd98df9-8942-4cd2-b5b6-3806703d0c84",
"document_type": "cnpj",
"file_url": "/uploads/vendor_application_document/5bd98df9/cartao-cnpj.png",
"file_name": "cartao-cnpj.png",
"status": "pending",
"created_at": "2026-07-13T23:17:11Z"
}
],
"created_at": "2026-05-29T19:54:40Z",
"updated_at": "2026-07-11T14:00:49Z"
},
"status": "approved"
}Campos da resposta
applicationobjectnull quando o seller nunca enviou.application.statusstringpendingunder_reviewapprovedrejectedapplication.rejection_reasonstringapplication.documentsarrayapplication.documents[].document_typestringcnpjidentityaddressbankotherapplication.documents[].file_urlstringapplication.documents[].statusstringpendingapprovedrejectedstatusstringpendingunder_reviewapprovedrejectednot_startednot_started quando não existe candidatura.Para decidir a candidatura use Candidaturas de sellers: aprovar ou recusar lá muda o seller junto.
Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | status ausente ou fora dos quatro valores. | {"error":"unsupported status: x","detail":"valid statuses: active, pending, suspended, rejected"} |
| 400 | Corpo não é JSON. | {"error":"invalid request body","detail":"..."} |
| 404 | Seller não existe ou foi excluído. O detail explica em português que o painel não restaura seller excluído. | {"error":"vendor not found","detail":"nenhum seller com o id ..."} |
| 500 | id que não é UUID. | {"error":"failed to update vendor status to active","detail":"..."} |
| 401 / 403 | Sem token ou sem privilégio. | {"error":"missing authorization header"} |