Skip to main content

signdocs-brasil

SDK oficial em Python para a API SignDocs Brasil: assinatura eletrônica e digital de documentos com ICP-Brasil, certificado digital, biometria, OTP e trilha de evidências.

Official Python SDK for the SignDocs Brasil e-signature API.

Requisitos

  • Python 3.9+
  • Dependências: requests, PyJWT, cryptography

Instalação

pip install signdocs-brasil

Início Rápido

from signdocs_brasil import SignDocsBrasilClient, ClientConfig
from signdocs_brasil.models import (
    CreateTransactionRequest, Policy, Signer, InlineDocument,
)

client = SignDocsBrasilClient(ClientConfig(
    client_id='seu_client_id',
    client_secret='seu_client_secret',
))

tx = client.transactions.create(CreateTransactionRequest(
    purpose='DOCUMENT_SIGNATURE',
    policy=Policy(profile='CLICK_ONLY'),
    signer=Signer(
        name='João Silva',
        email='joao@example.com',
        user_external_id='user-001',
    ),
    document=InlineDocument(content=pdf_base64, filename='contrato.pdf'),
))

print(tx.transaction_id, tx.status)

Private Key JWT (ES256)

client = SignDocsBrasilClient(ClientConfig(
    client_id='seu_client_id',
    private_key=open('./private-key.pem').read(),
    kid='seu-key-id',
))

Recursos Disponíveis

Recurso Métodos
client.transactions create, list, get, cancel, finalize, list_auto_paginate
client.documents upload, presign, confirm, download
client.steps list, start, complete
client.signing prepare, complete
client.evidence get
client.verification verify, downloads
client.users enroll
client.webhooks register, list, delete, test
client.signing_sessions create, get_status, cancel, link, resend_invite, list, wait_for_completion
client.envelopes create, get, add_session, combined_stamp
client.document_groups combined_stamp
client.health check, history

Assinatura Expressa (Sessões de Assinatura)

from signdocs_brasil.models import (
    CreateSigningSessionRequest, SignerRequest, PolicyRequest, DocumentRequest,
)

session = client.signing_sessions.create(CreateSigningSessionRequest(
    purpose='DOCUMENT_SIGNATURE',
    policy=PolicyRequest(profile='BIOMETRIC'),
    signer=SignerRequest(name='João Silva', user_external_id='user-001', email='joao@example.com'),
    document=DocumentRequest(content=pdf_base64, filename='contrato.pdf'),
    return_url='https://meusite.com.br/assinado',
))
print(session.url)  # URL da página de assinatura hospedada

Envelopes (Múltiplos Signatários)

from signdocs_brasil.models import CreateEnvelopeRequest, AddEnvelopeSessionRequest

envelope = client.envelopes.create(CreateEnvelopeRequest(
    signing_mode='PARALLEL',
    total_signers=2,
    document_content=pdf_base64,
    document_filename='contrato.pdf',
))

session1 = client.envelopes.add_session(envelope.envelope_id, AddEnvelopeSessionRequest(
    signer_name='João Silva',
    signer_email='joao@example.com',
    policy_profile='CLICK_ONLY',
))

session2 = client.envelopes.add_session(envelope.envelope_id, AddEnvelopeSessionRequest(
    signer_name='Maria Santos',
    signer_email='maria@example.com',
    policy_profile='CLICK_ONLY',
    signer_index=2,
))

print(session1.url, session2.url)

Canais de entrega

A SignDocs entrega o link por e-mail, WhatsApp ou Telegram — escolha por signatário em deliverVia. WhatsApp e Telegram são habilitados sob demanda; fale com o time comercial. WhatsApp exige signer.phone em E.164; Telegram exige signer.cpf e só alcança quem já registrou o CPF no bot da SignDocs. O OTP pode ir por email, sms, whatsapp ou telegram (otpChannel), independentemente do canal do link. Cada envio por WhatsApp ou Telegram consome a cota de mensagens do tenant; esgotada, a API responde 429.

from signdocs_brasil.models.signing_session import (
    CreateSigningSessionRequest, SignerRequest, PolicyRequest, DocumentRequest,
)

session = client.signing_sessions.create(CreateSigningSessionRequest(
    purpose='DOCUMENT_SIGNATURE',
    policy=PolicyRequest(profile='CLICK_ONLY'),
    signer=SignerRequest(
        name='João Silva',
        user_external_id='user-001',
        cpf='12345678901',
        phone='+5511999998888',
    ),
    document=DocumentRequest(content=pdf_base64, filename='contrato.pdf'),
    deliver_via=['whatsapp'],
))
print(session.whatsapp_invite_sent)  # True quando a Meta aceitou a mensagem

Configuração Avançada

Session customizada

Injete um requests.Session customizado (ex: para proxying, certificados mTLS ou métricas):

import requests
from signdocs_brasil import SignDocsBrasilClient, ClientConfig

session = requests.Session()
session.verify = '/path/to/ca-bundle.crt'

client = SignDocsBrasilClient(ClientConfig(
    client_id='seu_client_id',
    client_secret='seu_client_secret',
    session=session,
))

Logging

O SDK aceita um logging.Logger padrão do Python. São logados apenas: método HTTP, path, status code e duração. Headers de autorização, corpos de request/response e tokens nunca são logados.

import logging
from signdocs_brasil import SignDocsBrasilClient, ClientConfig

logger = logging.getLogger('signdocs')
logger.setLevel(logging.DEBUG)
logger.addHandler(logging.StreamHandler())

client = SignDocsBrasilClient(ClientConfig(
    client_id='seu_client_id',
    client_secret='seu_client_secret',
    logger=logger,
))

Timeout por requisição

Todas as operações aceitam timeout (em milissegundos) como keyword argument, que sobrescreve o timeout padrão do client:

tx = client.transactions.get('tx_123', timeout=5000)

Documentação

Para guias completos de integração com exemplos passo-a-passo de todos os fluxos de assinatura, veja a documentação completa da API.

Metadata

Release files for signdocs-brasil 2.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for signdocs-brasil 2.3.0
File Size Uploaded Provenance Actions
signdocs_brasil-2.3.0.tar.gz 59.6 kB Without provenance Details for signdocs_brasil-2.3.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for signdocs-brasil 2.3.0
File Interpreter ABI Platform Actions
signdocs_brasil-2.3.0-py3-none-any.whl Python 3 none any Details for signdocs_brasil-2.3.0-py3-none-any.whl

Total release size: 123.0 kB

Release files / signdocs_brasil-2.3.0.tar.gz

Download URL signdocs_brasil-2.3.0.tar.gz
Size 59.6 kB
Tags Source
SHA-256 checksum
How to use checksums
3074832d10f3c865682679fc7ccb59899f6f5ff09342e998b0796aed83b7992c
BLAKE2b-256 checksum
How to use checksums
98b22e0536aafba5afef4cc5494e471f5740aa4d44e865acc56b08aaf1e60dc4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Release files / signdocs_brasil-2.3.0-py3-none-any.whl

Download URL signdocs_brasil-2.3.0-py3-none-any.whl
Size 63.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
dc231435a0114428e80c1af2e15ac035b2139501ddc04fa0fae3f3963e3b1edf
BLAKE2b-256 checksum
How to use checksums
cf86070475a1f362e984f921777050937c8542406f64cd51e3dddb2cdadaf77e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Security for signdocs-brasil 2.3.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page