Run History
Track job execution logs, success/failure status, duration, and progress details. A run record is created each time a job runs (manually or on schedule).
GET /api/jobs/{id}/history
List execution history for a job (all records, newest first).
Authentication: Required
Path Parameters:
| Parameter | Type | Description |
|---|---|---|
id | string | Job id or natural id |
Response:
A HAL collection. Each record's duration is a [start, stop] pair and progress is the step-by-step log.
List run historyGET /api/jobs/admin:daily-sales-report/history
A HAL collection of run records, newest first. duration is a [start, stop] pair; progress is the step-by-step log.
Response · 200
{
"_links": {
"self": {
"href": "https://informer.example.com/api/jobs/admin%3Adaily-sales-report/history"
}
},
"start": 0,
"count": 1,
"total": 1,
"_embedded": {
"inf:job-history": [
{
"_links": {
"self": {
"href": "https://informer.example.com/api/jobs/admin%3Adaily-sales-report/history/00000000-0000-4000-8000-000000000001"
}
},
"id": "00000000-0000-4000-8000-000000000001",
"jobId": "00000000-0000-4000-8000-000000000002",
"ownerId": "admin",
"data": {},
"duration": [
"2026-01-15T16:20:00.000Z",
"2026-01-15T16:20:00.000Z"
],
"success": true,
"warnings": false,
"progress": [
{
"task": {
"key": "job:progress.invoking_job"
},
"result": {
"key": "job:status.running",
"success": null
}
}
],
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"tenant": "acme"
}
]
}
}
GET /api/jobs/{id}/history/{historyId}
Get a single run record.
Authentication: Required
Path Parameters:
| Parameter | Type | Description |
|---|---|---|
id | string | Job id or natural id |
historyId | string (UUID) | History record id |
Response:
Get a run recordGET /api/jobs/admin:daily-sales-report/history/00000000-0000-4000-8000-000000000001
Each progress entry has a task (what was attempted) and a result (outcome).
Response · 200
{
"_links": {
"self": {
"href": "https://informer.example.com/api/jobs/admin%3Adaily-sales-report/history/00000000-0000-4000-8000-000000000001"
}
},
"id": "00000000-0000-4000-8000-000000000001",
"jobId": "00000000-0000-4000-8000-000000000002",
"ownerId": "admin",
"data": {},
"duration": [
"2026-01-15T16:20:00.000Z",
"2026-01-15T16:20:00.000Z"
],
"success": true,
"warnings": false,
"progress": [
{
"task": {
"key": "job:progress.invoking_job"
},
"result": {
"key": "job:status.running",
"success": null
}
}
],
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"tenant": "acme"
}
Progress structure
The progress array is a step-by-step log. Each entry has a task (what was attempted) and a result (the outcome, with a success flag).
DELETE /api/jobs/{id}/history/{historyId}
Delete a single run record.
Authentication: Required
Permissions: Requires job:edit
Path Parameters:
| Parameter | Type | Description |
|---|---|---|
id | string | Job id or natural id |
historyId | string (UUID) | History record id |
Response:
Responds 200 with an empty body.
Delete a run recordDELETE /api/jobs/admin:daily-sales-report/history/00000000-0000-4000-8000-000000000001
Responds 200 with an empty body.
Response · 200 · no body