Saltar a contenido

Inicio Rápido

De cero a ver los errores de tu integración en 5 pasos.

Tiempo estimado: 10 minutos
URL base: https://one.fracttal.com/hub/api/v1


Paso 1 — Obtener tu token

La API acepta dos tipos de token:

Copia el token de sesión desde la consola de tu navegador en one.fracttal.com. Tiene una vida útil de ~12 horas.

TOKEN="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."

Si tu empresa tiene un cliente OAuth2 configurado con acceso al Hub:

TOKEN=$(curl -s -X POST "https://one.fracttal.com/api/v1/oauth/token" \
  -H "Authorization: Basic $(echo -n 'TU_CLAVE:TU_SECRETO' | base64)" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=client_credentials" \
  | jq -r '.access_token')

Scope automático

No necesitas enviar tu id_company como parámetro. La API lo extrae del token automáticamente.


Paso 2 — Listar tus integraciones (DAGs)

curl -s "https://one.fracttal.com/hub/api/v1/dags" \
  -H "Authorization: Bearer $TOKEN" \
  | jq '.dags[] | {id: .dag_id, nombre: .description}'

Respuesta típica:

[
  {"id": "a1b2c3d4-...", "nombre": "Fracttal → SAP B1 — Órdenes de trabajo"},
  {"id": "e5f6a7b8-...", "nombre": "SAP B1 → Fracttal — Inventario"},
  {"id": "c9d0e1f2-...", "nombre": "Fracttal → SAP B1 — Solicitudes de compra"}
]

Guarda el dag_id de la integración que quieres analizar.


Paso 3 — Ver el resumen del mes

DAG_ID="a1b2c3d4-..."

curl -s "https://one.fracttal.com/hub/api/v1/dags/$DAG_ID/stats?start_date=2026-04-01&end_date=2026-04-30" \
  -H "Authorization: Bearer $TOKEN" \
  | jq '{total: .total_runs, exitosas: .load_success, fallidas: .load_failed}'

Respuesta:

{
  "total": 396,
  "exitosas": 1,
  "fallidas": 395
}

Interpretar los resultados

load_failed indica que la fase de carga no completó correctamente. Un número alto aquí señala un problema recurrente en la integración.


Paso 4 — Buscar las ejecuciones fallidas

Filtra por estado y rango de fechas para ver solo las ejecuciones con error:

curl -s "https://one.fracttal.com/hub/api/v1/dags/$DAG_ID/runs?date_from=2026-04-01&date_to=2026-04-30&load_status=failed&limit=20" \
  -H "Authorization: Bearer $TOKEN" \
  | jq '.runs[] | {fecha: .date, run_id: .run_id, tipo: .type}'

Respuesta:

[
  {"fecha": "2026-04-01", "run_id": "manual__2026-04-01T10:00:00+00:00", "tipo": "ERROR"},
  {"fecha": "2026-04-02", "run_id": "manual__2026-04-02T10:00:00+00:00", "tipo": "ERROR"}
]

run_id vacío en ejecuciones históricas

Las ejecuciones con run_id: "" son anteriores al despliegue del escritor S3. Para estas, las fases de detalle no están disponibles, pero los estadísticos del paso 3 sí funcionan. Las ejecuciones nuevas tienen artefactos completos.

Para buscar un error específico en el contenido del evento (por ejemplo, un número de OT):

curl -s "https://one.fracttal.com/hub/api/v1/dags/$DAG_ID/runs?date_from=2026-04-01&date_to=2026-04-30&event_keyword=OT-12345" \
  -H "Authorization: Bearer $TOKEN" \
  | jq '.runs[0]'

Paso 5 — Ver el detalle del error

Con el date y run_id de una ejecución fallida:

DATE="2026-04-01"
RUN_ID="manual__2026-04-01T10:00:00%2B00:00"  # URL-encoded

# Ver qué falló en la fase de carga
curl -s "https://one.fracttal.com/hub/api/v1/dags/$DAG_ID/runs/$DATE/$RUN_ID/phases/load/errors" \
  -H "Authorization: Bearer $TOKEN" \
  | jq '.rows[] | {tipo: .error_type, detalle: .error_detail}'

Respuesta:

[
  {
    "tipo": "ConnectionError",
    "detalle": "SAP B1 Service Layer no disponible — connection refused on port 50000"
  }
]

URL-encoding del run_id

Los run_id contienen + y :. Encódalos antes de usarlos en la URL: +%2B, :%3A. En Python: from urllib.parse import quote; quote(run_id, safe='')


Referencia rápida

Objetivo Endpoint
Listar integraciones GET /dags
Resumen de ejecuciones GET /dags/{dag_id}/stats?start_date=...&end_date=...
Buscar ejecuciones fallidas GET /dags/{dag_id}/runs?date_from=...&date_to=...&load_status=failed
Buscar por OT o clave GET /dags/{dag_id}/runs?date_from=...&event_keyword=OT-xxx
Errores de una fase GET /dags/{dag_id}/runs/{date}/{run_id}/phases/load/errors
Logs detallados GET /dags/{dag_id}/runs/{date}/{run_id}/phases/load/logs?level=ERROR
Datos de la fase GET /dags/{dag_id}/runs/{date}/{run_id}/phases/load/data

Próximos pasos