Estado actual
La API pública de La Pyme hoy convive en dos superficies:
v1: endpoints legacy orientados a CRUD y listados clásicos.
v2: endpoints machine-first para flujos operativos que necesitan validación previa, idempotencia y respuestas más estables para agentes u otras apps.
Hoy v2 cubre el slice de compras y los recursos de descubrimiento necesarios para completarlo sin acceso a la base de datos.
Qué cambia en v2
En v2 no asumimos que todas las operaciones son un CRUD simple. Por eso el contrato cambia en tres puntos:
- Las escrituras transaccionales pueden separar
preview y commit.
- Los errores usan una envoltura estructurada con
requestId, code, retryable y details.
- Los commits retryables requieren
Idempotency-Key.
Success response de lectura
{
"requestId": "req_123",
"success": true,
"data": [],
"pagination": {
"page": 1,
"limit": 50,
"total": 0,
"totalPages": 1
}
}
Error response de v2
{
"requestId": "req_123",
"success": false,
"error": {
"code": "PRECONDITION_FAILED",
"message": "La compra no puede confirmarse hasta resolver los bloqueos del preview.",
"retryable": false,
"details": [
{
"path": "input.items",
"code": "INVENTORY",
"message": "Stock insuficiente. Stock actual: -34, cambio solicitado: 1"
}
]
}
}
Flujo recomendado para compras
- Listá o buscá el proveedor con
GET /api/v2/suppliers.
- Listá o buscá productos con
GET /api/v2/products.
- Si vas a marcar
productsReceived: true, descubrí la ubicación con GET /api/v2/warehouses.
- Ejecutá
POST /api/v2/purchases con mode: "preview".
- Si
blockingIssues está vacío, repetí el mismo payload con mode: "commit" y un Idempotency-Key.
- Consultá la compra creada con
GET /api/v2/purchases o GET /api/v2/purchases/{purchaseId}.
preview no escribe nada. commit sí escribe y exige reusar el mismo Idempotency-Key si repetís la misma operación por retry o timeout.
Endpoints disponibles hoy en v2
GET /api/v2/suppliers
GET /api/v2/products
GET /api/v2/warehouses
GET /api/v2/purchases
GET /api/v2/purchases/{purchaseId}
POST /api/v2/purchases
Ejemplo de commit
curl -X POST "https://api.lapyme.com.ar/api/v2/purchases" \
-H "Authorization: Bearer TU_API_KEY_AQUI" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 2bb0c70a-8787-4186-9678-c8156206db16" \
-d '{
"mode": "commit",
"client": {
"requestId": "req_purchase_commit_1",
"agent": {
"name": "external-purchasing-agent",
"version": "1.0.0"
}
},
"input": {
"supplierId": "afafcbec-9d94-4174-8d5c-ec8d72780947",
"voucherType": 1,
"supplierInvoiceNumber": "0001-00000001",
"invoiceDate": "2026-03-10",
"currency": "PES",
"exchangeRate": 1,
"productsReceived": false,
"items": [
{
"productId": "9c692e8b-0f9a-4f7c-8b99-061a2eb188ae",
"quantity": 1,
"unitCost": 8250
}
]
}
}'
Scopes
Los scopes mínimos para este slice son:
suppliers:read
products:read
warehouses:read
purchases:read
purchases:write
Podés ver cada endpoint en detalle en la referencia OpenAPI de esta misma sección.