Core CRUD
Basic job creation, retrieval, update, deletion, and execution operations.
A job's type is a job-driver id (see Drivers & Templates). smart-job is the general-purpose type used by the "New Job" template; the others are mostly system jobs.
GET /api/jobs
Search and filter jobs with pagination.
Authentication: Required
Permissions: Returns jobs owned by or shared with the caller
Query Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
q | string | - | Full-text search (name, description) |
sort | string | name | Sort field (prefix - for descending) |
limit | integer | 30 | Results per page |
start | integer | 0 | Pagination offset |
Response:
A paginated HAL collection under _embedded["inf:job"]. The two Auto Cleanup jobs are permanent system jobs created automatically.
{
"_links": {
"self": {
"href": "https://informer.example.com/api/jobs?sort=name&limit=10&start=0"
}
},
"start": 0,
"count": 3,
"total": 3,
"_embedded": {
"inf:job": [
{
"_links": {
"self": {
"href": "https://informer.example.com/api/jobs/admin%3Aauto-snapshot-cleanup"
},
"inf:job-action-order": {
"href": "https://informer.example.com/api/jobs/admin%3Aauto-snapshot-cleanup/_job-action-order"
}
},
"naturalId": "admin:auto-snapshot-cleanup",
"permissions": {
"assignTags": true,
"write": true,
"edit": true,
"run": true,
"delete": false,
"changeOwner": true,
"rename": true
},
"id": "00000000-0000-4000-8000-000000000001",
"type": "dataset-snapshot-cleanup",
"tenant": "acme",
"slug": "auto-snapshot-cleanup",
"name": "Auto Snapshot Cleanup",
"description": "Permanent Job to automatically delete expired Snapshots in the system and also delete their data on your assigned Search Cluster. This Job cannot be deleted.",
"nextRunAt": "2026-01-15T16:20:00.000Z",
"lockedAt": null,
"enabled": true,
"data": {},
"interval": "59 23 */1 * *",
"startOn": "2026-01-15T16:20:00.000Z",
"intervalType": "Daily",
"endOn": null,
"notes": "This is a permanent Job for automatically deleting expired Snapshots in the system and also deleting their data on your assigned Search Cluster. This Job cannot be deleted, so it will always exist and will automatically be created if it does not. By default it will run daily at 11:59pm in the default timezone configured on the server. This Job only checks your assigned Search Cluster.",
"source": "i5",
"sourceId": null,
"timezone": "America/New_York",
"heartbeat": null,
"chatId": null,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"ownerId": "admin",
"folderId": null,
"datasetId": null,
"reportId": null,
"queryId": null,
"datasourceId": null,
"editingId": null
},
{
"_links": {
"self": {
"href": "https://informer.example.com/api/jobs/admin%3Aauto-system-cleanup"
},
"inf:job-action-order": {
"href": "https://informer.example.com/api/jobs/admin%3Aauto-system-cleanup/_job-action-order"
}
},
"naturalId": "admin:auto-system-cleanup",
"permissions": {
"assignTags": true,
"write": true,
"edit": true,
"run": true,
"delete": false,
"changeOwner": true,
"rename": true
},
"id": "00000000-0000-4000-8000-000000000002",
"type": "dataset-vacuum",
"tenant": "acme",
"slug": "auto-system-cleanup",
"name": "Auto System Cleanup",
"description": "Permanent Job to automatically delete indexed data on your assigned Search Cluster from orphaned and expired Datasets or Queries. This Job cannot be deleted.",
"nextRunAt": "2026-01-15T16:20:00.000Z",
"lockedAt": null,
"enabled": true,
"data": {},
"interval": "59 23 */1 * *",
"startOn": "2026-01-15T16:20:00.000Z",
"intervalType": "Daily",
"endOn": null,
"notes": "This is a permanent Job for automatically deleting indexed data on your assigned Search Cluster from orphaned and expired Datasets or Queries. This Job cannot be deleted, so it will always exist and will automatically be created if it does not. By default it will run daily at 11:59pm in the default timezone configured on the server. This Job only checks your assigned Search Cluster.",
"source": "i5",
"sourceId": null,
"timezone": "America/New_York",
"heartbeat": null,
"chatId": null,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"ownerId": "admin",
"folderId": null,
"datasetId": null,
"reportId": null,
"queryId": null,
"datasourceId": null,
"editingId": null
},
{
"_links": {
"self": {
"href": "https://informer.example.com/api/jobs/admin%3Adaily-sales-report"
},
"inf:job-action-order": {
"href": "https://informer.example.com/api/jobs/admin%3Adaily-sales-report/_job-action-order"
}
},
"naturalId": "admin:daily-sales-report",
"permissions": {
"assignTags": true,
"write": true,
"edit": true,
"run": true,
"delete": true,
"changeOwner": true,
"rename": true
},
"id": "00000000-0000-4000-8000-000000000003",
"type": "smart-job",
"tenant": "acme",
"slug": "daily-sales-report",
"name": "Daily Sales Report",
"description": null,
"nextRunAt": null,
"lockedAt": null,
"enabled": false,
"data": {},
"interval": null,
"startOn": "2026-01-15T16:20:00.000Z",
"intervalType": null,
"endOn": null,
"notes": null,
"source": null,
"sourceId": null,
"timezone": "America/New_York",
"heartbeat": null,
"chatId": null,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"ownerId": "admin",
"folderId": null,
"datasetId": null,
"reportId": null,
"queryId": null,
"datasourceId": null,
"editingId": null
}
]
}
}
GET /api/jobs-list
Get a lightweight flat list of readable jobs.
Authentication: Required
Response:
A flat array with each job's last-run status, schedule, tags, sharing, and permissions.
[
{
"tenant": "acme",
"id": "00000000-0000-4000-8000-000000000001",
"slug": "auto-snapshot-cleanup",
"name": "Auto Snapshot Cleanup",
"description": "Permanent Job to automatically delete expired Snapshots in the system and also delete their data on your assigned Search Cluster. This Job cannot be deleted.",
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"nextRunAt": "2026-01-15T16:20:00.000Z",
"folderId": null,
"lockedAt": null,
"enabled": true,
"type": "drivers:job.snapshot_cleanup.name",
"ownerId": "admin",
"interval": "59 23 */1 * *",
"intervalType": "Daily",
"timezone": "America/New_York",
"heartbeat": null,
"username": "admin",
"datasetId": null,
"datasourceId": null,
"queryId": null,
"reportId": null,
"lastJobHistoryId": null,
"success": null,
"duration": null,
"runBy": null,
"finishedAt": null,
"progress": null,
"warnings": null,
"jobsEnabled": true,
"favorite": false,
"naturalId": "admin:auto-snapshot-cleanup",
"permissions": {
"assignTags": true,
"write": true,
"edit": true,
"run": true,
"delete": false,
"changeOwner": true,
"rename": true
},
"ownerName": "acme Administrator",
"driver": "dataset-snapshot-cleanup",
"itemName": null,
"lastRunStatus": "never",
"nextRunStatus": "scheduled",
"tags": []
},
{
"tenant": "acme",
"id": "00000000-0000-4000-8000-000000000002",
"slug": "auto-system-cleanup",
"name": "Auto System Cleanup",
"description": "Permanent Job to automatically delete indexed data on your assigned Search Cluster from orphaned and expired Datasets or Queries. This Job cannot be deleted.",
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"nextRunAt": "2026-01-15T16:20:00.000Z",
"folderId": null,
"lockedAt": null,
"enabled": true,
"type": "drivers:job.dataset_vacuum.name",
"ownerId": "admin",
"interval": "59 23 */1 * *",
"intervalType": "Daily",
"timezone": "America/New_York",
"heartbeat": null,
"username": "admin",
"datasetId": null,
"datasourceId": null,
"queryId": null,
"reportId": null,
"lastJobHistoryId": null,
"success": null,
"duration": null,
"runBy": null,
"finishedAt": null,
"progress": null,
"warnings": null,
"jobsEnabled": true,
"favorite": false,
"naturalId": "admin:auto-system-cleanup",
"permissions": {
"assignTags": true,
"write": true,
"edit": true,
"run": true,
"delete": false,
"changeOwner": true,
"rename": true
},
"ownerName": "acme Administrator",
"driver": "dataset-vacuum",
"itemName": null,
"lastRunStatus": "never",
"nextRunStatus": "scheduled",
"tags": []
},
{
"tenant": "acme",
"id": "00000000-0000-4000-8000-000000000003",
"slug": "daily-sales-report",
"name": "Daily Sales Report",
"description": null,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"nextRunAt": null,
"folderId": null,
"lockedAt": null,
"enabled": false,
"type": "drivers:job.smart_job.name",
"ownerId": "admin",
"interval": null,
"intervalType": null,
"timezone": "America/New_York",
"heartbeat": null,
"username": "admin",
"datasetId": null,
"datasourceId": null,
"queryId": null,
"reportId": null,
"lastJobHistoryId": null,
"success": null,
"duration": null,
"runBy": null,
"finishedAt": null,
"progress": null,
"warnings": null,
"jobsEnabled": true,
"favorite": false,
"naturalId": "admin:daily-sales-report",
"permissions": {
"assignTags": true,
"write": true,
"edit": true,
"run": true,
"delete": true,
"changeOwner": true,
"rename": true
},
"ownerName": "acme Administrator",
"driver": "smart-job",
"itemName": null,
"lastRunStatus": "never",
"nextRunStatus": "disabled",
"tags": []
},
"… 2 more items (5 total) — omitted from docs"
]
GET /api/jobs/{id}
Get a single job.
Authentication: Required
Path Parameters:
| Parameter | Type | Description |
|---|---|---|
id | string | Job id or {ownerId}:{slug} natural id |
Response:
The job with HAL links to its history, actions, datasets, driver, owner, and favorite.
{
"_links": {
"self": {
"href": "https://informer.example.com/api/jobs/admin%3Adaily-sales-report"
},
"inf:job-action-order": {
"href": "https://informer.example.com/api/jobs/admin%3Adaily-sales-report/_job-action-order"
},
"inf:comments": {
"href": "https://informer.example.com/api/jobs/admin%3Adaily-sales-report/comments"
},
"inf:job-history": {
"href": "https://informer.example.com/api/jobs/admin%3Adaily-sales-report/history"
},
"inf:job-driver": {
"href": "https://informer.example.com/api/job-drivers/smart-job"
},
"inf:job-datasets": {
"href": "https://informer.example.com/api/jobs/admin%3Adaily-sales-report/datasets"
},
"inf:job-actions": {
"href": "https://informer.example.com/api/jobs/00000000-0000-4000-8000-000000000001/actions"
},
"inf:owner": {
"href": "https://informer.example.com/api/jobs/admin%3Adaily-sales-report/owner"
},
"inf:favorite": {
"href": "https://informer.example.com/api/jobs/admin%3Adaily-sales-report/favorite"
}
},
"naturalId": "admin:daily-sales-report",
"permissions": {
"assignTags": true,
"write": true,
"edit": true,
"run": true,
"delete": true,
"changeOwner": true,
"rename": true
},
"id": "00000000-0000-4000-8000-000000000001",
"type": "smart-job",
"tenant": "acme",
"slug": "daily-sales-report",
"name": "Daily Sales Report",
"description": null,
"nextRunAt": null,
"lockedAt": null,
"enabled": false,
"data": {},
"interval": null,
"startOn": "2026-01-15T16:20:00.000Z",
"intervalType": null,
"endOn": null,
"notes": null,
"source": null,
"sourceId": null,
"timezone": "America/New_York",
"heartbeat": null,
"chatId": null,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"ownerId": "admin",
"folderId": null,
"datasetId": null,
"reportId": null,
"queryId": null,
"datasourceId": null,
"editingId": null,
"dataset": null,
"datasource": null,
"query": null,
"report": null,
"editing": null
}
POST /api/jobs
Create a new job.
Authentication: Required
Permissions: Requires permission.jobs.create
Request Body:
| Field | Type | Required | Description |
|---|---|---|---|
name | string | No | Job name |
type | string | Yes | Job-driver id (e.g. smart-job) |
data | object | No | Driver-specific configuration |
enabled | boolean | No | Enable immediately |
datasets | object | No | Dataset associations (keys are aliases; values are a dataset/query id or { datasetId, snapshots }) |
Example:
{ "name": "Daily Sales Report", "type": "smart-job", "enabled": false }
Response:
Responds 201 Created with the job and a Location header.
{
"name": "Daily Sales Report",
"type": "smart-job",
"enabled": false
}
{
"_links": {
"self": {
"href": "https://informer.example.com/api/jobs/00000000-0000-4000-8000-000000000001"
},
"inf:job-action-order": {
"href": "https://informer.example.com/api/jobs/00000000-0000-4000-8000-000000000001/_job-action-order"
}
},
"naturalId": "admin:daily-sales-report",
"permissions": {
"assignTags": true,
"write": true,
"edit": true,
"run": true,
"delete": true,
"changeOwner": true,
"rename": true
},
"id": "00000000-0000-4000-8000-000000000001",
"type": "smart-job",
"tenant": "acme",
"slug": "daily-sales-report",
"name": "Daily Sales Report",
"description": null,
"nextRunAt": null,
"lockedAt": null,
"enabled": false,
"data": {},
"interval": null,
"startOn": "2026-01-15T16:20:00.000Z",
"intervalType": null,
"endOn": null,
"notes": null,
"source": null,
"sourceId": null,
"timezone": "America/New_York",
"heartbeat": null,
"chatId": null,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"ownerId": "admin",
"folderId": null,
"datasetId": null,
"reportId": null,
"queryId": null,
"datasourceId": null,
"editingId": null,
"actions": []
}
PUT /api/jobs/{id}
Update a job's configuration and schedule.
Authentication: Required
Permissions: Requires job:edit
Path Parameters:
| Parameter | Type | Description |
|---|---|---|
id | string | Job id or natural id |
Request Body:
| Field | Type | Description |
|---|---|---|
interval | string | Cron expression or simple interval |
intervalType | string | e.g. cron, Daily |
startOn / endOn | date | Schedule window |
enabled | boolean | Enable/disable |
name / description / notes | string | Metadata |
timezone | string | Timezone |
data | object | Driver-specific data |
folderId | string | Containing folder |
Example:
{ "interval": "0 8 * * *", "intervalType": "cron", "enabled": true }
Response:
Responds 200 with the updated job (the server recomputes nextRunAt).
{
"description": "Send the daily sales summary",
"interval": "0 8 * * *",
"intervalType": "cron"
}
{
"_links": {
"self": {
"href": "https://informer.example.com/api/jobs/admin%3Adaily-sales-report"
},
"inf:job-action-order": {
"href": "https://informer.example.com/api/jobs/admin%3Adaily-sales-report/_job-action-order"
}
},
"naturalId": "admin:daily-sales-report",
"permissions": {
"assignTags": true,
"write": true,
"edit": true,
"run": true,
"delete": true,
"changeOwner": true,
"rename": true
},
"id": "00000000-0000-4000-8000-000000000001",
"type": "smart-job",
"tenant": "acme",
"slug": "daily-sales-report",
"name": "Daily Sales Report",
"description": "Send the daily sales summary",
"nextRunAt": "2026-01-15T16:20:00.000Z",
"lockedAt": null,
"enabled": false,
"data": {},
"interval": "0 8 * * *",
"startOn": "2026-01-15T16:20:00.000Z",
"intervalType": "cron",
"endOn": null,
"notes": null,
"source": null,
"sourceId": null,
"timezone": "America/New_York",
"heartbeat": null,
"chatId": null,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"ownerId": "admin",
"folderId": null,
"datasetId": null,
"reportId": null,
"queryId": null,
"datasourceId": null,
"editingId": null,
"actions": []
}
DELETE /api/jobs/{id}
Delete a job.
Authentication: Required
Permissions: Requires job:delete (strict: owner only). Permanent system jobs cannot be deleted.
Path Parameters:
| Parameter | Type | Description |
|---|---|---|
id | string | Job id or natural id |
Response:
Responds 200 with an empty body.
POST /api/jobs/{id}
Run a job immediately (manual trigger).
Authentication: Required
Permissions: Requires job:run
Path Parameters:
| Parameter | Type | Description |
|---|---|---|
id | string | Job id or natural id |
Response:
Responds 200 with the run-history record: duration is a [start, stop] pair and progress lists each step.
{
"_links": {
"self": {
"href": "https://informer.example.com/api/jobs/admin%3Adaily-sales-report"
}
},
"id": "00000000-0000-4000-8000-000000000001",
"tenant": "acme",
"jobId": "00000000-0000-4000-8000-000000000002",
"data": {},
"ownerId": "admin",
"duration": [
"2026-01-15T16:20:00.000Z",
"2026-01-15T16:20:00.000Z"
],
"progress": [
{
"task": {
"key": "job:progress.invoking_job"
},
"result": {
"key": "job:status.running",
"success": null
}
}
],
"updatedAt": "2026-01-15T16:20:00.000Z",
"createdAt": "2026-01-15T16:20:00.000Z",
"warnings": false,
"success": true,
"_altid": null
}
This may take minutes or hours depending on the job. The socket timeout is disabled for runs.
POST /api/jobs/{id}/_edit
Create a draft copy of a job for safe editing.
Authentication: Required
Path Parameters:
| Parameter | Type | Description |
|---|---|---|
id | string | Job id or natural id |
Response:
Responds 200 with the draft (the caller's existing draft is returned if one exists). The draft links to inf:commit and carries editingId pointing at the original.
{
"_links": {
"self": {
"href": "https://informer.example.com/api/jobs/admin%3Adaily-sales-report/_edit"
},
"inf:job-action-order": {
"href": "https://informer.example.com/api/jobs/admin%3Adaily-sales-report/_edit/_job-action-order"
},
"inf:commit": {
"href": "https://informer.example.com/api/jobs/00000000-0000-4000-8000-000000000001/_commit"
}
},
"naturalId": "admin:daily-sales-report-1",
"permissions": {
"assignTags": true,
"write": true,
"edit": true,
"run": true,
"delete": true,
"changeOwner": true,
"rename": true
},
"id": "00000000-0000-4000-8000-000000000001",
"type": "smart-job",
"tenant": "acme",
"name": "Daily Sales Report",
"description": "Send the daily sales summary",
"nextRunAt": "2026-01-15T16:20:00.000Z",
"enabled": false,
"data": {},
"interval": "0 8 * * *",
"startOn": "2026-01-15T16:20:00.000Z",
"intervalType": "cron",
"endOn": null,
"notes": null,
"source": null,
"sourceId": null,
"timezone": "America/New_York",
"chatId": null,
"ownerId": "admin",
"folderId": null,
"datasetId": null,
"reportId": null,
"queryId": null,
"datasourceId": null,
"editingId": "00000000-0000-4000-8000-000000000002",
"updatedAt": "2026-01-15T16:20:00.000Z",
"createdAt": "2026-01-15T16:20:00.000Z",
"slug": "daily-sales-report-1",
"lockedAt": null,
"_altid": null,
"heartbeat": null
}
POST /api/jobs/{id}/_commit
Commit a draft back onto the original job. Call this with the draft's id.
Authentication: Required
Path Parameters:
| Parameter | Type | Description |
|---|---|---|
id | string | Draft job id |
Response:
Responds 200 with the committed job.
{
"_links": {
"self": {
"href": "https://informer.example.com/api/datasets/admin%3Adaily-sales-report"
},
"inf:job-action-order": {
"href": "https://informer.example.com/api/datasets/admin%3Adaily-sales-report/_job-action-order"
}
},
"naturalId": "admin:daily-sales-report",
"permissions": {
"assignTags": true,
"write": true,
"edit": true,
"run": true,
"delete": true,
"changeOwner": true,
"rename": true
},
"id": "00000000-0000-4000-8000-000000000002",
"type": "smart-job",
"tenant": "acme",
"slug": "daily-sales-report",
"name": "Daily Sales Report",
"description": "Send the daily sales summary",
"nextRunAt": "2026-01-15T16:20:00.000Z",
"lockedAt": null,
"enabled": false,
"data": {},
"interval": "0 8 * * *",
"startOn": "2026-01-15T16:20:00.000Z",
"intervalType": "cron",
"endOn": null,
"notes": null,
"source": null,
"sourceId": null,
"timezone": "America/New_York",
"heartbeat": null,
"chatId": null,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"ownerId": "admin",
"folderId": null,
"datasetId": null,
"reportId": null,
"queryId": null,
"datasourceId": null,
"editingId": null,
"datasets": [],
"actions": []
}
GET /api/jobs/{id}/owner
Get the current owner of a job.
Authentication: Required
Response:
The owning principal (user or team), with the user or team embedded.
{
"_links": {
"self": {
"href": "https://informer.example.com/api/jobs/admin%3Adaily-sales-report/owner"
}
},
"id": "admin",
"userId": "admin",
"teamId": null,
"tenant": "acme",
"_embedded": {
"inf:user": {
"_links": {
"self": {
"href": "https://informer.example.com/api/users/admin"
},
"inf:memberships": {
"href": "https://informer.example.com/api/users/admin/memberships"
},
"inf:avatar-upload": {
"href": "https://informer.example.com/api/users/admin/_upload/{uploadId}/avatar-upload",
"templated": true
},
"inf:password": {
"href": "https://informer.example.com/api/users/admin/password"
},
"inf:feed": {
"href": "https://informer.example.com/api/users/admin/feed"
},
"inf:viewed-feed": {
"href": "https://informer.example.com/api/users/admin/_markFeedViewed"
},
"inf:superuser": {
"href": "https://informer.example.com/api/users/admin/superuser"
}
},
"permissions": {
"changeDomain": false,
"changeProfile": true,
"changePassword": true,
"delete": false,
"edit": true,
"reassign": true,
"superuser": true,
"enable": true,
"changeTheme": true,
"lock": true,
"setGlobalPermissions": true,
"manageLogin": true
},
"domain": "local",
"username": "admin",
"displayName": "acme Administrator",
"familyName": "Administrator",
"givenName": "acme",
"middleName": null,
"email": null,
"data": null,
"superuser": true,
"timezone": "America/New_York",
"settings": {
"log": {
"log": false,
"info": false,
"warn": false,
"debug": false,
"error": true,
"remote": false
}
},
"enabled": true,
"source": null,
"sourceId": null,
"lastViewedFeed": null,
"tenant": "acme",
"globalPermissions": {
"ai": false,
"jobCreation": true,
"viewAllTeams": true,
"viewAllUsers": true,
"painlessScriptCreation": true
},
"userFields": {},
"locked": false,
"lockedAt": null,
"loginAttempts": 0,
"passwordSetAt": "2026-01-15T16:20:00.000Z",
"passwordExpiresAt": "2026-01-15T16:20:00.000Z",
"forgotPasswordRequestTime": null,
"mfa": null,
"mfaConfig": {},
"aiMessage": null,
"aiConsent": false,
"hasSharedDatasources": false,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"initials": "NA",
"colorIndex": 4,
"avatarColor": {
"background": "#81C784",
"text": "#1B5E20"
},
"managesPassword": true
}
}
}
PUT /api/jobs/{id}/owner
Change the owner of a job (and reassign its embedded datasets).
Authentication: Required
Permissions: Requires job:changeOwner
Request Body:
A principal lookup: { "userId": "<username>" } for a user or { "teamId": "<team-id>" } for a team.
{ "userId": "annie.larson" }
Response:
Responds 200 with the reassigned job and a Location header.
{
"userId": "admin"
}
{
"_links": {
"self": {
"href": "https://informer.example.com/api/jobs/00000000-0000-4000-8000-000000000001"
},
"inf:job-action-order": {
"href": "https://informer.example.com/api/jobs/00000000-0000-4000-8000-000000000001/_job-action-order"
}
},
"naturalId": "admin:daily-sales-report",
"permissions": {
"assignTags": true,
"write": true,
"edit": true,
"run": true,
"delete": true,
"changeOwner": true,
"rename": true
},
"id": "00000000-0000-4000-8000-000000000001",
"type": "smart-job",
"tenant": "acme",
"slug": "daily-sales-report",
"name": "Daily Sales Report",
"description": "Send the daily sales summary",
"nextRunAt": "2026-01-15T16:20:00.000Z",
"lockedAt": null,
"enabled": false,
"data": {},
"interval": "0 8 * * *",
"startOn": "2026-01-15T16:20:00.000Z",
"intervalType": "cron",
"endOn": null,
"notes": null,
"source": null,
"sourceId": null,
"timezone": "America/New_York",
"heartbeat": null,
"chatId": null,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"ownerId": "admin",
"folderId": null,
"datasetId": null,
"reportId": null,
"queryId": null,
"datasourceId": null,
"editingId": null,
"dataset": null,
"datasource": null,
"query": null,
"report": null,
"editing": null,
"datasets": [],
"actions": []
}
GET /api/jobs/{id}/favorite
Check whether the caller has favorited a job.
Authentication: Required
Response:
Returns the favorite record (200) when favorited, or 404 when it is not.
{
"_links": {
"self": {
"href": "https://informer.example.com/api/jobs/admin%3Adaily-sales-report/favorite"
}
},
"permissions": {},
"id": "00000000-0000-4000-8000-000000000001",
"principalId": "admin",
"reportId": null,
"datasetId": null,
"queryId": null,
"datasourceId": null,
"jobId": "00000000-0000-4000-8000-000000000002",
"assistantId": null,
"templateId": null,
"libraryId": null,
"appId": null,
"integrationId": null,
"toolkitId": null,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"tenant": "acme"
}
PUT /api/jobs/{id}/favorite
Add a job to the caller's favorites.
Authentication: Required
Response:
Responds 200 with the favorite record.
{
"_links": {
"self": {
"href": "https://informer.example.com/api/jobs/admin%3Adaily-sales-report/favorite"
}
},
"permissions": {},
"id": "00000000-0000-4000-8000-000000000001",
"tenant": "acme",
"jobId": "00000000-0000-4000-8000-000000000002",
"principalId": "admin",
"reportId": null,
"datasetId": null,
"queryId": null,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"datasourceId": null,
"templateId": null,
"assistantId": null,
"libraryId": null,
"appId": null,
"integrationId": null,
"toolkitId": null
}
DELETE /api/jobs/{id}/favorite
Remove a job from the caller's favorites.
Authentication: Required
Response:
Responds 200 with an empty body.