Skip to main content

signdocs-brasil

SDK oficial em Python para a API SignDocsBrasil.

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, 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)

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.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

signdocs_brasil-1.8.0.tar.gz (44.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

signdocs_brasil-1.8.0-py3-none-any.whl (54.1 kB view details)

Uploaded Python 3

File details

Details for the file signdocs_brasil-1.8.0.tar.gz.

File metadata

  • Download URL: signdocs_brasil-1.8.0.tar.gz
  • Upload date:
  • Size: 44.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.13

File hashes

Hashes for signdocs_brasil-1.8.0.tar.gz
Algorithm Hash digest
SHA256 5fec26d6e133e7ac9c8437fface624558bd56b60d5f4378876c0b78c6e8a84c8
MD5 e9b7d26a41a5fb7bb9aa975c1ee67f1a
BLAKE2b-256 d471abf24386a295db716f7aaa30246f97cf45b267a77d8597c074a79c677b15

See more details on using hashes here.

File details

Details for the file signdocs_brasil-1.8.0-py3-none-any.whl.

File metadata

File hashes

Hashes for signdocs_brasil-1.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7b76ce87abc1b064457211214f3dd84adc50a2304e16e619307c68660c3833ec
MD5 e10e1e8f5ed089357199c7dd320e70e7
BLAKE2b-256 74096648ca1d303849efd9cf9f2c024620796d464b604300e58e975fedbbfe1f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page