Skip to main content

A Python SDK for Sicoob API

Project description

Sicoob SDK Python

SDK Python para integração com a API do Banco Sicoob

Instalação

pip install -r requirements.txt
# ou
pip install -e .

Configuração

Crie um arquivo .env na raiz do projeto com as seguintes variáveis:

SICOOB_CLIENT_ID=seu_client_id
SICOOB_CERTIFICADO=caminho/para/certificado.pem
SICOOB_CHAVE_PRIVADA=caminho/para/chave_privada.key

Uso Básico

from sicoob import Sicoob

# Inicializa o cliente
cliente = Sicoob(
    client_id="seu_client_id",
    certificado="caminho/para/certificado.pem", 
    chave_privada="caminho/para/chave_privada.key"
)

# Exemplo: consulta de extratos
extrato = cliente.conta_corrente.consulta_extrato(conta="12345", data_inicio="2023-01-01", data_fim="2023-01-31")

API de Boletos

A classe BoletoAPI permite emitir e consultar boletos bancários:

from sicoob import Sicoob

# Inicializa o cliente
cliente = Sicoob(
    client_id="seu_client_id",
    certificado="caminho/para/certificado.pem",
    chave_privada="caminho/para/chave_privada.key"
)

# Obtém instância do BoletoAPI
boleto_api = cliente.boleto()

# Emitir boleto
dados_boleto = {
    "numeroContrato": 123456,
    "modalidade": 1,
    "valor": 100.50,
    "beneficiario": {
        "nome": "Nome Beneficiário",
        "documento": "12345678901"
    }
}
boleto = boleto_api.emitir_boleto(dados_boleto)

# Consultar boleto
nosso_numero = boleto["nossoNumero"]
boleto_consultado = boleto_api.consultar_boleto(nosso_numero)

Tratamento de Erros

A API trata os seguintes casos de erro:

  • 404 Not Found: Retorna None quando o boleto não existe
  • Erros HTTP (400, 500, etc): Levanta exceção com código e mensagem
  • Erros de conexão: Levanta exceção com detalhes do erro

Versionamento e Deploy

O projeto segue Semantic Versioning. Para criar um novo release:

  1. Atualize a versão em:

    • setup.py
    • pyproject.toml
    • sicoob/__init__.py
  2. Execute os testes:

make test
  1. Crie um novo release no GitHub:
    • Acesse "Releases" no repositório
    • Clique em "Draft a new release"
    • Defina a tag no formato vX.Y.Z (ex: v0.1.3)
    • O GitHub Actions irá automaticamente:
      • Construir o pacote (make build)
      • Publicar no PyPI (make publish)

Comandos Úteis

# Construir pacote
make build

# Executar testes
make test

# Publicar no PyPI (requer TWINE_USERNAME e TWINE_PASSWORD)
make publish

Links Úteis

Documentação Técnica

Visão Geral

Biblioteca Python para integração com a API do Banco Sicoob, incluindo:

  • Autenticação OAuth2
  • Cobrança (Boletos e PIX)
  • Conta Corrente
  • Operações bancárias

Índice

  1. Classe Principal
  2. Autenticação
  3. Serviços
  4. Classe Base
  5. Diagrama de Relacionamentos
  6. Exemplos de Uso

Classe Sicoob

Cliente principal que fornece acesso a todos os serviços.

Arquivo: sicoob/client.py

Métodos:

  • __init__(client_id=None, certificado=None, chave_privada=None, sandbox_mode=False)
    • Inicializa o cliente com credenciais
    • Parâmetros:
      • client_id: Client ID fornecido pelo Sicoob
      • certificado: Caminho para o certificado .pem
      • chave_privada: Caminho para a chave privada .key
      • sandbox_mode: Se True, usa ambiente sandbox (default: False)

Propriedades:

  • cobranca: Acesso às APIs de Cobrança (Boleto e PIX)
  • conta_corrente: Acesso à API de Conta Corrente

Autenticação OAuth2

Arquivo: sicoob/auth/oauth.py

Classe: OAuth2Client

Gerencia tokens de acesso com escopos específicos.

Métodos:

  • get_access_token(scope=None): Obtém token para o escopo especificado
  • _is_token_expired(scope): Verifica se token expirou (método interno)

Escopos Comuns:

  • Boletos: "boletos_inclusao boletos_consulta..."
  • Conta Corrente: "cco_consulta cco_transferencias..."
  • PIX: "cob.write cob.read..."

Serviços

API de Boletos

Arquivo: sicoob/boleto.py

Classe: BoletoAPI

Operações com boletos bancários.

Métodos:

  • emitir_boleto(dados_boleto): Emite novo boleto
  • emitir_segunda_via(): Emite segunda via de um boleto existente
  • consultar_boleto(nosso_numero): Consulta boleto existente
  • consultar_boletos_por_pagador(): Consulta lista de boletos por pagador
  • consultar_faixas_nosso_numero(): Consulta faixas de nosso número disponíveis
  • alterar_boleto(): Altera dados de um boleto existente
  • alterar_pagador(): Altera informações do cadastro do pagador
  • baixar_boleto(): Comanda a baixa de um boleto existente
  • cadastrar_webhook(): Cadastra um webhook para receber notificações
  • consultar_webhook(): Consulta os detalhes de um webhook cadastrado
  • atualizar_webhook(): Atualiza um webhook cadastrado
  • excluir_webhook(): Remove permanentemente um webhook cadastrado
  • consultar_solicitacoes_webhook(): Consulta as solicitações de notificação

API de PIX

Arquivo: sicoob/pix.py

Classe: PixAPI

Operações com PIX.

Métodos Principais:

  • criar_cobranca_pix(txid, dados): Cria cobrança imediata
  • consultar_cobranca_pix(txid): Consulta cobrança
  • configurar_webhook(chave, url): Configura webhook

API de Conta Corrente

Arquivo: sicoob/conta_corrente.py

Classe: ContaCorrenteAPI

Operações bancárias.

Métodos:

  • extrato(): Obtém extrato por período
  • saldo(): Consulta saldo
  • transferencia(): Realiza transferência

Classe Base

Arquivo: sicoob/api_client.py

Classe: APIClientBase

Fornece funcionalidades comuns a todas as APIs.

Métodos:

  • _get_base_url(): Retorna URL conforme sandbox/produção
  • _get_headers(scope): Retorna headers com autenticação

Diagrama de Relacionamentos

classDiagram
    class Sicoob {
        +cobranca
        +conta_corrente
    }
    
    class OAuth2Client {
        +get_access_token()
    }
    
    class APIClientBase {
        <<abstract>>
        +_get_base_url()
        +_get_headers()
    }
    
    class BoletoAPI {
        +emitir_boleto()
        +consultar_boleto()
    }
    
    class PixAPI {
        +criar_cobranca_pix()
        +consultar_cobranca_pix()
    }
    
    class ContaCorrenteAPI {
        +extrato()
        +saldo()
    }
    
    Sicoob --> OAuth2Client
    Sicoob --> BoletoAPI
    Sicoob --> PixAPI
    Sicoob --> ContaCorrenteAPI
    BoletoAPI --|> APIClientBase
    PixAPI --|> APIClientBase
    ContaCorrenteAPI --|> APIClientBase
    APIClientBase --> OAuth2Client

Exemplos de Uso

from sicoob import Sicoob
from sicoob.auth import OAuth2Client
import requests

# Configuração
oauth = OAuth2Client(client_id, certificado, chave)
session = requests.Session()
sicoob = Sicoob(oauth_client=oauth, session=session)

# Uso dos serviços
extrato = sicoob.conta_corrente.extrato(
    mes=6, ano=2025, dia_inicial=1, dia_final=30, 
    numero_conta_corrente=123456
)

boleto = sicoob.cobranca.boleto.emitir_boleto({
    "numeroContrato": 123456,
    "modalidade": 1,
    "valor": 100.50
})

pix = sicoob.cobranca.pix.criar_cobranca_pix(
    "tx123", 
    {"valor": {"original": "100.50"}}
)

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

sicoob_sdk-0.1.3.tar.gz (24.9 kB view details)

Uploaded Source

Built Distribution

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

sicoob_sdk-0.1.3-py3-none-any.whl (26.9 kB view details)

Uploaded Python 3

File details

Details for the file sicoob_sdk-0.1.3.tar.gz.

File metadata

  • Download URL: sicoob_sdk-0.1.3.tar.gz
  • Upload date:
  • Size: 24.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.17

File hashes

Hashes for sicoob_sdk-0.1.3.tar.gz
Algorithm Hash digest
SHA256 b734a8280ba72713f12af417f5b82b597b4edb9df398f73a8c9ead9e23925dbb
MD5 793652b54a00bd21f631555bc8262036
BLAKE2b-256 ec60aec47a979d404d551f01f5804dac596028978d89f4cfa0916b3f3e0029f1

See more details on using hashes here.

File details

Details for the file sicoob_sdk-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: sicoob_sdk-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 26.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.17

File hashes

Hashes for sicoob_sdk-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 0260f3d53c1997032b1a629eb43405671d76561c888a14847a93a093e3af2906
MD5 53f29d404251640d9650f08b02462b41
BLAKE2b-256 4b3bd24e7014e4dd83e0955906d27d03dd10c53d6d12e433f5e9222eb34bfa1f

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