Skip to main content

Official Python SDK for the SignDocs Brasil API

Project description

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 centralizada.

Project details


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.1.0.tar.gz (32.7 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.1.0-py3-none-any.whl (44.3 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for signdocs_brasil-1.1.0.tar.gz
Algorithm Hash digest
SHA256 29c16541c277afe10eef1af984ca0ec48ec07967939307d3542f3a80f50dbe03
MD5 23f375765f754cf7515a482eb7d708ff
BLAKE2b-256 cab65167757c50444a313d4187f44b2d627b6bbbb1ff38e8c370eecb0a814eaa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for signdocs_brasil-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5abd8c6f92894a5bfdfe255003652c2ea0f316c3344c7f371e48048c81691748
MD5 8ce49616497eddd537401b1908482c21
BLAKE2b-256 dcb3880bc04af23d91cf4f429955bcc3063e22a40a8d2b06f43c05f884766e18

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 Pingdom Monitoring Sentry Error logging StatusPage Status page