Completar operação
Dispara a finalização de uma operação em modo manual (com todos já assinados) e gera os PDFs assinados.
Encerra a operação manualmente. Quando você cria com
manualFinish.hasManualFinish = true, a operação não fecha sozinha mesmo
depois que todos assinarem — fica aguardando este comando. Ao completar, o fluxo
final consolida os PDFs, aplica os carimbos de auditoria, dispara o webhook
CompletedOperation e libera o download.
Completar não força o encerramento com assinantes pendentes. A operação só é
finalizada se (1) estiver em modo manual (manualFinish.hasManualFinish = true)
e (2) todos os assinantes já tiverem assinado. Se faltar qualquer
assinante, a chamada retorna 200 mas não faz nada — a operação continua em
andamento.
Quando usar
- Operação em modo manual cujos assinantes já terminaram de assinar e você controla o momento exato de fechar
- Todos assinaram e você quer disparar a finalização agora em vez de esperar
Se você quer que a operação encerre automaticamente quando todos assinarem,
crie ela com manualFinish.hasManualFinish = false. Neste endpoint, chamar uma
operação em modo automático não tem efeito.
Endpoint
Authorization
ApiKey Token de integracao. Envie no header X-Api-Key.
In: header
Path Parameters
int64Header Parameters
Response Body
curl -X POST "https://example.com/api/v2/operation/0/complete"Sem body — o operationId na URL (o ID da operação, o campo id retornado em
Criar operação) já basta.
Exemplo
curl -X POST "https://api.forsign.digital/api/v2/operation/4821/complete" \
-H "X-Api-Key: $API_KEY"await fetch(`https://api.forsign.digital/api/v2/operation/${operationId}/complete`, {
method: 'POST',
headers: { 'X-Api-Key': apiKey },
});var resp = await http.PostAsync(
$"/api/v2/operation/{operationId}/complete",
content: null);
resp.EnsureSuccessStatusCode();Resposta de sucesso (200)
{ "success": true, "statusCode": 200, "messages": [{ "value": "Operação concluída com sucesso" }] }Comportamento e gotchas
- Só finaliza em modo manual e com todos assinados. Se houver assinante pendente, ou se a operação estiver em modo automático, a chamada retorna
200mas não tem efeito. Por isso o200não garante que a operação foi concluída — confirme pelo webhookCompletedOperationou consultando a operação. - Quando a finalização ocorre, ela acontece durante a chamada: ao receber o
200, a operação já estáCompletede os PDFs assinados já foram gerados. - O webhook
CompletedOperationé enviado alguns segundos depois do200(mensagem com atraso) — use-o como gatilho confiável para o download, em vez de baixar imediatamente.
Erros comuns
| Status | Causa | Como resolver |
|---|---|---|
400 | operationId inválido (≤ 0) | Use o id retornado na criação. |
401 | API key ausente ou inválida | Confira o header X-Api-Key. |
404 | Operação não encontrada | Confira o id — a operação pode não existir na sua conta. |
Diferença entre Completar e Cancelar
| Completar | Cancelar | |
|---|---|---|
| Status final | Completed (sucesso) | Canceled |
| PDFs assinados | Gerados na finalização (prontos no 200) | Não gera PDF finalizado |
| Assinantes pendentes | Bloqueiam a finalização (precisa de todos assinados) | Encerra mesmo com pendentes |
| Devolução de créditos | Não | Sim, se ninguém assinou ainda |
| Webhook disparado | CompletedOperation | UpdateOperation (status=Canceled) |
| Body | Sem body | { "message": "..." } (obrigatório) |