Rejeitar anexos
Devolve o anexo para o assinante com motivo — ele recebe notificação e pode reenviar.
Devolve o anexo: Review → Progress. O arquivo enviado é excluído do
armazenamento e uma notificação é enviada ao assinante com o reason que você
passou, pedindo um reenvio do anexo. Se o assinante já assinou, a assinatura
não é afetada — ele só reenvia o arquivo, não assina de novo.
Rejeitar apaga o arquivo. O arquivo enviado é removido permanentemente do armazenamento. Se você precisava arquivar o anexo antes de recusar, baixe primeiro.
Só funciona enquanto a operação está em andamento. Depois de finalizada, a
chamada retorna 403 — o documento já está selado e com trilha de auditoria. Pra
ter tempo de revisar anexos antes de fechar, use finalização manual.
O que acontece em uma rejeição
O arquivo enviado é removido do armazenamento. O slot do anexo continua existindo, agora em Progress.
O membro fica com uma pendência de reenvio do anexo — ele não precisa (nem pode) assinar de novo.
Uma notificação é enviada ao assinante. É ela que dispara email/SMS/WhatsApp, conforme o canal configurado na operação.
A lista rejectedAttachments é processada em uma única transação. Se um ID falhar, nenhum é rejeitado.
Endpoint
Authorization
ApiKey Token de integracao. Envie no header X-Api-Key.
In: header
Header Parameters
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
curl -X POST "https://example.com/api/v2/attachment/reject" \ -H "Content-Type: application/json" \ -d '{}'Body
{
"operationMemberId": 4321,
"rejectedAttachments": [
{
"id": 12345,
"reason": "Foto borrada — favor tirar nova selfie em ambiente iluminado."
},
{
"id": 12346,
"reason": "Documento ilegível na parte da foto."
}
]
}| Campo | Tipo | Obrigatório | Notas |
|---|---|---|---|
operationMemberId | long | sim | ID do assinante dono dos anexos. Precisa ser > 0. |
rejectedAttachments | array | sim | Pelo menos um item. |
rejectedAttachments[].id | long | sim | ID do anexo. Precisa ser > 0. |
rejectedAttachments[].reason | string | sim | Obrigatório. Chega ao assinante na notificação. |
reason é obrigatório. A API rejeita null/string vazia — não dá pra
"rejeitar sem motivo". Escreva uma instrução acionável (o que está errado +
como corrigir) — isso economiza um ciclo de envio.
Fluxo após rejeitar
- Anexos passam para
Progress, arquivos físicos são apagados. - O status do membro volta para
InProgress. - Uma entrada de timeline é registrada para o anexo (ou para a autenticação, se o anexo era de autenticação).
- Uma notificação é enviada ao assinante.
- Assinante acessa o portal, vê o anexo marcado com a sua
reason, e reenvia apenas o arquivo (sem assinar de novo). - O novo upload aparece em Listar anexos por membro
com
isUploaded: true(status internoReview), esperando nova avaliação.
Resposta
200 OK. Não há corpo de dados — só a mensagem em messages:
{
"success": true,
"statusCode": 200,
"messages": [{ "value": "..." }]
}Erros comuns
| Status | Caso | Detalhe |
|---|---|---|
400 | rejectedAttachments vazio, id <= 0 ou reason vazio | Falha de validação do corpo. |
400 | Anexo já está Completed (aprovado) | O anexo já estava aprovado. |
403 | Membro não existe ou pertence a outra conta | — |
403 | Operação já finalizada | — |
403 | API key sem permissão de edição na operação | — |
404 | id informado não existe naquele membro | Anexo não encontrado. |