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.