GraphQL API - Quick Reference
Agranelos Inventario System
Base URL: https://agranelos-fybpb6duaadaaxfm.eastus2-01.azurewebsites.net/api/graphql
CONSULTAS BÁSICAS
Todos los productos
curl -X POST https://agranelos-fybpb6duaadaaxfm.eastus2-01.azurewebsites.net/api/graphql \
-H "Content-Type: application/json" \
-d '{"query": "{ productos { id nombre precio cantidad } }"}'
Producto por ID
curl -X POST https://agranelos-fybpb6duaadaaxfm.eastus2-01.azurewebsites.net/api/graphql \
-H "Content-Type: application/json" \
-d '{"query": "query($id: ID!) { producto(id: $id) { id nombre precio cantidad } }", "variables": {"id": "1"}}'
Todas las bodegas
curl -X POST https://agranelos-fybpb6duaadaaxfm.eastus2-01.azurewebsites.net/api/graphql \
-H "Content-Type: application/json" \
-d '{"query": "{ bodegas { id nombre ubicacion capacidad } }"}'
✏️ OPERACIONES DE ESCRITURA
Crear producto
curl -X POST https://agranelos-fybpb6duaadaaxfm.eastus2-01.azurewebsites.net/api/graphql \
-H "Content-Type: application/json" \
-d '{"query": "mutation($input: ProductoInput!) { crearProducto(input: $input) { success message producto { id nombre } } }", "variables": {"input": {"nombre": "Nuevo Producto", "descripcion": "Test", "precio": 29.99, "cantidad": 100}}}'
Actualizar producto
curl -X POST https://agranelos-fybpb6duaadaaxfm.eastus2-01.azurewebsites.net/api/graphql \
-H "Content-Type: application/json" \
-d '{"query": "mutation($input: ProductoUpdateInput!) { actualizarProducto(input: $input) { success message } }", "variables": {"input": {"id": "1", "nombre": "Producto Actualizado", "precio": 35.99}}}'
Eliminar producto
curl -X POST https://agranelos-fybpb6duaadaaxfm.eastus2-01.azurewebsites.net/api/graphql \
-H "Content-Type: application/json" \
-d '{"query": "mutation($id: ID!) { eliminarProducto(id: $id) { success message } }", "variables": {"id": "1"}}'
Crear bodega
curl -X POST https://agranelos-fybpb6duaadaaxfm.eastus2-01.azurewebsites.net/api/graphql \
-H "Content-Type: application/json" \
-d '{"query": "mutation($input: BodegaInput!) { crearBodega(input: $input) { success message bodega { id nombre } } }", "variables": {"input": {"nombre": "Nueva Bodega", "ubicacion": "Zona Norte", "capacidad": 1500}}}'
CONSULTAS ÚTILES
Health Check
curl -X POST https://agranelos-fybpb6duaadaaxfm.eastus2-01.azurewebsites.net/api/graphql \
-H "Content-Type: application/json" \
-d '{"query": "{ health }"}'
Consulta combinada
curl -X POST https://agranelos-fybpb6duaadaaxfm.eastus2-01.azurewebsites.net/api/graphql \
-H "Content-Type: application/json" \
-d '{"query": "{ productos { id nombre precio } bodegas { id nombre capacidad } }"}'
Solo nombres y precios
curl -X POST https://agranelos-fybpb6duaadaaxfm.eastus2-01.azurewebsites.net/api/graphql \
-H "Content-Type: application/json" \
-d '{"query": "{ productos { nombre precio } }"}'
CAMPOS DISPONIBLES
Producto: id, nombre, descripcion, precio, cantidad, fechaCreacion, fechaActualizacion
Bodega: id, nombre, ubicacion, capacidad, fechaCreacion, fechaActualizacion
NOTAS IMPORTANTES
- Campo cantidad: Usa
cantidaden GraphQL (mapea acantidadEnStockinternamente) - IDs: Siempre como strings en GraphQL:
"1","2", etc. - Campos requeridos: Marcados con
!en el esquema - Fechas: Formato ISO 8601:
"2025-09-14T10:30:00"
🔗 REST Endpoints (alternativa)
GET /api/productos- Listar productosGET /api/productos/{id}- Obtener productoPOST /api/productos- Crear productoPUT /api/productos/{id}- Actualizar productoDELETE /api/productos/{id}- Eliminar productoGET /api/bodegas- Listar bodegasPOST /api/bodegas- Crear bodegaPUT /api/bodegas/{id}- Actualizar bodegaDELETE /api/bodegas/{id}- Eliminar bodega