Skip to main content

Um cliente Python robusto e intuitivo para a API da Nuvemshop.

Project description

🧰 nuvemshop-client-python

Um cliente Python robusto e intuitivo para a API da Nuvemshop (Tiendanube).
Desenvolvido para simplificar a criação de integrações, automações e SDKs, com foco em organização, reuso e manutenção fácil.

🚀 Funcionalidades

  • Cliente HTTP Resiliente
    Requisições, autenticação e tratamento de erros automáticos, com suporte a timeouts e retentativas.

  • Paginação Automática
    Busque todos os recursos com .list_all() sem precisar iterar páginas manualmente.

  • Fluxo de Autenticação OAuth 2.0 Simplificado
    Um método estático para obter access_token e store_id de novas lojas de forma clara e explícita.

  • Recursos Modulares
    Operações da API organizadas por recursos: Products, Orders, Customers, etc.

  • Interface Fluida
    Interaja naturalmente: client.products.get(), client.orders.list(), etc.

  • Estrutura Extensível
    A classe ResourceCRUD permite criar novos recursos com 1 linha.

  • Instalável com pip
    Empacotado com pyproject.toml para facilitar distribuição.

📦 Instalação

git clone https://github.com/Brunohvg/nuvemshop-client-python.git
cd nuvemshop-client-python
pip install -e .

Você também pode usar uv se preferir.

⚙️ Configuração e Autenticação

Passo 1: Obter as Credenciais da Loja

Primeiro, você precisa trocar o code temporário (que a Nuvemshop envia para sua aplicação após o lojista autorizar) por um access_token e store_id permanentes.

from nuvemshop_client import NuvemshopClient, NuvemshopClientAuthenticationError
import os

meu_client_id = os.getenv("CLIENT_ID")
meu_client_secret = os.getenv("CLIENT_SECRET")
codigo_recebido = "codigo_que_a_nuvemshop_enviou_para_minha_app"

try:
    credentials = NuvemshopClient.authenticate(
        client_id=meu_client_id,
        client_secret=meu_client_secret,
        code=codigo_recebido
    )

    access_token = credentials.get("access_token")
    store_id = credentials.get("store_id")

    print(f"Credenciais obtidas com sucesso para a loja ID: {store_id}")

except NuvemshopClientAuthenticationError as e:
    print(f"Ocorreu um erro durante a autenticação: {e}")
except ValueError as e:
    print(f"Erro de configuração: {e}")

Passo 2: Usar o Cliente para Interagir com a Loja

from nuvemshop_client import NuvemshopClient

client = NuvemshopClient(
    store_id=store_id,
    access_token=access_token,
    timeout=45,
    retries=5
)

produto = client.products.get(12345)
todos_pedidos = client.orders.list_all()

✨ Funcionalidades Avançadas

🔄 Paginação automática

produtos = client.products.list_all(per_page=200)
print(f"Total de produtos encontrados: {len(produtos)}")

🛡 Resiliência

Parâmetros extras ao instanciar o cliente:

  • timeout: tempo máximo de espera por resposta (padrão: 30s)
  • retries: número de retentativas em caso de erro de rede, 429 ou 5xx (padrão: 3)

📚 Recursos Suportados

Cada um possui métodos como .list(), .get(), .create(), .update(), .delete() e o auxiliar .list_all():

  • client.products
  • client.orders
  • client.customers
  • client.abandoned_checkouts
  • client.webhooks
  • client.stores

⚠️ Tratamento de Erros

Use try/except com as exceções customizadas para tratar erros da API de forma granular:

from nuvemshop_client.exception import (
    NuvemshopClientError,
    NuvemshopClientNotFoundError
)

try:
    produto = client.products.get(99999999)
except NuvemshopClientNotFoundError:
    print("O produto solicitado não foi encontrado.")
except NuvemshopClientError as e:
    print(f"Ocorreu um erro genérico ao acessar a API: {e}")

📄 Licença

MIT. Veja LICENSE para mais detalhes.
Feito com 💚 por Brunohvg

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

nuvemshop_client_python-0.2.5.tar.gz (9.6 kB view details)

Uploaded Source

Built Distribution

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

nuvemshop_client_python-0.2.5-py3-none-any.whl (11.7 kB view details)

Uploaded Python 3

File details

Details for the file nuvemshop_client_python-0.2.5.tar.gz.

File metadata

  • Download URL: nuvemshop_client_python-0.2.5.tar.gz
  • Upload date:
  • Size: 9.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for nuvemshop_client_python-0.2.5.tar.gz
Algorithm Hash digest
SHA256 18e86470dba494640d916d40234aeb8020c8d8e38d5982c422de9d69385b3fda
MD5 621db172260ef89b6930c10cc457ff63
BLAKE2b-256 56901366b16b85f9e2630862843ff18af87d3499f90b270739331c37c38c3637

See more details on using hashes here.

File details

Details for the file nuvemshop_client_python-0.2.5-py3-none-any.whl.

File metadata

File hashes

Hashes for nuvemshop_client_python-0.2.5-py3-none-any.whl
Algorithm Hash digest
SHA256 97f8345ef3b4eb51b13090ac2eab4ca6c20f03d895abe15d573bbee0b6b14ef2
MD5 a7b63e30fe5b933df69b9c105597168f
BLAKE2b-256 f21b3646bf2b703bd32223ac6da4ad3c7ffd221d3c8e11a69372a6cdb0b8fc13

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