Ir para o conteúdo

API — Documentos

Base: /api/v1/documents. Escopos: documents:read e documents:write (ver tabela em Escopos).

Criar documento

POST /api/v1/documents

Body:

{
  "title": "Contrato de prestação de serviços",
  "description": "Versão revisada após reunião de 12/05",
  "expirationDays": 30,
  "reminderIntervalDays": 3,
  "tags": ["mensal", "tipo-a"]
}

Resposta 201: { "id": 12345, "status": "Draft" }

Anexar PDF

POST /api/v1/documents/{id}/documents
Content-Type: multipart/form-data
curl -X POST https://api.aceitou.com.br/api/v1/documents/12345/documents \
  -H "X-Api-Key: $KEY" \
  -F "file=@contrato.pdf;type=application/pdf"

Limites: 50 MB, MIME application/pdf.

Gerar PDF a partir de template

POST /api/v1/documents/{id}/documents/from-template
{
  "templateId": 9,
  "variables": {
    "nome": "Maria Silva",
    "cpf": "111.222.333-44"
  }
}

Adicionar signatário

POST /api/v1/documents/{id}/signers
{
  "name": "Maria Silva",
  "email": "maria@cliente.com",
  "phone": "+5511987654321",
  "documentNumber": "111.222.333-44",
  "verificationMethod": "email_token",
  "signingOrder": 1,
  "locale": "pt-BR"
}

Ver Signatários pra explicação de verificationMethod e signingOrder.

Remover signatário (antes do envio)

DELETE /api/v1/documents/{id}/signers/{signerId}

Só funciona enquanto o documento está em Draft. Em Sent ou adiante, signatários estão imutáveis.

Enviar pra assinatura

POST /api/v1/documents/{id}/send

Body opcional:

{ "notify": false }

Com notify: false, os tokens são gerados e o status muda pra Sent, mas o email não é disparado — você assume a responsabilidade de entregar os links (via GET signing-link abaixo).

GET /api/v1/documents/{id}/signers/{signerId}/signing-link

Resposta:

{
  "url": "https://assinatura.aceitou.com.br/sign/abc123...",
  "expiresAt": "2026-06-23T14:30:00-03:00"
}

Útil quando você quer entregar pelo seu canal (WhatsApp, in-app, etc.).

Reenviar notificação

POST /api/v1/documents/{id}/signers/{signerId}/resend

Consultar documento

GET /api/v1/documents/{id}

Resposta resumida:

{
  "id": 12345,
  "title": "Contrato...",
  "status": "InProgress",
  "createdAt": "2026-05-23T10:00:00-03:00",
  "expiresAt": "2026-06-22T10:00:00-03:00",
  "files": [{ "id": 999, "fileName": "contrato.pdf", "version": "original" }],
  "signers": [
    {
      "id": 456,
      "name": "Maria",
      "email": "maria@cliente.com",
      "status": "Signed",
      "signedAt": "2026-05-23T11:30:00-03:00",
      "signingOrder": 1
    },
    {
      "id": 457,
      "name": "João",
      "email": "joao@cliente.com",
      "status": "Pending",
      "signingOrder": 2
    }
  ]
}

Listar com filtros

GET /api/v1/documents?status=Sent&tag=urgente&page=1&pageSize=20

Filtros aceitos: status, tag (pode repetir), createdAfter, createdBefore, signerEmail.

Cancelar

POST /api/v1/documents/{id}/cancel
{ "reason": "Substituído por versão atualizada" }

Signatários são notificados.

Baixar PDF

GET /api/v1/documents/{id}/download?version=signed

version=original (padrão) | version=signed (só disponível em Completed).

Trilha de auditoria

GET /api/v1/documents/{id}/audit-trail

Retorna lista de eventos com timestamp, atores, IPs, hashes — útil pra evidência jurídica.

Tags

PUT /api/v1/documents/{id}/tags
{ "tags": ["renovado", "urgente"] }

Substitui o conjunto atual de tags.