Skip to main content

SDK Python para a API Omie — client, models e erros tipados

Project description

omie-sdk

SDK Python para a API Omie — client, models Pydantic e erros tipados num único package.

Instalação

pip install omie-sdk

Uso rápido

from omie.financas import OmieFinancas
from omie.financas.models import (
    ContaReceberParam,
    ContaPagarParam,
    ConsultarContaReceberParam,
    ListarContasReceberParam,
)

financas = OmieFinancas(app_key="...", app_secret="...")

Contas a Receber

# Incluir
financas.incluir_conta_receber(ContaReceberParam(
    codigo_lancamento_integracao="meu-sistema-123",
    codigo_cliente_fornecedor=98765,
    data_vencimento="30/06/2025",
    valor_documento=1500.00,
    codigo_categoria="1.01.02",
    data_previsao="30/06/2025",
    id_conta_corrente="12345678",
    data_emissao="01/06/2025",
    nsu="NSU-001",
    observacao="Fatura junho",
))

# Alterar
financas.alterar_conta_receber(ContaReceberParam(
    codigo_lancamento_integracao="meu-sistema-123",
    codigo_cliente_fornecedor=98765,
    data_vencimento="30/06/2025",
    valor_documento=1600.00,   # valor atualizado
    codigo_categoria="1.01.02",
    data_previsao="30/06/2025",
    id_conta_corrente="12345678",
    data_emissao="01/06/2025",
))

# Consultar
financas.consultar_conta_receber(
    ConsultarContaReceberParam(codigo_lancamento_integracao="meu-sistema-123")
)
financas.consultar_conta_receber(
    ConsultarContaReceberParam(codigo_lancamento_omie=3784804194)
)

# Listar (com defaults: pagina=1, registros_por_pagina=50)
resultado = financas.listar_contas_receber()
# resultado["conta_receber_cadastro"] → lista de lançamentos
# resultado["total_de_paginas"]       → total de páginas

# Listar com filtros
resultado = financas.listar_contas_receber(ListarContasReceberParam(
    pagina=1,
    registros_por_pagina=100,
    status_titulo="ABERTO",
    data_vencimento_de="01/06/2025",
    data_vencimento_ate="30/06/2025",
))

Contas a Pagar

financas.incluir_conta_pagar(ContaPagarParam(
    codigo_lancamento_integracao="fornecedor-456",
    codigo_cliente_fornecedor=11111,
    data_vencimento="15/07/2025",
    valor_documento=800.00,
    codigo_categoria="2.01.01",
    data_previsao="15/07/2025",
    id_conta_corrente="12345678",
    data_emissao="01/07/2025",
))

Tratamento de erros

import time
from omie.errors import OmieDuplicateError, OmieRateLimitError, OmieNotFoundError

try:
    financas.incluir_conta_receber(param)

except OmieDuplicateError as e:
    # e.omie_id → ID do lançamento existente na Omie
    conta = financas.consultar_conta_receber(
        ConsultarContaReceberParam(codigo_lancamento_omie=int(e.omie_id))
    )

except OmieRateLimitError as e:
    # e.retry_after → segundos sugeridos pela Omie
    time.sleep(e.retry_after or 60)
    raise

except OmieNotFoundError as e:
    # e.field → tag com o código não encontrado
    print(f"Campo com problema: {e.field}")

Models Pydantic

Todos os models são frozen=True — imutáveis após criação. As validações acontecem na instanciação:

Model Valida
ContaReceberParam datas DD/MM/YYYY, valor > 0, integracao não vazio
ContaPagarParam idem
ConsultarContaReceberParam ao menos um código informado
ListarContasReceberParam pagina ≥ 1, registros ≤ 100 (limite Omie), datas DD/MM/YYYY

Hierarquia de erros

omie.errors.OmieError
├── OmieClientError          faultcode: SOAP-ENV:Client*
│   ├── OmieAuthError
│   ├── OmieValidationError      .field
│   ├── OmieDuplicateError       .omie_id
│   ├── OmieNotFoundError        .field
│   └── OmieRateLimitError       .retry_after
└── OmieServerError          faultcode: SOAP-ENV:Server*
    └── OmieUnavailableError

Estrutura do package

omie/
├── __init__.py
├── errors/
│   └── __init__.py          exceções + parse_omie_response
├── _core/
│   └── http.py              OmieHttp (transporte, privado)
└── financas/
    ├── __init__.py          OmieFinancas
    └── models.py            ContaReceberParam, ContaPagarParam, ...

Adicionando um novo contexto

# omie/clientes/__init__.py
from omie._core import OmieHttp
from omie.clientes.models import ClienteParam, ListarClientesParam

class OmieClientes:
    def __init__(self, app_key: str, app_secret: str) -> None:
        self._http = OmieHttp(app_key, app_secret)

    def incluir_cliente(self, param: ClienteParam) -> dict:
        return self._http.post("geral/clientes", "IncluirCliente", [param.to_omie_dict()])

    def listar_clientes(self, param: ListarClientesParam | None = None) -> dict:
        p = param or ListarClientesParam()
        return self._http.post("geral/clientes", "ListarClientes", [p.to_omie_dict()])

Publicar

uv build
uv publish --token pypi-seu-token

Licença

MIT

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

iaxys_omie_utils-0.1.2.tar.gz (83.5 kB view details)

Uploaded Source

Built Distribution

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

iaxys_omie_utils-0.1.2-py3-none-any.whl (23.4 kB view details)

Uploaded Python 3

File details

Details for the file iaxys_omie_utils-0.1.2.tar.gz.

File metadata

  • Download URL: iaxys_omie_utils-0.1.2.tar.gz
  • Upload date:
  • Size: 83.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.27 {"installer":{"name":"uv","version":"0.9.27","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Linux Mint","version":"22.3","id":"zena","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for iaxys_omie_utils-0.1.2.tar.gz
Algorithm Hash digest
SHA256 f98c44065fca689a4805ea4ad0b8c086d76e94f4c1e1f9ac8e847ea1c8b9a470
MD5 09b446a95da1ff8e9e27c42c0b44ef70
BLAKE2b-256 181959ff2dd13bde5394eff9703fd026ef15655e8f6c779d257e4a7a2d5539a5

See more details on using hashes here.

File details

Details for the file iaxys_omie_utils-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: iaxys_omie_utils-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 23.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.27 {"installer":{"name":"uv","version":"0.9.27","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Linux Mint","version":"22.3","id":"zena","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for iaxys_omie_utils-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 db2713e8559409a6e4adec8021df9893245cfc37b0c570c588abb901d2ab4c9f
MD5 24b5ca48deb9b16a2baf01f6eb8c091a
BLAKE2b-256 3e1d42c5ef8de26ca43cadc3b107626b51792ae2dcf06f5acd5d425f567e98ee

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