Skip to main content

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

Get the vacuum job (superuser)GET /api/datasets/_vacuum
Ensures and answers the permanent dataset-vacuum system Job that cleans up orphaned indices.
Response · 200
{
"_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
}
Captured from the API examples test suite; ids and timestamps are normalized.

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

Update the vacuum job (superuser)PUT /api/datasets/_vacuum
Payload keys are Job attributes (enabled, schedule, ...); the next run time is recomputed.
Request body
{
"enabled": true
}
Response · 200
{
"_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": []
}
Captured from the API examples test suite; ids and timestamps are normalized.

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:

FieldTypeRequiredDescription
indexstringYesLodash template producing the new index name from each Dataset row (e.g. <%= tenant %>.<%= slug %>.<%= Date.now() %>)
tenantarrayNoLimit to specific tenants
datasetstringNoLimit 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.