Saltar al contenido principal

API (externa)

Gredit expone una API REST bajo el namespace /api/v1/ para integración programática desde herramientas externas (CI/CD, scripts, servicios propios). Todos los endpoints de esta sección comparten el mismo esquema de autenticación JWT.

Para rutas usadas por la aplicación web, ver API interna. Para autenticación federada SAML, ver Endpoints SAML.

Autenticación

Las peticiones a /api/v1/* requieren un token JWT en el encabezado Authorization:

Authorization: Bearer <token>

El token se obtiene en Configuración → Acceso API. Su vigencia depende de la configuración de la Cuenta (intervalo y frecuencia). Un mismo token autoriza el acceso a todos los endpoints documentados en esta página (casos, ejecuciones, etc.).

Casos

Casos por guion

Obtiene los casos generados por un guion específico.

GET /api/v1/scripts/:id/issues
ParámetroUbicaciónTipoDescripción
idpathintegerID del guion

Ejemplo:

curl -H "Authorization: Bearer $TOKEN" \
https://gredit.example.com/api/v1/scripts/42/issues

Casos por estado

Obtiene un resumen de casos agrupados por estado.

GET /api/v1/scripts/issues_by_status

Ejemplo:

curl -H "Authorization: Bearer $TOKEN" \
https://gredit.example.com/api/v1/scripts/issues_by_status

Ejecuciones

La API de ejecución permite encolar corridas y ejecuciones de guiones. Las operaciones son asíncronas: la respuesta inicial devuelve un ID para consultar estado y salida mediante polling. Las ejecuciones originadas por esta API quedan registradas con source: api.

Discovery

Listar guiones

GET /api/v1/scripts
ParámetroUbicaciónTipoRequeridoDescripción
qquerystringNoFiltra por nombre (substring, case-insensitive). Ej: ?q=ANCAP

Respuesta: array de guiones con id, name, language, database y schedules (array con id y name de cada trabajo donde participa el guion).


Listar schedules

GET /api/v1/schedules
ParámetroUbicaciónTipoRequeridoDescripción
idqueryintegerNoFiltra un schedule específico. Ej: ?id=7

Respuesta: array de schedules con id, name, scripts (cada job con job_id, script_id, script_name, server_id) y rules (array con id y name).

Ejecutar guion (sin reglas)

Ejecuta un guion de forma aislada. No dispara reglas; el resultado se consulta como ejecución.

POST /api/v1/scripts/:id/executions

Body (opcional):

{
"server_id": 6
}
CampoRequeridoDescripción
server_idNoServidor donde ejecutar. Si se omite, usa el servidor default de la cuenta.

Respuesta (201):

{
"execution_id": 55,
"script_id": 42,
"script_name": "Cierre diario",
"status": "pending"
}

Ejecutar schedule (con reglas)

Ejecuta jobs de un schedule. Al finalizar el guion se disparan las reglas configuradas en ese trabajo.

POST /api/v1/schedules/:id/run

Body (opcional):

{
"script_ids": [42, 87],
"server_id": 3
}
CampoRequeridoDescripción
script_idsNoIDs de guiones a ejecutar. Si se omite, corre todos los jobs del schedule.
server_idNoServidor donde ejecutar. Si se omite, usa el del job.

Respuesta (201):

{
"runs": [
{ "run_id": 101, "script_id": 42, "script_name": "Cierre diario", "status": "pending" },
{ "run_id": 102, "script_id": 87, "script_name": "Envío reportes", "status": "pending" }
]
}

Polling

Consultar corrida (con reglas)

GET /api/v1/runs/:id

Respuesta: id, status, source, started_at, ended_at, stdout, stderr, script_id, schedule_id.


Consultar ejecución (sin reglas)

GET /api/v1/executions/:id

Respuesta: id, status, source, started_at, ended_at, stdout, stderr, script_id.

Flujo recomendado

Con reglas (Trabajos)

  1. Obtener token en Configuración → Acceso API
  2. Identificar el schedule:
    • Si conocés el trabajo: GET /api/v1/schedules?id=...
    • Si solo conocés el guion: GET /api/v1/scripts?q=... — cada guion incluye en schedules los trabajos donde participa (id, name)
  3. GET /api/v1/schedules?id=... para verificar guiones y reglas del schedule elegido
  4. POST /api/v1/schedules/:id/run (opcional: script_ids, server_id)
  5. GET /api/v1/runs/:id hasta que status indique finalización

Sin reglas (Guiones)

  1. Obtener token en Configuración → Acceso API
  2. GET /api/v1/scripts?q=... para obtener el id del guion
  3. POST /api/v1/scripts/:id/executions (opcional: server_id)
  4. GET /api/v1/executions/:id hasta que status indique finalización