Consumiendo Endpoints via Data API
Esta guia muestra el flujo completo para consumir endpoints de visualizacion via API key.
Vision General
El flujo tiene 3 etapas:
- Cambiar
api_key+api_secretpor tokens JWT. - Ejecutar el endpoint (sync o async).
- Recibir el resultado (inmediato en sync, via polling en async).
Pre-requisitos
- Un usuario de integracion con API key activa.
company_slugde la empresa.- Un endpoint de visualizacion creado y activo (creado por el console).
- Permiso
data_api:executeasignado al usuario de integracion.
Permisos Necesarios
| Endpoint | Permiso minimo |
|---|---|
POST /api/v1/data-api/:namespace/:slug/execute | data_api:execute |
GET /api/v1/data-api/:namespace/:slug/jobs/:job_id | data_api:get_job |
Estos permisos estan incluidos en las politicas managed VisualizationViewer, VisualizationManager y DataAPIConsumer.
Para verificar las acciones efectivas del usuario autenticado, usa GET /api/v1/auth/permissions.
Base URL por Entorno
| Entorno | Base URL |
|---|---|
| Local | http://localhost:3100 |
| Produccion | https://api.console.solucao42.com.br |
export API_BASE_URL="http://localhost:3100"
Etapa 1: Autenticacion via API Key
Usa la API key solo para obtener JWT. No envies la API key en las llamadas siguientes.
curl -X POST "$API_BASE_URL/api/v1/auth/api-key" \
-H "Content-Type: application/json" \
-d '{
"company_slug": "acme",
"api_key": "s42_xxxxxxxxx",
"api_secret": "xxxxxxxxx"
}'
Respuesta esperada:
{
"access_token": "eyJ...",
"refresh_token": "eyJ...",
"access_token_expires_in": 600,
"refresh_token_expires_in": 604800,
"user": { ... }
}
Guarda el access_token para las llamadas siguientes:
export TOKEN="eyJ..."
Etapa 2: Ejecutar Endpoint (Sync)
Para endpoints configurados con execution_mode: sync:
curl -X POST "$API_BASE_URL/api/v1/data-api/default/vendas-por-regiao/execute" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"parameter_values": {
"data_inicio": "2026-01-01",
"regiao": "Sul"
}
}'
Respuesta (HTTP 200):
{
"columns": [
{ "name": "regiao", "type": "varchar" },
{ "name": "total", "type": "decimal" }
],
"rows": [
{ "regiao": "Sul", "total": 150000.00 }
],
"row_count": 1,
"truncated": false,
"max_rows": 10000,
"executed_at": "2026-04-11T10:30:00Z"
}
El timeout para ejecucion sync es de 60 segundos. Para queries mas largas, usa endpoints en modo async.
Etapa 2 (alternativa): Ejecutar Endpoint (Async)
Para endpoints configurados con execution_mode: async:
curl -X POST "$API_BASE_URL/api/v1/data-api/default/relatorio-mensal/execute" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"parameter_values": { "mes": "2026-03" },
"callback_url": "https://mi-sistema.com/webhook/resultado"
}'
Respuesta (HTTP 202):
{
"job_id": "507f1f77bcf86cd799439011",
"status": "processing",
"polling_url": "/api/v1/data-api/default/relatorio-mensal/jobs/507f1f77bcf86cd799439011"
}
Etapa 3: Polling del Resultado (Async)
curl "$API_BASE_URL/api/v1/data-api/default/relatorio-mensal/jobs/507f1f77bcf86cd799439011" \
-H "Authorization: Bearer $TOKEN"
Mientras procesa:
{
"job_id": "507f1f77bcf86cd799439011",
"status": "processing",
"result": null,
"error": null,
"created_at": "2026-04-11T10:30:00Z",
"completed_at": null
}
Cuando completa:
{
"job_id": "507f1f77bcf86cd799439011",
"status": "completed",
"result": {
"columns": [...],
"rows": [...],
"row_count": 42,
"truncated": false
},
"error": null,
"created_at": "2026-04-11T10:30:00Z",
"completed_at": "2026-04-11T10:30:45Z"
}
Si callback_url fue informada, el sistema envia automaticamente un POST al completar el job, evitando la necesidad de polling.
Tratamiento de Errores
| HTTP Status | Codigo | Causa |
|---|---|---|
| 401 | - | Token ausente o invalido |
| 403 | FORBIDDEN | Sin permiso data_api:execute o data_api:get_job |
| 404 | ENDPOINT_NOT_FOUND | Endpoint inexistente, inactivo o de otra company |
| 408 | EXECUTION_TIMEOUT | Query excedio el timeout de 60s (usa modo async) |
| 422 | - | Parametro invalido o valor no permitido (share context) |
| 500 | INTERNAL_ERROR | Error interno en la ejecucion del query |
Refresh de Tokens
El access_token expira en 10 minutos. Para renovar:
curl -X POST "$API_BASE_URL/api/v1/auth/refresh" \
-H "Content-Type: application/json" \
-d '{ "refresh_token": "eyJ..." }'