Ir para o conteúdo

Eventos disponíveis

A Aceitou dispara um POST ao seu endpoint quando algo acontece num documento. O body é JSON com campos comuns + específicos do evento.

Campos comuns em todo payload

{
  "id": "evt_abc123",
  "type": "document_sent",
  "createdAt": "2026-05-23T14:30:00-03:00",
  "documentId": 12345,
  "tenantId": 67,
  "data": { /* específico do evento */ }
}

Eventos

document_sent

Documento sai de DraftSent. Convites disparados.

{
  "type": "document_sent",
  "data": {
    "title": "Contrato XYZ",
    "expiresAt": "2026-06-22T...",
    "signers": [
      { "id": 456, "name": "Maria", "email": "maria@cliente.com", "signingOrder": 1 }
    ]
  }
}

signer_signed

Cada vez que um signatário assina. Quando o último assina, dispara também o document_completed.

{
  "type": "signer_signed",
  "data": {
    "signer": {
      "id": 456,
      "name": "Maria",
      "email": "maria@cliente.com",
      "documentNumber": "111.222.333-44",
      "signedAt": "2026-05-23T15:00:00-03:00",
      "ipAddress": "200.123.45.67"
    },
    "signersRemaining": 2
  }
}

document_completed

Todos os signatários assinaram. O PDF assinado já está pronto pra download (GET /documents/{id}/download?version=signed).

{
  "type": "document_completed",
  "data": {
    "completedAt": "2026-05-23T16:45:00-03:00",
    "signedFileUrl": "/api/v1/documents/12345/download?version=signed"
  }
}

document_rejected

Um signatário recusou a assinar. Documento para nesse status — ninguém mais consegue assinar.

{
  "type": "document_rejected",
  "data": {
    "signer": { "id": 456, "name": "Maria", "email": "..." },
    "rejectedAt": "2026-05-23T...",
    "rejectionReason": "Cláusula 4.2 não corresponde ao acordado"
  }
}

document_cancelled

Dono do documento cancelou via portal ou API.

{
  "type": "document_cancelled",
  "data": {
    "cancelledAt": "2026-05-23T...",
    "reason": "Substituído por versão atualizada"
  }
}

document_expired

ExpiresAt venceu antes da conclusão.

{
  "type": "document_expired",
  "data": {
    "expiredAt": "2026-06-22T...",
    "signersPending": 1
  }
}

Recomendação: respeite o id do evento (idempotência)

A Aceitou pode reentregar um mesmo evento se seu endpoint não respondeu 2xx — armazene o id recebido e descarte duplicatas pra não processar a mesma assinatura duas vezes.

seen_event_ids = set()  # em memória ou Redis/DB

def handle(payload):
    if payload["id"] in seen_event_ids:
        return  # já processado
    seen_event_ids.add(payload["id"])
    # processa...