Saltar al contenido principal

Ejemplos Python (requests)

Instalación

pip install requests

Autenticación

import os
import requests

BASE_URL = "https://api.gestia.lat/api/v1"

# Obtener token JWT
resp = requests.post(
f"{BASE_URL}/auth/login",
json={"email": os.environ["GESTIA_EMAIL"], "password": os.environ["GESTIA_PASSWORD"]},
)
resp.raise_for_status()
token = resp.json()["accessToken"]

headers = {"Authorization": f"Bearer {token}"}

CRUD básico

# Listar clientes
resp = requests.get(f"{BASE_URL}/customers", headers=headers, params={"page": 1, "limit": 10})
customers = resp.json()["data"]

# Crear cliente
resp = requests.post(
f"{BASE_URL}/customers",
headers=headers,
json={"name": "Carlos Gómez", "email": "carlos@ejemplo.com"},
)
nuevo_cliente = resp.json()

# Crear factura
resp = requests.post(
f"{BASE_URL}/invoices",
headers=headers,
json={
"customerId": nuevo_cliente["id"],
"items": [{"productId": "uuid-del-producto", "quantity": 2, "unitPrice": 150000}],
},
)
print("Factura creada:", resp.json()["id"])

Manejo de errores y rate limits

resp = requests.get(f"{BASE_URL}/customers", headers=headers)
if resp.status_code == 429:
retry_after = int(resp.headers.get("Retry-After", "5"))
print(f"Rate limit: espera {retry_after}s")
time.sleep(retry_after)

Usa variables de entorno (GESTIA_API_KEY, GESTIA_EMAIL, etc.) para las credenciales; nunca las incluyas en el repositorio.