Moderação de produtos e sellers
Como a pré-moderação segura produtos de sellers até o administrador aprovar, como recusar com motivo, aprovar em lote e decidir candidaturas de sellers.
Em um marketplace, o produto cadastrado por um seller (lojista) pode não ir ao ar direto: ele fica numa fila de pré-moderação até um administrador aprovar. Esta seção cobre essa fila, as ações em lote e a análise das candidaturas de sellers (a decisão de deixar um seller novo vender). Quando o produto é aprovado ele assume o status que o seller pretendia; quando é recusado o seller vê o motivo no produto.
Como funciona
- Produto entra na fila
Quando o seller está sujeito à aprovação de produtos (campo
products_require_approvaldo cadastro dele), o produto novo nasce comstatus = Re o status que ele terá depois fica emintended_status. - Você revisa
Liste a fila (por padrão só
R) e abra cada produto. - Você decide
Aprove ou recuse um produto, ou em lote. A aprovação dispara o aviso ao seller, reindexa a busca e tenta ligar o produto ao catálogo mestre.
Status de produto que aparecem aqui
| Letra | Significado |
|---|---|
R | Aguardando moderação (a fila padrão). |
A | Ativo, publicado. |
H | Oculto. |
D | Desativado. |
X | Recusado na moderação, com rejected_reason. |
Estados da candidatura de seller
pending, under_review, approved, rejected. Aqui eles saem como palavras.
Conceitos-chave
Aprovar não confere o estado atual
Aprovar grava status = intended_status em qualquer produto que exista, mesmo que ele já esteja ativo ou tenha sido recusado antes. Aprovar um produto recusado o reabre. Recusar grava X em qualquer produto, inclusive um que já está no ar. Confira o status antes de recusar.
Moderação não é a mesma coisa que KYC
KYC verifica documentos da empresa (veja Verificação KYC). A candidatura decide se o seller entra no marketplace. A moderação de produto decide o que ele pode publicar.
Endpoints
| Método | Caminho | Para que serve | Auth |
|---|---|---|---|
| GET | /api/v1/admin/moderation/queue | Listar a fila de produtos | admin |
| POST | /api/v1/admin/moderation/{id}/approve | Aprovar um produto | admin |
| POST | /api/v1/admin/moderation/{id}/reject | Recusar um produto | admin |
| POST | /api/v1/admin/moderation/bulk | Aprovar ou recusar em lote (ação no corpo) | admin |
| POST | /api/v1/admin/moderation/bulk-approve | Aprovar em lote | admin |
| POST | /api/v1/admin/moderation/bulk-reject | Recusar em lote | admin |
| GET | /api/v1/admin/moderation/vendor-applications | Listar candidaturas | admin |
| PUT | /api/v1/admin/moderation/vendor-applications/{id}/review | Decidir uma candidatura | admin |
Erros comuns
- Aprovar um id que não existe. Devolve 500
failed to approve productcomproduct not found, não 404. - Recusar sem motivo.
reason(ourejected_reason, ounotes) é obrigatório:400 rejected_reason is required. - Esperar que o lote falhe por inteiro.
bulkignora em silêncio os ids que falham e só informaupdated.bulk-approveebulk-rejectdevolvem o resultado de cada id. - Mandar
filtersemsimulateantes. O lote por filtro responde428 simulate_requiredaté você simular e repetir com oconfirm_token. - Esperar
[]na fila vazia.productsvemnullquando não há itens. Tratenullcomo lista vazia. - Passar um id que não é UUID. Volta 500 com a mensagem do banco traduzida, não 400.