pypix_api package
pypix-api: Biblioteca Python para integracao com APIs bancarias do PIX.
Esta biblioteca facilita a integracao com APIs de bancos brasileiros, fornecendo uma interface simples e consistente para operacoes PIX.
- class pypix_api.BBPixAPI(oauth, sandbox_mode=False, timeout=None, scopes=None)[source]
Bases:
PixBBMethods,BankPixAPIBaseImplementação da API PIX do Banco do Brasil.
- Parameters:
oauth (
OAuth2Client) – Instância configurada de OAuth2Client para autenticaçãosandbox_mode (
bool) – Se True, usa ambiente de sandbox (default: False)
- BASE_URL
URL da API de produção
- SANDBOX_BASE_URL
URL da API de sandbox
- TOKEN_URL
URL para obtenção de token OAuth2
- SCOPES
Scopes necessários para autenticação
- SANDBOX_BASE_URL = 'https://api-pix.hm.bb.com.br/pix/v2'
- class pypix_api.InterPixAPI(oauth, sandbox_mode=False, timeout=None, scopes=None, *, conta_corrente=None, homologacao=False)[source]
Bases:
PixInterMethods,BankPixAPIBaseImplementação da API PIX do Banco Inter.
Uma única versão (
/pix/v2) cobre o Pix comum e o Pix Automático. A autenticação exige mTLS + OAuth2client_credentialscomclient_ideclient_secretno corpo do form — construa oOAuth2Clientcomclient_secreteclient_auth='body'.- Parameters:
oauth (
OAuth2Client) – Instância configurada de OAuth2Client para autenticaçãosandbox_mode (
bool) – Se True, usa as URLs do Sandbox com token fixo, sem OAuth — útil só para testes locais; o Sandbox do Inter recusa o token fixo. Para o Sandbox real, usehomologacao(default: False)timeout (
float|tuple[float,float] |tuple[float,None] |None) – Tempo limite das requisições (verBankPixAPIBase)scopes (
str|ScopeGroup|list[str|ScopeGroup] |None) – Escopos OAuth2 a solicitar (verBankPixAPIBase)conta_corrente (
str|int|None) – Conta corrente da operação, enviada no headerx-conta-corrente. Necessária só quando a integração estiver associada a mais de uma conta. Apenas números, incluindo o dígito; hífen, ponto, espaços e zeros à esquerda são removidoshomologacao (
bool) – Se True, usa as URLs do Sandbox do Inter com OAuth e mTLS reais — o Sandbox do Inter exige certificado e credenciais da integração de testes. Use comtoken_url=InterPixAPI.SANDBOX_TOKEN_URL. Libera os métodossandbox_*(default: False)
- BASE_URL
URL da API de produção
- SANDBOX_BASE_URL
URL da API do Sandbox
- TOKEN_URL
URL para obtenção de token OAuth2 (produção)
- SANDBOX_TOKEN_URL
URL para obtenção de token OAuth2 (Sandbox)
- Raises:
ValueError – Se
conta_correntenão contiver um número válido
- SANDBOX_BASE_URL = 'https://cdpj-sandbox.partners.uatinter.co/pix/v2'
- SANDBOX_TOKEN_URL = 'https://cdpj-sandbox.partners.uatinter.co/oauth/v2/token'
- PARAM_TXID_CONSULTA_PIX = 'txId'
Nome do filtro de txid na query de
GET /pix. A especificação do BACEN usatxid; bancos que divergem (Inter:txId) sobrescrevem.
- __init__(oauth, sandbox_mode=False, timeout=None, scopes=None, *, conta_corrente=None, homologacao=False)[source]
- class pypix_api.OAuth2Client(token_url, client_id=None, cert=None, pvk=None, cert_pfx=None, pwd_pfx=None, sandbox_mode=False, client_secret=None, timeout=None, client_auth='basic')[source]
Bases:
objectCliente OAuth2 para autenticação com a API
- __init__(token_url, client_id=None, cert=None, pvk=None, cert_pfx=None, pwd_pfx=None, sandbox_mode=False, client_secret=None, timeout=None, client_auth='basic')[source]
Inicializa o cliente OAuth2
- Parameters:
token_url (
str) – URL de autenticação OAuth2cert_pfx (
str|bytes|BinaryIO|None) – Path ou dados do certificado PFX (opcional)sandbox_mode (
bool) – Se True, não requer certificado (default: False)client_secret (
str|None) – Client Secret para autenticação via HTTP Basic (opcional). Quando informado, o token é solicitado com o headerAuthorization: Basic base64(client_id:client_secret), como exigido por PSPs como o Sicredi. Quando omitido, mantém o fluxo padrão (client_id no corpo, autenticação de cliente via mTLS). Mantido como último parâmetro para preservar a ordem posicional histórica da assinatura.timeout (
float|tuple[float,float] |tuple[float,None] |None) – Tempo limite da requisição de token, no formato aceito pelorequests: um número ou a tupla(conexão, leitura).NoneusaDEFAULT_TIMEOUT. Para leitura sem limite, use(5.0, None).client_auth (
str) – Como oclient_secreté apresentado ao PSP, quando informado.'basic'(padrão) usa o headerAuthorization: Basic(Sicredi);'body'enviaclient_ideclient_secretno corpo do form, como exige o Banco Inter. Semclient_secret, não tem efeito.
- Raises:
ValueError – Se
client_authnão for'basic'nem'body'
- get_token(scope=None)[source]
Obtém ou renova o token de acesso para o escopo especificado
- Parameters:
scope (
str|None) – Escopo(s) necessário(s) para a API. Exemplos: - Cobrança por Boleto: “boletos_inclusao boletos_consulta boletos_alteracao webhooks_alteracao webhooks_consulta webhooks_inclusao” - Conta Corrente: “cco_consulta cco_transferencias openid” - Recebimento no PIX: “cob.write cob.read cobv.write cobv.read lotecobv.write lotecobv.read pix.write pix.read webhook.read webhook.write payloadlocation.write payloadlocation.read”- Returns:
Token de acesso válido para o escopo solicitado
- Return type:
- class pypix_api.PixCobranca(txid, valor, status, chave)[source]
Bases:
object- __init__(txid, valor, status, chave)
- class pypix_api.PoliticaRetentativa(value)[source]
-
Política de retentativa de uma recorrência ou cobrança recorrente.
Corresponde aos schemas
RecConfiguracaoeCobRConfiguracao.- Valores:
NAO_PERMITE: não é permitida retentativa de liquidação.PERMITE_3R_7D: permite até 3 retentativas em até 7 dias.
Uma CobR só aceita
POST /cobr/{txid}/retentativa/{data}se a recorrência estiver configurada comPERMITE_3R_7D.- NAO_PERMITE = 'NAO_PERMITE'
- PERMITE_3R_7D = 'PERMITE_3R_7D'
- class pypix_api.SicoobPixAPI(oauth, sandbox_mode=False, timeout=None, scopes=None)[source]
Bases:
BankPixAPIBaseImplementação da API PIX do Sicoob.
- Parameters:
oauth (
OAuth2Client) – Instância configurada de OAuth2Client para autenticaçãosandbox_mode (
bool) – Se True, usa ambiente de sandbox (default: False)
- BASE_URL
URL da API de produção
- SANDBOX_BASE_URL
URL da API de sandbox
- TOKEN_URL
URL para obtenção de token OAuth2
- SCOPES
Scopes necessários para autenticação
- SANDBOX_BASE_URL = 'https://sandbox.sicoob.com.br/sicoob/sandbox/pix/api/v2'
- class pypix_api.SicrediPixAPI(oauth, sandbox_mode=False, timeout=None, scopes=None)[source]
Bases:
BankPixAPIBaseImplementação da API PIX do Sicredi.
Diferentemente de BB e Sicoob, a API Pix do Sicredi usa o prefixo
/apicom versionamento por recurso: a cobrança imediata por identificador (/cob/{txid}) está emv3, os demais recursos do Pix comum (cobv,pix,webhook,loc,lotecobv) emv2e todo o Pix Automático (cobr,rec,locrec,solicrec,webhookcobr,webhookrec) emv1. Por issoBASE_URLaponta apenas para a raiz/apie a versão é injetada em_endpoint_url.A autenticação exige mTLS + OAuth2
client_credentialscomAuthorization: Basic base64(client_id:client_secret). Passe oclient_secretao construir oOAuth2Clientpara ativar o fluxo Basic (verOAuth2Client).- Parameters:
oauth (
OAuth2Client) – Instância configurada de OAuth2Client para autenticaçãosandbox_mode (
bool) – Se True, usa ambiente de sandbox (default: False)
- BASE_URL
Raiz da API de produção (sem versão)
- SANDBOX_BASE_URL
Raiz da API de homologação (sem versão)
- TOKEN_URL
URL para obtenção de token OAuth2 (produção)
- SANDBOX_TOKEN_URL
URL para obtenção de token OAuth2 (homologação)
Note
O
sandbox_modeda biblioteca usa token fixo e não faz mTLS. A homologação real do Sicredi exige mTLS + OAuth; para testá-la, usesandbox_mode=Falsecomtoken_url=SicrediPixAPI.SANDBOX_TOKEN_URLe o certificado de homologação.- SANDBOX_BASE_URL = 'https://api-pix-h.sicredi.com.br/api'
- SANDBOX_TOKEN_URL = 'https://api-pix-h.sicredi.com.br/oauth/token'
- RESOURCE_VERSIONS: ClassVar[dict[str, str]] = {'cob': 'v2', 'cobr': 'v1', 'cobv': 'v2', 'loc': 'v2', 'locrec': 'v1', 'lotecobv': 'v2', 'pix': 'v2', 'rec': 'v1', 'solicrec': 'v1', 'webhook': 'v2', 'webhookcobr': 'v1', 'webhookrec': 'v1'}
- DEFAULT_VERSION = 'v2'
- class pypix_api.StatusCob(value)[source]
-
Status do registro de uma cobrança imediata (cob) ou com vencimento (cobv).
Corresponde ao schema
CobrancaStatusda especificação.- Escrivível em
PATCH /cob/{txid}ePATCH /cobv/{txid}: REMOVIDA_PELO_USUARIO_RECEBEDOR
- Somente leitura (retornados pelo PSP ou usados como filtro em listagens):
ATIVA,CONCLUIDA,REMOVIDA_PELO_PSP
- ATIVA = 'ATIVA'
- CONCLUIDA = 'CONCLUIDA'
- REMOVIDA_PELO_USUARIO_RECEBEDOR = 'REMOVIDA_PELO_USUARIO_RECEBEDOR'
- REMOVIDA_PELO_PSP = 'REMOVIDA_PELO_PSP'
- Escrivível em
- class pypix_api.StatusCobR(value)[source]
-
Status do registro de uma cobrança recorrente (CobR / Pix Automático).
Corresponde ao schema
CobRStatusda especificação.- Escrivível em
PATCH /cobr/{txid}(schemaCobRStatusRevisada): CANCELADA— único valor aceito.
- Somente leitura (retornados pelo PSP ou usados como filtro em listagens):
CRIADA,ATIVA,CONCLUIDA,EXPIRADA,REJEITADA
Cancelar uma CobR encerra apenas aquela cobrança do ciclo; a recorrência (
rec) permanece ativa. Para encerrar a recorrência inteira, useStatusReccomPATCH /rec/{idRec}.- CRIADA = 'CRIADA'
- ATIVA = 'ATIVA'
- CONCLUIDA = 'CONCLUIDA'
- EXPIRADA = 'EXPIRADA'
- REJEITADA = 'REJEITADA'
- CANCELADA = 'CANCELADA'
- Escrivível em
- class pypix_api.StatusRec(value)[source]
-
Status do registro de uma recorrência (Rec / Pix Automático).
Corresponde ao schema
RecStatusda especificação.- Escrivível em
PATCH /rec/{idRec}(schemaRecRevisada): CANCELADA— único valor aceito.
- Somente leitura (retornados pelo PSP ou usados como filtro em listagens):
CRIADA,APROVADA,REJEITADA,EXPIRADA
Cancelar a recorrência encerra o vínculo por completo, inclusive as cobranças futuras. Para cancelar apenas uma cobrança do ciclo, use
StatusCobR.- CRIADA = 'CRIADA'
- APROVADA = 'APROVADA'
- REJEITADA = 'REJEITADA'
- EXPIRADA = 'EXPIRADA'
- CANCELADA = 'CANCELADA'
- Escrivível em
- class pypix_api.StatusSolicRec(value)[source]
-
Status de uma solicitação de confirmação de recorrência (SolicRec).
Corresponde ao schema
SolicRecStatusda especificação.- Escrivível em
PATCH /solicrec/{idSolicRec}(schemaSolicRecRevisada): CANCELADA— único valor aceito.
- Somente leitura (atribuídos pelo PSP do pagador):
CRIADA,ENVIADA,RECEBIDA,REJEITADA,ACEITA,EXPIRADA
Atenção:
REJEITADAé um status de resposta — nunca deve ser enviado em uma revisão.- CRIADA = 'CRIADA'
- ENVIADA = 'ENVIADA'
- RECEBIDA = 'RECEBIDA'
- REJEITADA = 'REJEITADA'
- ACEITA = 'ACEITA'
- EXPIRADA = 'EXPIRADA'
- CANCELADA = 'CANCELADA'
- Escrivível em
- pypix_api.gerar_id_rec(ispb, politica_retentativa, data_criacao=None, sequencial=None)[source]
Gera um
idRecválido para criação de recorrência (Pix Automático).Monta o identificador conforme a regra de formação do schema
RecId:RAxxxxxxxxyyyyMMddkkkkkkkkkkk (29 caracteres, case sensitive) R fixo, recorrência criada dentro do Pix A 'R' permite retentativa pós-vencimento, 'N' não permite xxxxxxxx ISPB do participante (8 dígitos) yyyyMMdd data de criação da recorrência kkkkkkkkkkk sequencial alfanumérico (11 caracteres)
O segundo caractere é derivado de
politica_retentativa, garantindo que o identificador e o campopoliticaRetentativado corpo da recorrência não fiquem contraditórios — uma inconsistência que o schema não detecta.- Parameters:
ispb (
str) – ISPB do participante direto/indireto ou os 8 primeiros dígitos do CNPJ do prestador de serviço de iniciação. 8 dígitos em[0-9].politica_retentativa (
PoliticaRetentativa|str) – Política de retentativa da recorrência. Aceita um membro dePoliticaRetentativaou a string equivalente. Deve ser o mesmo valor enviado no corpo.data_criacao (
date|None) – Data de criação da recorrência. Padrão: data corrente.sequencial (
str|None) – Sequencial de 11 caracteres em[a-zA-Z0-9], único dentro da data de criação. Padrão: gerado aleatoriamente.
- Returns:
identificador de 29 caracteres.
- Return type:
- Raises:
ValueError – Se o ISPB não tiver 8 dígitos em
[0-9], se a política de retentativa for desconhecida ou se o sequencial informado não tiver 11 caracteres em[a-zA-Z0-9].
- Nota:
O sequencial gerado automaticamente é aleatório (62^11 combinações), o que torna a colisão dentro de um mesmo dia improvável, mas não impossível. Quando houver controle transacional do lado da aplicação, informe
sequencialexplicitamente.
- exception pypix_api.APIError(message, status_code=None, response_body=None, **kwargs)[source]
Bases:
PIXErrorRaised when API call fails.
- exception pypix_api.AuthenticationError(message='Authentication failed', **kwargs)[source]
Bases:
PIXErrorRaised when authentication fails.
- class pypix_api.MetricsCollector[source]
Bases:
objectColetor central de metricas.
- exception pypix_api.PIXError(message, error_code=None, details=None, cause=None)[source]
Bases:
ExceptionBase exception class for pypix-api errors.
- class pypix_api.PIXLogger(name='pypix_api')[source]
Bases:
objectLogger principal para operacoes PIX.
- exception pypix_api.ValidationError(message='Validation failed', field=None, **kwargs)[source]
Bases:
PIXErrorRaised when data validation fails.
- pypix_api.setup_logging(level='INFO', log_file=None, structured=False)[source]
Configure global logging for pypix-api.
Subpackages
- pypix_api.scopes package
BBScopesBBScopes.BANK_NAMEBBScopes.BANK_CODEBBScopes.BANK_CODESBBScopes.PIXBBScopes.COBBBScopes.COBVBBScopes.COBRBBScopes.LOTECOBVBBScopes.RECBBScopes.SOLICRECBBScopes.LOCATIONBBScopes.WEBHOOKBBScopes.WEBHOOK_COBRBBScopes.WEBHOOK_RECBBScopes.CONTA_CORRENTEBBScopes.BOLETOBBScopes.get_pix_scopes()
InterScopesInterScopes.BANK_NAMEInterScopes.BANK_CODEInterScopes.BANK_CODESInterScopes.COBInterScopes.COBVInterScopes.LOTECOBVInterScopes.PIX_BASICInterScopes.WEBHOOKInterScopes.LOCATIONInterScopes.LOCATION_RECInterScopes.COBRInterScopes.RECInterScopes.SOLICRECInterScopes.WEBHOOK_COBRInterScopes.WEBHOOK_RECInterScopes.PIXInterScopes.get_pix_scopes()
ScopeGroupScopeRegistrySicoobScopesSicoobScopes.BANK_NAMESicoobScopes.BANK_CODESicoobScopes.BANK_CODESSicoobScopes.SCOPE_COB_WRITESicoobScopes.SCOPE_COB_READSicoobScopes.SCOPE_COBV_WRITESicoobScopes.SCOPE_COBV_READSicoobScopes.SCOPE_LOTECOBV_WRITESicoobScopes.SCOPE_LOTECOBV_READSicoobScopes.SCOPE_PIX_WRITESicoobScopes.SCOPE_PIX_READSicoobScopes.SCOPE_WEBHOOK_READSicoobScopes.SCOPE_WEBHOOK_WRITESicoobScopes.SCOPE_PAYLOADLOCATION_WRITESicoobScopes.SCOPE_PAYLOADLOCATION_READSicoobScopes.PIXSicoobScopes.PIX_COBSicoobScopes.PIX_COBVSicoobScopes.PIX_LOTE_COBVSicoobScopes.PIX_BASICSicoobScopes.PIX_WEBHOOKSicoobScopes.PIX_PAYLOADSicoobScopes.BOLETOSicoobScopes.BOLETO_BASICSicoobScopes.BOLETO_WEBHOOKSicoobScopes.CONTA_CORRENTESicoobScopes.PIX_COMPLETOSicoobScopes.TODOS_ESCOPOSSicoobScopes.get_pix_scopes()SicoobScopes.get_scope_group()SicoobScopes.list_available_groups()SicoobScopes.combine_scopes()
SicrediScopesSicrediScopes.BANK_NAMESicrediScopes.BANK_CODESicrediScopes.BANK_CODESSicrediScopes.COBSicrediScopes.COBVSicrediScopes.LOTECOBVSicrediScopes.PIX_BASICSicrediScopes.WEBHOOKSicrediScopes.LOCATIONSicrediScopes.COBRSicrediScopes.RECSicrediScopes.SOLICRECSicrediScopes.WEBHOOK_COBRSicrediScopes.WEBHOOK_RECSicrediScopes.PIXSicrediScopes.get_pix_scopes()
compose_scopes()get_bank_scopes()get_pix_scopes()- Submodules
- pypix_api.scopes.base module
- pypix_api.scopes.bb module
BBScopesBBScopes.BANK_NAMEBBScopes.BANK_CODEBBScopes.BANK_CODESBBScopes.PIXBBScopes.COBBBScopes.COBVBBScopes.COBRBBScopes.LOTECOBVBBScopes.RECBBScopes.SOLICRECBBScopes.LOCATIONBBScopes.WEBHOOKBBScopes.WEBHOOK_COBRBBScopes.WEBHOOK_RECBBScopes.CONTA_CORRENTEBBScopes.BOLETOBBScopes.get_pix_scopes()
- pypix_api.scopes.inter module
InterScopesInterScopes.BANK_NAMEInterScopes.BANK_CODEInterScopes.BANK_CODESInterScopes.COBInterScopes.COBVInterScopes.LOTECOBVInterScopes.PIX_BASICInterScopes.WEBHOOKInterScopes.LOCATIONInterScopes.LOCATION_RECInterScopes.COBRInterScopes.RECInterScopes.SOLICRECInterScopes.WEBHOOK_COBRInterScopes.WEBHOOK_RECInterScopes.PIXInterScopes.get_pix_scopes()
- pypix_api.scopes.registry module
- pypix_api.scopes.sicoob module
SicoobScopesSicoobScopes.BANK_NAMESicoobScopes.BANK_CODESicoobScopes.BANK_CODESSicoobScopes.SCOPE_COB_WRITESicoobScopes.SCOPE_COB_READSicoobScopes.SCOPE_COBV_WRITESicoobScopes.SCOPE_COBV_READSicoobScopes.SCOPE_LOTECOBV_WRITESicoobScopes.SCOPE_LOTECOBV_READSicoobScopes.SCOPE_PIX_WRITESicoobScopes.SCOPE_PIX_READSicoobScopes.SCOPE_WEBHOOK_READSicoobScopes.SCOPE_WEBHOOK_WRITESicoobScopes.SCOPE_PAYLOADLOCATION_WRITESicoobScopes.SCOPE_PAYLOADLOCATION_READSicoobScopes.PIXSicoobScopes.PIX_COBSicoobScopes.PIX_COBVSicoobScopes.PIX_LOTE_COBVSicoobScopes.PIX_BASICSicoobScopes.PIX_WEBHOOKSicoobScopes.PIX_PAYLOADSicoobScopes.BOLETOSicoobScopes.BOLETO_BASICSicoobScopes.BOLETO_WEBHOOKSicoobScopes.CONTA_CORRENTESicoobScopes.PIX_COMPLETOSicoobScopes.TODOS_ESCOPOSSicoobScopes.get_pix_scopes()SicoobScopes.get_scope_group()SicoobScopes.list_available_groups()SicoobScopes.combine_scopes()
- pypix_api.scopes.sicredi module
SicrediScopesSicrediScopes.BANK_NAMESicrediScopes.BANK_CODESicrediScopes.BANK_CODESSicrediScopes.COBSicrediScopes.COBVSicrediScopes.LOTECOBVSicrediScopes.PIX_BASICSicrediScopes.WEBHOOKSicrediScopes.LOCATIONSicrediScopes.COBRSicrediScopes.RECSicrediScopes.SOLICRECSicrediScopes.WEBHOOK_COBRSicrediScopes.WEBHOOK_RECSicrediScopes.PIXSicrediScopes.get_pix_scopes()
Submodules
pypix_api.error_handling module
Sistema avancado de tratamento de erros para pypix-api.
Este modulo fornece classes de erro especializadas, context managers para tratamento robusto de erros e utilitarios para debugging avancado.
- exception pypix_api.error_handling.APIError(message, status_code=None, response_body=None, **kwargs)[source]
Bases:
PIXErrorRaised when API call fails.
- exception pypix_api.error_handling.AuthenticationError(message='Authentication failed', **kwargs)[source]
Bases:
PIXErrorRaised when authentication fails.
- exception pypix_api.error_handling.AuthorizationError(message='Authorization failed', **kwargs)[source]
Bases:
PIXErrorRaised when authorization/permission fails.
- exception pypix_api.error_handling.BankSpecificError(message, bank_code=None, bank_error_code=None, **kwargs)[source]
Bases:
PIXErrorRaised for bank-specific errors.
- exception pypix_api.error_handling.CertificateError(message='Certificate error', **kwargs)[source]
Bases:
PIXErrorRaised when certificate handling fails.
- exception pypix_api.error_handling.ConfigurationError(message='Configuration error', **kwargs)[source]
Bases:
PIXErrorRaised when configuration is invalid.
- class pypix_api.error_handling.ErrorContext(operation, context=None, handler=None, reraise=True)[source]
Bases:
objectContext manager for robust error handling.
- class pypix_api.error_handling.ErrorHandler(logger=None)[source]
Bases:
objectAdvanced error handler with logging and metrics integration.
- class pypix_api.error_handling.ErrorRecovery[source]
Bases:
objectUtilities for error recovery and retry logic.
- static should_retry(error, max_retries=3)[source]
Determine if an operation should be retried.
- Return type:
- exception pypix_api.error_handling.NetworkError(message='Network communication failed', **kwargs)[source]
Bases:
PIXErrorRaised when network communication fails.
- exception pypix_api.error_handling.PIXError(message, error_code=None, details=None, cause=None)[source]
Bases:
ExceptionBase exception class for pypix-api errors.
- exception pypix_api.error_handling.PIXTransactionError(message, txid=None, operation=None, **kwargs)[source]
Bases:
PIXErrorRaised when PIX transaction fails.
- exception pypix_api.error_handling.RateLimitError(message='Rate limit exceeded', retry_after=None, **kwargs)[source]
Bases:
PIXErrorRaised when API rate limit is exceeded.
- exception pypix_api.error_handling.ValidationError(message='Validation failed', field=None, **kwargs)[source]
Bases:
PIXErrorRaised when data validation fails.
pypix_api.exceptions module
Hierarquia de exceções da biblioteca.
Toda falha levantada pelo pypix_api — erro devolvido pelo PSP, resposta fora
do contrato ou falha de transporte — herda de PixAPIException, de modo
que um único except cobre o caminho inteiro, incluindo a requisição de
token.
Mora fora de banks/ porque também é usada pelo auth/; o módulo
pypix_api.banks.exceptions reexporta tudo para não quebrar imports
existentes.
- exception pypix_api.exceptions.PixAPIException(type_='', title='', status=None, detail='', violacoes=None)[source]
Bases:
ExceptionExceção base para erros da API Pix.
- Parameters:
type – URI do tipo de erro devolvida pelo PSP
title (
str) – Título do errostatus (
int|None) – Código HTTP da resposta.Nonequando a falha ocorreu antes de haver resposta (timeout, erro de conexão)detail (
str) – Descrição detalhada do erroviolacoes (
list[dict[str,Any]] |None) – Lista de violações devolvida pelo PSP, quando houver. É onde o PSP informa o motivo real de um 400. Itens fora do formato de objeto são descartados — um corpo malformado não pode derrubar a construção da própria exceção que o descreve
- exception pypix_api.exceptions.PixAcessoNegadoException(type_='', title='', status=None, detail='', violacoes=None)[source]
Bases:
PixAPIExceptionErro de acesso negado (403).
- exception pypix_api.exceptions.PixRecursoNaoEncontradoException(type_='', title='', status=None, detail='', violacoes=None)[source]
Bases:
PixAPIExceptionErro de recurso não encontrado (404).
- exception pypix_api.exceptions.PixErroValidacaoException(type_='', title='', status=None, detail='', violacoes=None)[source]
Bases:
PixAPIExceptionErro de validação (400).
- exception pypix_api.exceptions.PixNaoAutorizadoException(type_='', title='', status=None, detail='', violacoes=None)[source]
Bases:
PixAPIExceptionErro de autenticação (401).
Token ausente, expirado ou alterado entre o recebimento e o envio; ou credencial recusada pelo endpoint de token.
- exception pypix_api.exceptions.PixErroServicoIndisponivelException(type_='', title='', status=None, detail='', violacoes=None)[source]
Bases:
PixAPIExceptionErro de serviço indisponível (503).
- exception pypix_api.exceptions.PixErroServidorException(type_='', title='', status=None, detail='', violacoes=None)[source]
Bases:
PixAPIExceptionErro interno do PSP (500).
O corpo da resposta é preservado em
detail: os PSPs costumam pedi-lo para abrir chamado.
- exception pypix_api.exceptions.PixErroDesconhecidoException(type_='', title='', status=None, detail='', violacoes=None)[source]
Bases:
PixAPIExceptionErro desconhecido da API Pix.
- exception pypix_api.exceptions.PixRespostaInvalidaError(type_='', title='', status=None, detail='', violacoes=None)[source]
Bases:
PixAPIExceptionErro quando a resposta da API não está no formato esperado
- exception pypix_api.exceptions.PixErroTransporteException(detail='', title='Erro de transporte')[source]
Bases:
PixAPIExceptionFalha ocorrida antes de haver resposta HTTP.
Não possui
status: a requisição não chegou a ser respondida pelo PSP.
- exception pypix_api.exceptions.PixTimeoutException(detail='')[source]
Bases:
PixErroTransporteExceptionA requisição excedeu o tempo limite.
O resultado da operação é desconhecido: o PSP pode tê-la processado e apenas a resposta ter se perdido. Consulte o recurso antes de recriá-lo em operações que geram identificador no PSP (
POST /cob,/cobr,/rec,/solicrec,/loc,/locrec).
- exception pypix_api.exceptions.PixConexaoException(detail='')[source]
Bases:
PixErroTransporteExceptionFalha de conexão com o PSP (DNS, TLS, rede).
- pypix_api.exceptions.EXCECOES_POR_STATUS: dict[int, type[PixAPIException]] = {400: <class 'pypix_api.exceptions.PixErroValidacaoException'>, 401: <class 'pypix_api.exceptions.PixNaoAutorizadoException'>, 403: <class 'pypix_api.exceptions.PixAcessoNegadoException'>, 404: <class 'pypix_api.exceptions.PixRecursoNaoEncontradoException'>, 500: <class 'pypix_api.exceptions.PixErroServidorException'>, 503: <class 'pypix_api.exceptions.PixErroServicoIndisponivelException'>}
Exceção correspondente a cada status HTTP de erro.
pypix_api.http module
Configurações comuns das requisições HTTP da biblioteca.
- pypix_api.http.LIMITE_CORPO_CRU = 500
Quantos caracteres do corpo cru são preservados em detail.
- pypix_api.http.texto_do_corpo(response, limite=500)[source]
Decodifica o corpo da resposta preservando a acentuação.
response.textsó conhece o encoding quando oContent-Typetrazcharset; sem ele, orequestsadivinha e costuma errar em corpos curtos, transformando “inválida” em “inv√°lida” no log. JSON é UTF-8 por definição (RFC 8259), então é o palpite certo quando o PSP não declara.- Return type:
- pypix_api.http.Timeout = float | tuple[float, float] | tuple[float, None]
um número aplicado a conexão e leitura, ou a tupla
(conexão, leitura).Nonena posição de leitura significa espera sem limite.- Type:
Tipo aceito no parâmetro
timeout, igual ao dorequests
pypix_api.logging module
Sistema de logging estruturado para pypix-api.
Este modulo fornece funcionalidades de logging estruturado com suporte a diferentes formatos de saida, contexto e metricas de performance.
- class pypix_api.logging.APICallLogger(logger=None)[source]
Bases:
objectLogger especializado para chamadas de API.
- class pypix_api.logging.PIXLogger(name='pypix_api')[source]
Bases:
objectLogger principal para operacoes PIX.
- class pypix_api.logging.StructuredFormatter(include_trace=True)[source]
Bases:
FormatterFormatador para logs estruturados em JSON.
- pypix_api.logging.log_authentication(client_id, scope, success, **kwargs)[source]
Log authentication attempt.
- Return type:
- pypix_api.logging.log_bank_operation(operation, bank, **kwargs)[source]
Log bank operation with context.
- Return type:
- pypix_api.logging.log_performance(logger=None, threshold=1.0)[source]
Decorator para medir e logar performance de funcoes.
- pypix_api.logging.log_pix_transaction(txid, operation_type, amount=None, **kwargs)[source]
Log PIX transaction with context.
- Return type:
pypix_api.metrics module
Sistema de metricas e telemetria para pypix-api.
Este modulo coleta e reporta metricas de uso da biblioteca para monitoramento e otimizacao de performance.
- class pypix_api.metrics.APICallMetric(method, endpoint, status_code, response_time, timestamp, bank, error=None)[source]
Bases:
objectMetrica para chamadas de API.
- __init__(method, endpoint, status_code, response_time, timestamp, bank, error=None)
- class pypix_api.metrics.MetricEntry(name, value, timestamp, tags=<factory>, unit='count')[source]
Bases:
objectEntrada de metrica individual.
- __init__(name, value, timestamp, tags=<factory>, unit='count')
- class pypix_api.metrics.MetricsCollector[source]
Bases:
objectColetor central de metricas.
- metrics: list[MetricEntry]
- api_calls: list[APICallMetric]
- class pypix_api.metrics.PerformanceTracker(operation_name, tags=None)[source]
Bases:
objectContext manager para tracking de performance.
- pypix_api.metrics.export_metrics(file_path=None)[source]
Export metrics to file or console.
- Return type:
- pypix_api.metrics.timed_function(metric_name=None, tags=None)[source]
Decorator to automatically time function execution.
- pypix_api.metrics.track_api_call(method, endpoint)[source]
Track API call performance.
- Return type:
pypix_api.observability module
Modulo de observabilidade integrado para pypix-api.
Este modulo combina logging, metricas e tratamento de erros em uma interface unificada para monitoramento completo da biblioteca.
- class pypix_api.observability.HealthCheck[source]
Bases:
objectHealth check utilities for monitoring system status.
- class pypix_api.observability.ObservabilityConfig[source]
Bases:
objectConfiguracao centralizada de observabilidade.
- class pypix_api.observability.ObservabilityMixin(*args, **kwargs)[source]
Bases:
objectMixin para adicionar observabilidade a classes da API.
- pypix_api.observability.configure_observability(config=None)[source]
Configure global observability settings.
- pypix_api.observability.create_observability_report()[source]
Create comprehensive observability report.