Pular para o conteúdo principal

Fluxo de Assinatura de Documentos

O DokStamp suporta um fluxo de assinatura tripartite: um documento pode ser assinado por terceiros externos (via link por email) e/ou assinado institucionalmente usando um certificado digital armazenado na plataforma.

Visão geral

Instituição                          Terceiro (Assinante)
     │                                       │
     │  1. Criar Tipo de Documento           │
     │  2. Upload PDF (/files)               │
     │  3. Criar Documento                   │
     │  4. Cadastrar Assinante               │
     │  5. Vincular Assinante → Documento ──►│
     │                                       │  6. Assinante recebe email
     │                                       │  7. Assinante clica no link e assina
     │  8. Verificar status da assinatura ◄──│
     │  9. Assinar institucionalmente (cert) │
     │ 10. Baixar PDF assinado               │

Passo a passo

1 — Criar um Tipo de Documento

Os tipos de documento definem o template para uma categoria de documentos, incluindo os campos indexadores (campos de metadados para classificação).
curl -X POST https://api.dokstamp.eu/document-types \
  -H "Authorization: Bearer {TOKEN}" \
  -H "X-Tenant: {TENANT}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "description": "Contrato de Prestação de Serviços",
    "signed_by_third": true,
    "multiples_third_signers": false,
    "indexers": [
      { "indexer": "Nome do Cliente", "rule": "Outro" },
      { "indexer": "CPF do Cliente",  "rule": "CPF" },
      { "indexer": "Email do Cliente","rule": "E-mail" }
    ]
  }'
O array indexers define campos de metadados personalizados para documentos deste tipo. O campo rule valida a entrada: "Outro" (qualquer texto), "CPF" (CPF brasileiro), "E-mail" (endereço de email).

2 — Fazer Upload do PDF

curl -X POST https://api.dokstamp.eu/files \
  -H "Authorization: Bearer {TOKEN}" \
  -H "X-Tenant: {TENANT}" \
  -H "Accept: application/json" \
  -F "files[]=@contrato.pdf"
Salve o uuid retornado como file_uuid.

3 — Criar o Documento

curl -X POST https://api.dokstamp.eu/documents \
  -H "Authorization: Bearer {TOKEN}" \
  -H "X-Tenant: {TENANT}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "description": "Contrato de Prestação de Serviços — Acme Corp",
    "document_type_id": 1,
    "module_id": 2,
    "department_id": 3,
    "file_uuid": "{FILE_UUID}",
    "indexers": ["Acme Corp", "123.456.789-00", "contato@acme.com"]
  }'
Os valores do array indexers devem estar na mesma ordem dos indexadores definidos no Tipo de Documento. A API os mapeia posicionalmente para indexador_01, indexador_02, etc.

4 — Cadastrar o Assinante

Assinantes são terceiros que precisam assinar o documento. Eles são identificados por nome, email e CPF.
curl -X POST https://api.dokstamp.eu/signers \
  -H "Authorization: Bearer {TOKEN}" \
  -H "X-Tenant: {TENANT}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Carlos Oliveira",
    "document": "12345678900",
    "email": "carlos@acme.com"
  }'
Use GET /signers?where[email]=carlos@acme.com primeiro para evitar criar registros duplicados.

5 — Vincular o Assinante ao Documento

Esta etapa vincula o assinante e dispara automaticamente o email de solicitação de assinatura. Este endpoint é público — nenhum header Authorization é necessário.
curl -X POST https://api.dokstamp.eu/documents/{doc_id}/signers/{signer_id}
O assinante recebe um email com um link seguro para visualizar e assinar o documento eletronicamente.

6 — Verificar Status da Assinatura

Consulte o endpoint de detalhe do documento para verificar se todas as assinaturas foram coletadas:
curl https://api.dokstamp.eu/documents/{doc_id}?includes[signatures]=1 \
  -H "Authorization: Bearer {TOKEN}" \
  -H "X-Tenant: {TENANT}" \
  -H "Accept: application/json"
O array signatures na resposta mostra o status de cada assinante:
{
  "data": {
    "id": 42,
    "description": "Contrato de Prestação de Serviços — Acme Corp",
    "signatures": [
      {
        "user": { "name": "Carlos Oliveira" },
        "fechado": true
      }
    ]
  }
}
"fechado": true significa que o assinante concluiu sua assinatura. false significa pendente.

7 — Assinar Institucionalmente

Após coletar as assinaturas de terceiros, assine o documento com o certificado digital da instituição:
curl -X POST https://api.dokstamp.eu/documents/{doc_id}/sign/{cert_id} \
  -H "Authorization: Bearer {TOKEN}" \
  -H "X-Tenant: {TENANT}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{ "pin": "123456" }'
O cert_id refere-se ao certificado digital institucional configurado na plataforma. O pin é o código de proteção PIN do certificado.

8 — Baixar o PDF Assinado

curl https://api.dokstamp.eu/files/{file_uuid}/download \
  --output contrato-assinado.pdf
Este endpoint é público — sem necessidade de autenticação. Compartilhe o UUID com o assinante ou armazene o link no seu sistema.

Operações em lote

Para cenários de alto volume, endpoints de lote estão disponíveis:
EndpointFinalidade
POST /documents/signatures/batch/resendReenviar emails de solicitação de assinatura para múltiplos assinantes
POST /documents/batch/sign/{cert_id}Assinar múltiplos documentos de uma vez com o certificado institucional

Reenviar solicitações de assinatura

Se um assinante não recebeu ou perdeu o email:
curl -X POST https://api.dokstamp.eu/documents/{doc_id}/signers/{signer_id}/signatures/resend \
  -H "Authorization: Bearer {TOKEN}" \
  -H "X-Tenant: {TENANT}" \
  -H "Accept: application/json"