Decisões em lote
Aprova ou rejeita vários itens da fila de moderação de mídias em uma só chamada.
Quando a fila acumula dezenas de itens, decidir um a um é lento. As rotas de lote aplicam a mesma decisão a até 200 itens por chamada, ou a tudo que casa com um filtro.
Aprovar em lote
Aprova de uma vez os itens listados em ids. Cada item é tratado sozinho: se um falha, os outros continuam e a resposta conta os sucessos e as falhas.
/api/v1/admin/whatsapp/media-moderation/bulk-approveAdminAprova vários itens de uma vez
Corpo da requisição
idsarrayobrigatórioIds (UUID) dos itens a decidir. Obrigatório e não vazio, no máximo 200 por chamada. Dispensável quando você usa
filter.notesstringObservação gravada em todos os itens. Opcional.
tagsarrayEtiquetas gravadas em todos os itens. Opcional.
filterobjectAlternativa a
ids: um critério (por exemplo {"status":"pending","media_type":"image"}). Quando enviado, a chamada passa a ser um lote por filtro, que exige simulação antes (veja a explicação abaixo).simulatebooleanSó com
filter. true não altera nada e devolve o total, uma amostra e um confirm_token.confirm_tokenstringSó com
filter. O token devolvido pela simulação, para confirmar a execução.Exemplo de requisição (Aprovar em lote)
bash
curl -X POST "$BASE_URL/api/v1/admin/whatsapp/media-moderation/bulk-approve" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"ids": [
"3f6c1d2a-8b44-4e0a-9c1e-5d7a2b9f0e11",
"7a2e9c40-6d15-4b3f-8e22-1c9b0d5f7a33"
],
"notes": "Conferido com o cliente.",
"tags": [
"lote"
]
}'Resposta (Aprovar em lote)
200Lote processado
json
{
"status": "approved",
"success_count": 2,
"failure_count": 0,
"failure_errors": []
}200Com falhas parciais
json
{
"status": "approved",
"success_count": 1,
"failure_count": 1,
"failure_errors": [
"id=7a2e9c40-6d15-4b3f-8e22-1c9b0d5f7a33: moderation row not found"
]
}Campos da resposta
statusstringapprovedEstado aplicado a todos os itens.
success_countintegerQuantos itens mudaram de estado.
failure_countintegerQuantos itens falharam.
failure_errorsarrayUma frase por falha, no formato
id=<uuid>: <motivo>.Erros (Aprovar em lote)
| Status | Quando | Corpo |
|---|---|---|
| 400 | Corpo que não é JSON, ids vazio ou ausente, ou mais de 200 ids. | {"error":"ids must be a non-empty array"} ou {"error":"bulk operations limited to 200 ids per request"} |
| 401 | Sem token, token inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O módulo WhatsApp Commerce está desligado na loja, o usuário não é administrador ou não tem o privilégio exigido. | {"error":"module_disabled","module":"whatsapp-commerce"} ou {"error":"insufficient privileges","required":"manage_settings"} (ou manage_orders) ou {"error":"admin access required"} |
| 409 | O confirm_token pertence a outro pedido, ou o recorte cresceu desde a simulação. | {"error":"confirm_token_invalid","detail":"..."} |
| 428 | Lote por filtro sem simulação prévia. | {"error":"simulate_required","detail":"..."} |
Rejeitar em lote
Rejeita de uma vez os itens listados em ids, com a mesma regra do lote de aprovação.
/api/v1/admin/whatsapp/media-moderation/bulk-rejectAdminRejeita vários itens de uma vez
Corpo da requisição
idsarrayobrigatórioIds (UUID) dos itens a decidir. Obrigatório e não vazio, no máximo 200 por chamada. Dispensável quando você usa
filter.notesstringObservação gravada em todos os itens. Opcional.
tagsarrayEtiquetas gravadas em todos os itens. Opcional.
filterobjectAlternativa a
ids: um critério (por exemplo {"status":"pending","media_type":"image"}). Quando enviado, a chamada passa a ser um lote por filtro, que exige simulação antes (veja a explicação abaixo).simulatebooleanSó com
filter. true não altera nada e devolve o total, uma amostra e um confirm_token.confirm_tokenstringSó com
filter. O token devolvido pela simulação, para confirmar a execução.Exemplo de requisição (Rejeitar em lote)
bash
curl -X POST "$BASE_URL/api/v1/admin/whatsapp/media-moderation/bulk-reject" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"ids": [
"3f6c1d2a-8b44-4e0a-9c1e-5d7a2b9f0e11",
"7a2e9c40-6d15-4b3f-8e22-1c9b0d5f7a33"
],
"notes": "Não confere com o pedido.",
"tags": [
"lote"
]
}'Resposta (Rejeitar em lote)
200Lote processado
json
{
"status": "rejected",
"success_count": 2,
"failure_count": 0,
"failure_errors": []
}200Com falhas parciais
json
{
"status": "rejected",
"success_count": 1,
"failure_count": 1,
"failure_errors": [
"id=7a2e9c40-6d15-4b3f-8e22-1c9b0d5f7a33: moderation row not found"
]
}Campos da resposta
statusstringrejectedEstado aplicado a todos os itens.
success_countintegerQuantos itens mudaram de estado.
failure_countintegerQuantos itens falharam.
failure_errorsarrayUma frase por falha, no formato
id=<uuid>: <motivo>.Erros (Rejeitar em lote)
| Status | Quando | Corpo |
|---|---|---|
| 400 | Corpo que não é JSON, ids vazio ou ausente, ou mais de 200 ids. | {"error":"ids must be a non-empty array"} ou {"error":"bulk operations limited to 200 ids per request"} |
| 401 | Sem token, token inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O módulo WhatsApp Commerce está desligado na loja, o usuário não é administrador ou não tem o privilégio exigido. | {"error":"module_disabled","module":"whatsapp-commerce"} ou {"error":"insufficient privileges","required":"manage_settings"} (ou manage_orders) ou {"error":"admin access required"} |
| 409 | O confirm_token pertence a outro pedido, ou o recorte cresceu desde a simulação. | {"error":"confirm_token_invalid","detail":"..."} |
| 428 | Lote por filtro sem simulação prévia. | {"error":"simulate_required","detail":"..."} |