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:
| Endpoint | Finalidade |
|---|
POST /documents/signatures/batch/resend | Reenviar 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"