Ejemplos con cURL

5 ejemplos reales contra una instancia local del ERP. Asumen que tienes las credenciales de desarrollo (cb / 1234) y que el ERP corre en http://localhost.

1. Login

curl -X POST http://localhost/api/v1/auth/login \
  -H "Content-Type: application/json" \
  -d '{"usuario": "cb", "password": "1234"}'

Guarda el token de la respuesta:

TOKEN=$(curl -s -X POST http://localhost/api/v1/auth/login \
  -H "Content-Type: application/json" \
  -d '{"usuario": "cb", "password": "1234"}' \
  | jq -r '.data.token')
 
echo $TOKEN

2. Listar compras

curl "http://localhost/api/v1/Compra?per_page=10&sort=fecha&order=desc" \
  -H "Authorization: Bearer $TOKEN"

Filtros típicos:

# Compras del proveedor 4218 entre enero y marzo de 2026
curl "http://localhost/api/v1/Compra?proveedor=4218&fecha__gte=2026-01-01&fecha__lte=2026-03-31" \
  -H "Authorization: Bearer $TOKEN"

3. Obtener una compra específica

curl http://localhost/api/v1/Compra/12345 \
  -H "Authorization: Bearer $TOKEN"

Para evitar resolver relaciones (más rápido en listados grandes, irrelevante en uno solo):

curl "http://localhost/api/v1/Compra/12345?lean=true" \
  -H "Authorization: Bearer $TOKEN"

4. Autorizar compras (batch — Business Action grid_action)

curl -X POST http://localhost/api/v1/Compra/actions/autorizar_compra \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"ids": [12345, 12346, 12347]}'

Respuesta esperada — éxitos parciales:

{
  "data": {
    "results": [
      { "id": 12345, "ok": true },
      { "id": 12346, "ok": true },
      { "id": 12347, "ok": false, "errors": [{ "code": "INVALID_STATE", "message": "Compra ya autorizada" }] }
    ]
  },
  "meta": { "model": "Compra", "action": "autorizar_compra", "total": 3, "succeeded": 2, "failed": 1 },
  "errors": null
}

5. Cancelar una compra (single — Business Action url_action)

curl -X POST http://localhost/api/v1/Compra/12345/actions/cancelar_compra \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"motivo": "Duplicado"}'
#!/usr/bin/env bash
set -euo pipefail
 
BASE="http://localhost/api/v1"
TOKEN=$(curl -s -X POST "$BASE/auth/login" \
  -H "Content-Type: application/json" \
  -d '{"usuario": "cb", "password": "1234"}' \
  | jq -r '.data.token')
 
# Listar las primeras 5 compras pendientes (estado I = iniciada)
curl -s "$BASE/Compra?estado=I&per_page=5" \
  -H "Authorization: Bearer $TOKEN" \
  | jq '.data[] | {id, total, proveedor_str}'