Administrative Tools
Superuser endpoints around Dataset index hygiene. The index deletion routes live on the Mapping & Index page.
GET /api/datasets/_vacuum
Get the permanent dataset-vacuum system Job, creating it if it does not
exist yet. The job periodically deletes indexed data from orphaned and
expired Datasets on the tenant's search cluster.
Authentication: Required
Permission: Superuser
{
"_links": {
"self": {
"href": "https://informer.example.com/api/datasets/_vacuum"
},
"inf:job-action-order": {
"href": "https://informer.example.com/api/datasets/_vacuum/_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-000000000001",
"tenant": "acme",
"enabled": true,
"data": {},
"startOn": "2026-01-15T16:20:00.000Z",
"type": "dataset-vacuum",
"updatedAt": "2026-01-15T16:20:00.000Z",
"createdAt": "2026-01-15T16:20:00.000Z",
"slug": "auto-system-cleanup",
"ownerId": "admin",
"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.",
"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",
"intervalType": "Daily",
"interval": "59 23 */1 * *",
"timezone": "America/New_York",
"nextRunAt": "2026-01-15T16:20:00.000Z",
"lockedAt": null,
"endOn": null,
"sourceId": null,
"_altid": null,
"datasetId": null,
"reportId": null,
"queryId": null,
"datasourceId": null,
"editingId": null,
"heartbeat": null,
"folderId": null,
"chatId": null
}
PUT /api/datasets/_vacuum
Update the vacuum Job. Payload keys are Job attributes (enabled,
schedule, …); the job's next run time is recomputed from its schedule.
Authentication: Required
Permission: Superuser
{
"enabled": true
}
{
"_links": {
"self": {
"href": "https://informer.example.com/api/datasets/_vacuum"
},
"inf:job-action-order": {
"href": "https://informer.example.com/api/datasets/_vacuum/_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-000000000001",
"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,
"actions": []
}
GET /api/dataset-indices
Map every Dataset's natural id to its index name, grouped by tenant.
Authentication: Required
Permission: Superuser on the manager tenant (regular tenant superusers cannot call this)
Response: { "<tenant>": { "<ownerId:slug>": "<esIndex>", … }, … }
PUT /api/dataset-indices
Rewrite Dataset index names from a template (a cross-tenant migration tool, for example when moving search clusters).
Authentication: Required
Permission: Superuser on the manager tenant
Request Body:
| Field | Type | Required | Description |
|---|---|---|---|
index | string | Yes | Lodash template producing the new index name from each Dataset row (e.g. <%= tenant %>.<%= slug %>.<%= Date.now() %>) |
tenant | array | No | Limit to specific tenants |
dataset | string | No | Limit to one Dataset (id or natural id) |
Ad hoc query Datasets (embedded: true) are always skipped; their index
names carry load-bearing timestamp suffixes.
Response: the same tenant-grouped map as GET, for the updated Datasets.