Skip to main content

Core CRUD

Basic report creation, retrieval, update, and deletion operations.

GET /api/reports

Search and filter reports with pagination.

Authentication: Required

Query Parameters:

ParameterTypeDefaultDescription
qstring-Full-text search query (searches name, slug, description)
sortstring-Sort field (prefix with - for descending)
limitinteger20Results per page
startinteger0Pagination offset

Response:

The response is a paginated HAL collection. Report items are returned under _embedded["inf:report"]. The search returns a limited set of attributes per report.

Search and page through reportsGET /api/reports?q=sales&limit=10
A paginated HAL collection. q matches slug, name, and description. Embedded items carry a summary projection; fetch a report by id for full detail.
Response · 200
{
"_links": {
"self": {
"href": "https://informer.example.com/api/reports?limit=10&start=0&q=sales%2A"
}
},
"start": 0,
"count": 1,
"total": 1,
"aggs": {
"total": 1
},
"permissions": {
"create": true
},
"_embedded": {
"inf:report": [
{
"_links": {
"self": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview"
},
"inf:owner": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/owner"
},
"inf:draft": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/draft"
},
"inf:user-settings": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/settings"
},
"inf:comments": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/comments{?sort,limit}",
"templated": true
},
"inf:report-shares": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/shares"
},
"inf:report-datasets": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/dataset-refs"
},
"inf:report-template": {
"href": "https://informer.example.com/api/reports/template"
},
"inf:report-templates": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/templates"
},
"inf:input-templates": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/input-templates"
},
"inf:visual-templates": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/visual-templates"
},
"inf:input-filter-templates": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/input-filter-templates"
},
"inf:report-tags": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/tags"
},
"inf:favorite": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/favorite"
},
"inf:report-tag": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/tags/{tagId}",
"templated": true
},
"inf:export-bundle": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/_export"
},
"view": {
"href": "https://informer.example.com/v/report.html?id=00000000-0000-4000-8000-000000000001"
},
"inf:cloud-publish": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/_cloud-publish"
},
"inf:cloud-unpublish": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/_cloud-unpublish"
},
"inf:copy": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/_copy"
},
"edit": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/_edit"
},
"inf:report-share": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/shares/{principalId}",
"templated": true
},
"inf:report-run": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/_run{?progress}",
"templated": true
}
},
"naturalId": "admin:sales-overview",
"permissions": {
"assignTags": true,
"changeOwner": true,
"cloudPublish": false,
"copy": true,
"dataset": true,
"delete": true,
"edit": true,
"filter": true,
"license": true,
"rename": true,
"run": true,
"share": true,
"variable": true,
"visual": true,
"write": true
},
"id": "00000000-0000-4000-8000-000000000001",
"type": "dashboard",
"name": "Sales Overview",
"ownerId": "admin",
"slug": "sales-overview",
"description": "Quarterly sales dashboard (Q2)",
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"_embedded": {
"inf:report-type": {
"_links": {
"self": {
"href": "https://informer.example.com/api/report-types/dashboard"
}
},
"id": "dashboard",
"name": "common:dashboard",
"description": "reports:dashboard.description",
"image": "/assets/reports/images/dashboard.svg",
"color": "teal",
"mappingRequired": false,
"viewComponent": "dashboardView",
"editComponent": "dashboardEdit",
"previewComponent": "dashboardPreview",
"openInNewTab": false,
"datasets": "none",
"hasApiWhitelist": false
}
}
}
]
}
}
Captured from the API examples test suite; ids and timestamps are normalized.

Key Fields: Each embedded report includes only: id, type, name, ownerId, slug, description, createdAt, updatedAt. Use GET /api/reports/{id} for full details.

Use Case:

List all reports the authenticated user can access, with search and pagination support.


GET /api/reports-list

Get a complete list of readable reports with tags, sharing info, and related datasets/datasources.

Authentication: Required

Response:

Returns a plain JSON array of reports (plus ad hoc queries and templates) with additional metadata. Each item is enriched with dataset/datasource names, tags, sharing info, and permissions.

List all reportsGET /api/reports-list
A flat array (not paged) of reports the caller can read.
Response · 200
[
{
"principalId": "admin",
"username": "admin",
"displayName": "acme Administrator",
"teamId": null,
"teamName": null,
"datasource": {
"shares": [
{
"accessLevel": 0
}
],
"ownerId": null,
"type": null,
"name": null,
"id": null
},
"driver": "report",
"tenant": "acme",
"id": "00000000-0000-4000-8000-000000000001",
"slug": "sales-overview",
"name": "Sales Overview",
"description": "Quarterly sales dashboard (Q2)",
"datasourceId": null,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"ownerId": "admin",
"type": "Dashboard",
"folderId": null,
"shared": false,
"favorite": false,
"naturalId": "admin:sales-overview",
"ownerName": "acme Administrator",
"listId": "report:00000000-0000-4000-8000-000000000001",
"datasources": [
"Northwind"
],
"rels": {
"self": "inf:report",
"owner": "inf:report-owner",
"share": "inf:report-share",
"tag": "inf:report-tag"
},
"permissions": {
"assignTags": true,
"changeOwner": true,
"cloudPublish": false,
"copy": true,
"dataset": true,
"delete": true,
"edit": true,
"filter": true,
"license": true,
"rename": true,
"run": true,
"share": true,
"variable": true,
"visual": true,
"write": true
},
"originalType": "dashboard",
"image": "/assets/reports/images/dashboard.svg",
"datasets": [
"Northwind Orders"
],
"tags": []
}
]
Captured from the API examples test suite; ids and timestamps are normalized.

Key Details:

  • This endpoint returns reports, ad hoc queries, and templates combined (distinguished by driver field)
  • type is a localized display name (e.g., "App", "Ad hoc Query")
  • originalType preserves the raw driver type
  • datasets and datasources are arrays of display names (not IDs)
  • tags are arrays of tag UUIDs
  • sharing reflects the current user's datasource access level
  • rels provides HAL relation names for client-side link construction

Use Case:

Get enriched report list for UI display with all related metadata in a single request.


POST /api/reports

Create a new report.

Authentication: Required

Permissions: reports:create

Request Body:

{
"type": "standard",
"name": "Q1 Sales Report",
"slug": "q1-sales-report",
"ownerId": "team:analytics",
"description": "First quarter sales analysis",
"templateId": "template-id",
"queryId": "query-id",
"defn": {
"visuals": [],
"layout": {}
},
"datasets": {
"orders": {
"datasetId": "orders-2024",
"alias": "orders",
"label": "Orders Dataset",
"filter": {},
"chips": [],
"snapshots": {
"includeLatest": true,
"type": "n",
"n": 5,
"snapshotDatasets": ["snapshot-id-1", "snapshot-id-2"]
}
}
}
}

Required Fields:

FieldTypeDescription
typestringReport driver type (must be valid and eligible)

Optional Fields:

FieldTypeDescription
namestringReport name
slugstringURL-safe identifier
descriptionstringReport description
ownerIdstringOwner (defaults to current user)
templateIdstringTemplate to apply
magicReportTemplateIdstringApp template ID
queryIdstringAssociated query ID
datasetsobjectDataset references (keys are aliases)

Response:

Responds 200 with the created report and a Location header pointing at it.

Create a reportPOST /api/reports
type must be a registered report type (see GET /api/report-types). datasets keys are dataset ids; each value binds the dataset to the report with an alias and label. Responds 200 with a Location header.
Request body
{
"name": "Sales Overview",
"type": "dashboard",
"datasets": {
"00000000-0000-4000-8000-000000000001": {
"datasetId": "00000000-0000-4000-8000-000000000001",
"alias": "orders",
"label": "Orders"
}
}
}
Response · 200
{
"_links": {
"self": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview"
},
"inf:owner": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/owner"
},
"inf:draft": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/draft"
},
"inf:user-settings": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/settings"
},
"inf:comments": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/comments{?sort,limit}",
"templated": true
},
"inf:report-shares": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/shares"
},
"inf:report-datasets": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/dataset-refs"
},
"inf:report-template": {
"href": "https://informer.example.com/api/reports/template"
},
"inf:report-templates": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/templates"
},
"inf:input-templates": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/input-templates"
},
"inf:visual-templates": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/visual-templates"
},
"inf:input-filter-templates": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/input-filter-templates"
},
"inf:report-tags": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/tags"
},
"inf:favorite": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/favorite"
},
"inf:report-tag": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/tags/{tagId}",
"templated": true
},
"inf:export-bundle": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/_export"
},
"view": {
"href": "https://informer.example.com/v/report.html?id=00000000-0000-4000-8000-000000000002"
},
"inf:cloud-publish": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/_cloud-publish"
},
"inf:cloud-unpublish": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/_cloud-unpublish"
},
"inf:copy": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/_copy"
},
"edit": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/_edit"
},
"inf:report-share": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/shares/{principalId}",
"templated": true
},
"inf:report-run": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/_run{?progress}",
"templated": true
}
},
"naturalId": "admin:sales-overview",
"permissions": {
"assignTags": true,
"changeOwner": true,
"cloudPublish": false,
"copy": true,
"dataset": true,
"delete": true,
"edit": true,
"filter": true,
"license": true,
"rename": true,
"run": true,
"share": true,
"variable": true,
"visual": true,
"write": true
},
"id": "00000000-0000-4000-8000-000000000002",
"type": "dashboard",
"name": "Sales Overview",
"tenant": "acme",
"ownerId": "admin",
"slug": "sales-overview",
"description": null,
"defn": {
"layout": {},
"visuals": [],
"layoutOptions": {
"showVisualOptions": true
}
},
"settings": {
"overallFilter": {}
},
"source": null,
"sourceId": null,
"shared": false,
"defnUpdatedAt": null,
"enableFilter": false,
"libraryId": null,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"editingId": null,
"datasourceId": null,
"queryId": null,
"templateId": null,
"folderId": null,
"datasets": [
{
"id": "00000000-0000-4000-8000-000000000003",
"filter": {},
"chips": [],
"alias": "orders",
"label": "Orders",
"tenant": "acme",
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"reportId": "00000000-0000-4000-8000-000000000002",
"datasetId": "00000000-0000-4000-8000-000000000001",
"snapshots": null
}
],
"_embedded": {
"inf:report-type": {
"_links": {
"self": {
"href": "https://informer.example.com/api/report-types/dashboard"
}
},
"id": "dashboard",
"name": "common:dashboard",
"description": "reports:dashboard.description",
"image": "/assets/reports/images/dashboard.svg",
"color": "teal",
"mappingRequired": false,
"viewComponent": "dashboardView",
"editComponent": "dashboardEdit",
"previewComponent": "dashboardPreview",
"openInNewTab": false,
"datasets": "none",
"hasApiWhitelist": false
}
}
}
Captured from the API examples test suite; ids and timestamps are normalized.

GET /api/reports/{id}

Get a specific report by ID.

Authentication: Required

Path Parameters:

ParameterTypeDescription
idstringReport ID (natural ID format: ownerId:slug or UUID)

Response:

Get a single reportGET /api/reports/admin:sales-overview
Full report including its defn, bound datasets (keyed by alias), tags, and embedded datasource/query/template links.
Response · 200
{
"_links": {
"self": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview"
},
"inf:owner": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/owner"
},
"inf:draft": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/draft"
},
"inf:user-settings": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/settings"
},
"inf:comments": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/comments{?sort,limit}",
"templated": true
},
"inf:report-shares": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/shares"
},
"inf:report-datasets": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/dataset-refs"
},
"inf:report-template": {
"href": "https://informer.example.com/api/reports/template"
},
"inf:report-templates": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/templates"
},
"inf:input-templates": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/input-templates"
},
"inf:visual-templates": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/visual-templates"
},
"inf:input-filter-templates": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/input-filter-templates"
},
"inf:report-tags": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/tags"
},
"inf:favorite": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/favorite"
},
"inf:report-tag": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/tags/{tagId}",
"templated": true
},
"inf:export-bundle": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/_export"
},
"view": {
"href": "https://informer.example.com/v/report.html?id=00000000-0000-4000-8000-000000000001"
},
"inf:cloud-publish": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/_cloud-publish"
},
"inf:cloud-unpublish": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/_cloud-unpublish"
},
"inf:copy": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/_copy"
},
"edit": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/_edit"
},
"inf:report-share": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/shares/{principalId}",
"templated": true
},
"inf:report-run": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/_run{?progress}",
"templated": true
}
},
"naturalId": "admin:sales-overview",
"permissions": {
"assignTags": true,
"changeOwner": true,
"cloudPublish": false,
"copy": true,
"dataset": true,
"delete": true,
"edit": true,
"filter": true,
"license": true,
"rename": true,
"run": true,
"share": true,
"variable": true,
"visual": true,
"write": true
},
"id": "00000000-0000-4000-8000-000000000001",
"type": "dashboard",
"name": "Sales Overview",
"tenant": "acme",
"ownerId": "admin",
"slug": "sales-overview",
"description": null,
"defn": {
"layout": {},
"visuals": [],
"layoutOptions": {
"showVisualOptions": true
}
},
"settings": {
"overallFilter": {}
},
"source": null,
"sourceId": null,
"shared": false,
"defnUpdatedAt": null,
"enableFilter": false,
"libraryId": null,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"editingId": null,
"datasourceId": null,
"queryId": null,
"templateId": null,
"folderId": null,
"datasource": null,
"query": null,
"template": null,
"datasets": {
"orders": {
"id": "00000000-0000-4000-8000-000000000002",
"filter": {},
"chips": [],
"alias": "orders",
"label": "Orders",
"tenant": "acme",
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"reportId": "00000000-0000-4000-8000-000000000001",
"datasetId": "00000000-0000-4000-8000-000000000003",
"snapshots": null
}
},
"tags": [],
"_embedded": {
"inf:report-type": {
"_links": {
"self": {
"href": "https://informer.example.com/api/report-types/dashboard"
}
},
"id": "dashboard",
"name": "common:dashboard",
"description": "reports:dashboard.description",
"image": "/assets/reports/images/dashboard.svg",
"color": "teal",
"mappingRequired": false,
"viewComponent": "dashboardView",
"editComponent": "dashboardEdit",
"previewComponent": "dashboardPreview",
"openInNewTab": false,
"datasets": "none",
"hasApiWhitelist": false
}
}
}
Captured from the API examples test suite; ids and timestamps are normalized.

HAL Links:

The response includes HAL links for related resources:

  • inf:owner - Owner management
  • inf:draft - Draft version
  • inf:report-datasets - Dataset references
  • inf:report-run - Execute report
  • inf:comments - Report comments
  • inf:report-shares - Sharing configuration
  • edit - Create draft for editing (only if not already a draft)
  • inf:copy - Copy report
  • inf:cloud-publish - Publish to cloud
  • view - View report in UI

PUT /api/reports/{id}

Update an existing report.

Authentication: Required

Permissions: report:write

Path Parameters:

ParameterTypeDescription
idstringReport ID

Request Body:

{
"name": "Updated Sales Dashboard",
"description": "Updated description",
"defn": {
"visuals": [
{
"id": "visual-1",
"type": "chart",
"name": "Revenue Trend",
"component": {},
"index": 0
}
]
},
"datasets": {
"orders": {
"datasetId": "orders-2024",
"alias": "orders",
"label": "Orders Dataset",
"filter": {}
}
}
}

Response:

Returns the updated report (same structure as GET).

Update a reportPUT /api/reports/admin:sales-overview
Full replace of editable fields. New dataset references in defn are reconciled into the report’s dataset bindings.
Request body
{
"name": "Sales Overview",
"description": "Quarterly sales dashboard",
"defn": {}
}
Response · 200
{
"_links": {
"self": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview"
},
"inf:owner": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/owner"
},
"inf:draft": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/draft"
},
"inf:user-settings": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/settings"
},
"inf:comments": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/comments{?sort,limit}",
"templated": true
},
"inf:report-shares": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/shares"
},
"inf:report-datasets": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/dataset-refs"
},
"inf:report-template": {
"href": "https://informer.example.com/api/reports/template"
},
"inf:report-templates": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/templates"
},
"inf:input-templates": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/input-templates"
},
"inf:visual-templates": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/visual-templates"
},
"inf:input-filter-templates": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/input-filter-templates"
},
"inf:report-tags": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/tags"
},
"inf:favorite": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/favorite"
},
"inf:report-tag": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/tags/{tagId}",
"templated": true
},
"inf:export-bundle": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/_export"
},
"view": {
"href": "https://informer.example.com/v/report.html?id=00000000-0000-4000-8000-000000000001"
},
"inf:cloud-publish": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/_cloud-publish"
},
"inf:cloud-unpublish": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/_cloud-unpublish"
},
"inf:copy": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/_copy"
},
"edit": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/_edit"
},
"inf:report-share": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/shares/{principalId}",
"templated": true
},
"inf:report-run": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/_run{?progress}",
"templated": true
}
},
"naturalId": "admin:sales-overview",
"permissions": {
"assignTags": true,
"changeOwner": true,
"cloudPublish": false,
"copy": true,
"dataset": true,
"delete": true,
"edit": true,
"filter": true,
"license": true,
"rename": true,
"run": true,
"share": true,
"variable": true,
"visual": true,
"write": true
},
"id": "00000000-0000-4000-8000-000000000001",
"type": "dashboard",
"name": "Sales Overview",
"tenant": "acme",
"ownerId": "admin",
"slug": "sales-overview",
"description": "Quarterly sales dashboard",
"defn": {
"layout": {},
"visuals": [],
"layoutOptions": {
"showVisualOptions": true
}
},
"settings": {
"overallFilter": {}
},
"source": null,
"sourceId": null,
"shared": false,
"defnUpdatedAt": null,
"enableFilter": false,
"libraryId": null,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"editingId": null,
"datasourceId": null,
"queryId": null,
"templateId": null,
"folderId": null,
"datasource": null,
"datasets": [
{
"id": "00000000-0000-4000-8000-000000000002",
"filter": {},
"chips": [],
"alias": "orders",
"label": "Orders",
"tenant": "acme",
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"reportId": "00000000-0000-4000-8000-000000000001",
"datasetId": "00000000-0000-4000-8000-000000000003",
"snapshots": null
}
],
"template": null,
"templates": [],
"_embedded": {
"inf:report-type": {
"_links": {
"self": {
"href": "https://informer.example.com/api/report-types/dashboard"
}
},
"id": "dashboard",
"name": "common:dashboard",
"description": "reports:dashboard.description",
"image": "/assets/reports/images/dashboard.svg",
"color": "teal",
"mappingRequired": false,
"viewComponent": "dashboardView",
"editComponent": "dashboardEdit",
"previewComponent": "dashboardPreview",
"openInNewTab": false,
"datasets": "none",
"hasApiWhitelist": false
}
}
}
Captured from the API examples test suite; ids and timestamps are normalized.

Notes:

  • When updating defn.visuals, only specific fields are preserved: id, component, name, defaultName, description, defaultDescription, type, contextId, and index
  • The index field is automatically set based on array position
  • New dataset references found in the definition are automatically created
  • Existing dataset configurations in the datasets object are upserted

PATCH /api/reports/{id}

Apply JSON Patch operations to a report (use sparingly).

Authentication: Required

Permissions: report:write

Path Parameters:

ParameterTypeDescription
idstringReport ID

Request Body:

[
{ "op": "replace", "path": "/name", "value": "New Report Name" },
{ "op": "add", "path": "/defn/visuals/0", "value": {} }
]

Response:

Returns the patched report.

Patch a reportPATCH /api/reports/admin:sales-overview
A JSON Patch document for shallow field edits. Avoid for nested structures (use PUT). remove operations are converted to setting the value to null.
Request body
[
{
"op": "replace",
"path": "/description",
"value": "Quarterly sales dashboard (Q2)"
}
]
Response · 200
{
"_links": {
"self": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview"
},
"inf:owner": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/owner"
},
"inf:draft": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/draft"
},
"inf:user-settings": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/settings"
},
"inf:comments": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/comments{?sort,limit}",
"templated": true
},
"inf:report-shares": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/shares"
},
"inf:report-datasets": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/dataset-refs"
},
"inf:report-template": {
"href": "https://informer.example.com/api/reports/template"
},
"inf:report-templates": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/templates"
},
"inf:input-templates": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/input-templates"
},
"inf:visual-templates": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/visual-templates"
},
"inf:input-filter-templates": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/input-filter-templates"
},
"inf:report-tags": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/tags"
},
"inf:favorite": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/favorite"
},
"inf:report-tag": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/tags/{tagId}",
"templated": true
},
"inf:export-bundle": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/_export"
},
"view": {
"href": "https://informer.example.com/v/report.html?id=00000000-0000-4000-8000-000000000001"
},
"inf:cloud-publish": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/_cloud-publish"
},
"inf:cloud-unpublish": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/_cloud-unpublish"
},
"inf:copy": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/_copy"
},
"edit": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/_edit"
},
"inf:report-share": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/shares/{principalId}",
"templated": true
},
"inf:report-run": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/_run{?progress}",
"templated": true
}
},
"naturalId": "admin:sales-overview",
"permissions": {
"assignTags": true,
"changeOwner": true,
"cloudPublish": false,
"copy": true,
"dataset": true,
"delete": true,
"edit": true,
"filter": true,
"license": true,
"rename": true,
"run": true,
"share": true,
"variable": true,
"visual": true,
"write": true
},
"id": "00000000-0000-4000-8000-000000000001",
"type": "dashboard",
"name": "Sales Overview",
"tenant": "acme",
"ownerId": "admin",
"slug": "sales-overview",
"description": "Quarterly sales dashboard (Q2)",
"defn": {
"layout": {},
"visuals": [],
"layoutOptions": {
"showVisualOptions": true
}
},
"settings": {
"overallFilter": {}
},
"source": null,
"sourceId": null,
"shared": false,
"defnUpdatedAt": null,
"enableFilter": false,
"libraryId": null,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"editingId": null,
"datasourceId": null,
"queryId": null,
"templateId": null,
"folderId": null,
"datasource": null,
"datasets": [
{
"id": "00000000-0000-4000-8000-000000000002",
"filter": {},
"chips": [],
"alias": "orders",
"label": "Orders",
"tenant": "acme",
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"reportId": "00000000-0000-4000-8000-000000000001",
"datasetId": "00000000-0000-4000-8000-000000000003",
"snapshots": null
}
],
"template": null,
"templates": [],
"_embedded": {
"inf:report-type": {
"_links": {
"self": {
"href": "https://informer.example.com/api/report-types/dashboard"
}
},
"id": "dashboard",
"name": "common:dashboard",
"description": "reports:dashboard.description",
"image": "/assets/reports/images/dashboard.svg",
"color": "teal",
"mappingRequired": false,
"viewComponent": "dashboardView",
"editComponent": "dashboardEdit",
"previewComponent": "dashboardPreview",
"openInNewTab": false,
"datasets": "none",
"hasApiWhitelist": false
}
}
}
Captured from the API examples test suite; ids and timestamps are normalized.

Warning:

This route should be avoided for nested structures. Use PUT instead. JSON Patch remove operations are converted to add with null value.


DELETE /api/reports/{id}

Delete a report.

Authentication: Required

Permissions: report:write

Path Parameters:

ParameterTypeDescription
idstringReport ID

Response:

Responds 200 on success. Removes the report and its dataset bindings.

Delete a reportDELETE /api/reports/admin:temp-report
Permanently removes the report and its dataset bindings.
Response · 200 · no body
Captured from the API examples test suite; ids and timestamps are normalized.

GET /api/reports/{id}/owner

Get the owner of a report.

Authentication: Required

Path Parameters:

ParameterTypeDescription
idstringReport ID

Response:

The owning principal (a user or a team), with the user or team embedded.

Get a report’s ownerGET /api/reports/admin:sales-overview/owner
The owning principal (a user or a team), with the user or team embedded.
Response · 200
{
"_links": {
"self": {
"href": "https://informer.example.com/api/reports/admin%3Asales-overview/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
}
}
}
Captured from the API examples test suite; ids and timestamps are normalized.

PUT /api/reports/{id}/owner

Change the owner of a report.

Authentication: Required

Permissions: report:changeOwner

Path Parameters:

ParameterTypeDescription
idstringReport ID

Request Body:

A principal lookup. Use { "userId": "<username>" } to assign to a user, or { "teamId": "<team-id>" } to assign to a team.

{
"userId": "annie.larson"
}

Response:

Responds 200 with the updated report and a Location header.

Reassign a report’s ownerPUT /api/reports/admin:sales-overview/owner
Body is a principal lookup: { userId } to assign to a user, or { teamId } to assign to a team. Responds 200 with a Location header.
Request body
{
"userId": "annie.larson"
}
Response · 200
{
"_links": {
"self": {
"href": "https://informer.example.com/api/reports/00000000-0000-4000-8000-000000000001"
},
"inf:owner": {
"href": "https://informer.example.com/api/reports/annie.larson%3Asales-overview/owner"
},
"inf:draft": {
"href": "https://informer.example.com/api/reports/annie.larson%3Asales-overview/draft"
},
"inf:user-settings": {
"href": "https://informer.example.com/api/reports/annie.larson%3Asales-overview/settings"
},
"inf:comments": {
"href": "https://informer.example.com/api/reports/annie.larson%3Asales-overview/comments{?sort,limit}",
"templated": true
},
"inf:report-shares": {
"href": "https://informer.example.com/api/reports/annie.larson%3Asales-overview/shares"
},
"inf:report-datasets": {
"href": "https://informer.example.com/api/reports/annie.larson%3Asales-overview/dataset-refs"
},
"inf:report-template": {
"href": "https://informer.example.com/api/reports/template"
},
"inf:report-templates": {
"href": "https://informer.example.com/api/reports/annie.larson%3Asales-overview/templates"
},
"inf:input-templates": {
"href": "https://informer.example.com/api/reports/annie.larson%3Asales-overview/input-templates"
},
"inf:visual-templates": {
"href": "https://informer.example.com/api/reports/annie.larson%3Asales-overview/visual-templates"
},
"inf:input-filter-templates": {
"href": "https://informer.example.com/api/reports/annie.larson%3Asales-overview/input-filter-templates"
},
"inf:report-tags": {
"href": "https://informer.example.com/api/reports/00000000-0000-4000-8000-000000000001/tags"
},
"inf:favorite": {
"href": "https://informer.example.com/api/reports/00000000-0000-4000-8000-000000000001/favorite"
},
"inf:report-tag": {
"href": "https://informer.example.com/api/reports/00000000-0000-4000-8000-000000000001/tags/{tagId}",
"templated": true
},
"inf:export-bundle": {
"href": "https://informer.example.com/api/reports/00000000-0000-4000-8000-000000000001/_export"
},
"view": {
"href": "https://informer.example.com/v/report.html?id=00000000-0000-4000-8000-000000000001"
},
"inf:cloud-publish": {
"href": "https://informer.example.com/api/reports/00000000-0000-4000-8000-000000000001/_cloud-publish"
},
"inf:cloud-unpublish": {
"href": "https://informer.example.com/api/reports/00000000-0000-4000-8000-000000000001/_cloud-unpublish"
},
"inf:copy": {
"href": "https://informer.example.com/api/reports/00000000-0000-4000-8000-000000000001/_copy"
},
"edit": {
"href": "https://informer.example.com/api/reports/annie.larson%3Asales-overview/_edit"
},
"inf:report-share": {
"href": "https://informer.example.com/api/reports/00000000-0000-4000-8000-000000000001/shares/{principalId}",
"templated": true
},
"inf:report-run": {
"href": "https://informer.example.com/api/reports/annie.larson%3Asales-overview/_run{?progress}",
"templated": true
}
},
"naturalId": "annie.larson:sales-overview",
"permissions": {
"assignTags": true,
"changeOwner": true,
"cloudPublish": false,
"copy": true,
"dataset": true,
"delete": true,
"edit": true,
"filter": true,
"license": true,
"rename": true,
"run": true,
"share": true,
"variable": true,
"visual": true,
"write": true
},
"id": "00000000-0000-4000-8000-000000000001",
"type": "dashboard",
"name": "Sales Overview",
"tenant": "acme",
"ownerId": "annie.larson",
"slug": "sales-overview",
"description": "Quarterly sales dashboard (Q2)",
"defn": {
"layout": {},
"visuals": [],
"layoutOptions": {
"showVisualOptions": true
}
},
"settings": {
"overallFilter": {}
},
"source": null,
"sourceId": null,
"shared": false,
"defnUpdatedAt": null,
"enableFilter": false,
"libraryId": null,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"editingId": null,
"datasourceId": null,
"queryId": null,
"templateId": null,
"folderId": null,
"datasource": null,
"datasets": [
{
"id": "00000000-0000-4000-8000-000000000002",
"filter": {},
"chips": [],
"alias": "orders",
"label": "Orders",
"tenant": "acme",
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"reportId": "00000000-0000-4000-8000-000000000001",
"datasetId": "00000000-0000-4000-8000-000000000003",
"snapshots": null
}
],
"template": null,
"templates": [],
"_embedded": {
"inf:report-type": {
"_links": {
"self": {
"href": "https://informer.example.com/api/report-types/dashboard"
}
},
"id": "dashboard",
"name": "common:dashboard",
"description": "reports:dashboard.description",
"image": "/assets/reports/images/dashboard.svg",
"color": "teal",
"mappingRequired": false,
"viewComponent": "dashboardView",
"editComponent": "dashboardEdit",
"previewComponent": "dashboardPreview",
"openInNewTab": false,
"datasets": "none",
"hasApiWhitelist": false
}
}
}
Captured from the API examples test suite; ids and timestamps are normalized.

GET /api/report-types

Get all available report drivers.

Authentication: Required

Response:

A HAL collection of the registered report-type drivers. Each id is what POST /api/reports accepts as type.

List report typesGET /api/report-types
The registered report-type drivers. The id of each is what POST /api/reports accepts as type.
Response · 200
{
"_links": {
"self": {
"href": "https://informer.example.com/api/report-types"
}
},
"start": 0,
"count": 6,
"total": 6,
"_embedded": {
"inf:report-type": [
{
"_links": {
"self": {
"href": "https://informer.example.com/api/report-types/comparisonBoard"
}
},
"id": "comparisonBoard",
"name": "Comparison Board",
"description": "Compare Visuals side by side based on any factor",
"image": "/assets/reports/images/comparison-board.svg",
"color": "deepPurple",
"datasets": "many",
"mappingRequired": false,
"viewComponent": "comparisonBoardView",
"editComponent": "comparisonBoardEdit",
"previewComponent": "comparisonBoardPreview",
"openInNewTab": false,
"hasApiWhitelist": false
},
{
"_links": {
"self": {
"href": "https://informer.example.com/api/report-types/dashboard"
}
},
"id": "dashboard",
"name": "Dashboard",
"description": "A layout designer for Visuals",
"image": "/assets/reports/images/dashboard.svg",
"color": "teal",
"mappingRequired": false,
"viewComponent": "dashboardView",
"editComponent": "dashboardEdit",
"previewComponent": "dashboardPreview",
"openInNewTab": false,
"datasets": "none",
"hasApiWhitelist": false
},
{
"_links": {
"self": {
"href": "https://informer.example.com/api/report-types/dataView"
}
},
"id": "dataView",
"name": "Data View",
"description": "A customized view for displaying a Dataset",
"image": "/assets/reports/images/data-view.svg",
"globalSearchImage": "/assets/reports/images/data-view.svg",
"color": "blue",
"mappingRequired": false,
"viewComponent": "dataViewView",
"editComponent": "dataViewEdit",
"previewComponent": "dataViewPreview",
"openInNewTab": false,
"datasets": "none",
"hasApiWhitelist": false
},
"… 3 more items (6 total) — omitted from docs"
]
}
}
Captured from the API examples test suite; ids and timestamps are normalized.

GET /api/report-types/{id}

Get a specific report driver by ID.

Authentication: Required

Path Parameters:

ParameterTypeDescription
idstringReport type/driver ID

Response:

Get a single report typeGET /api/report-types/dashboard
Response · 200
{
"_links": {
"self": {
"href": "https://informer.example.com/api/report-types/dashboard"
}
},
"id": "dashboard",
"name": "Dashboard",
"description": "A layout designer for Visuals",
"image": "/assets/reports/images/dashboard.svg",
"color": "teal",
"mappingRequired": false,
"viewComponent": "dashboardView",
"editComponent": "dashboardEdit",
"previewComponent": "dashboardPreview",
"openInNewTab": false,
"datasets": "none",
"hasApiWhitelist": false
}
Captured from the API examples test suite; ids and timestamps are normalized.