Ownership & Favorites
Transfer a Dataset between users and teams, and manage your per-user favorite flag.
GET /api/datasets/{id}/owner
Get the Dataset's owner: the principal row with the user (or team) embedded.
Authentication: Required
{
"_links": {
"self": {
"href": "https://informer.example.com/api/datasets/admin%3Anorthwind-orders/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
}
}
}
ETag Support: Based on the Dataset's updatedAt.
PUT /api/datasets/{id}/owner
Transfer the Dataset to another user or team.
Authentication: Required
Permission: dataset:changeOwner (Admin on the owning team, or
superuser). Transfers to a team additionally require Data Wizard or above
in the receiving team. An unknown principal answers 400.
Request Body:
The payload identifies the new owner principal: { "id": "<username or team id>" }.
{
"id": "marketing"
}
{
"_links": {
"self": {
"href": "https://informer.example.com/api/datasets/00000000-0000-4000-8000-000000000001"
},
"inf:draft": {
"href": "https://informer.example.com/api/datasets/marketing%3Anorthwind-orders/draft"
},
"inf:run": {
"href": "https://informer.example.com/api/datasets/marketing%3Anorthwind-orders/_run"
},
"inf:benchmark": {
"href": "https://informer.example.com/api/datasets/marketing%3Anorthwind-orders/_benchmark"
},
"inf:refresh": {
"href": "https://informer.example.com/api/datasets/marketing%3Anorthwind-orders/_refresh"
},
"inf:data": {
"href": "https://informer.example.com/api/datasets/marketing%3Anorthwind-orders/data{?start,limit,q,sort,show,report}",
"templated": true
},
"inf:user-settings": {
"href": "https://informer.example.com/api/datasets/marketing%3Anorthwind-orders/settings"
},
"inf:query": {
"href": "https://informer.example.com/api/queries/00000000-0000-4000-8000-000000000002"
},
"inf:owner": {
"href": "https://informer.example.com/api/datasets/00000000-0000-4000-8000-000000000001/owner"
},
"inf:search": {
"href": "https://informer.example.com/api/datasets/marketing%3Anorthwind-orders/_search{?query,_source,sort,from,size,searchType,aggs,report,aggregations,alias,snapshots}",
"templated": true
},
"inf:mapping": {
"href": "https://informer.example.com/api/datasets/00000000-0000-4000-8000-000000000001/mapping"
},
"inf:job-templates": {
"href": "https://informer.example.com/api/datasets/00000000-0000-4000-8000-000000000001/job-templates"
},
"inf:fields": {
"href": "https://informer.example.com/api/datasets/00000000-0000-4000-8000-000000000001/fields"
},
"inf:count": {
"href": "https://informer.example.com/api/datasets/00000000-0000-4000-8000-000000000001/count"
},
"inf:comments": {
"href": "https://informer.example.com/api/datasets/00000000-0000-4000-8000-000000000001/comments"
},
"inf:visuals": {
"href": "https://informer.example.com/api/datasets/00000000-0000-4000-8000-000000000001/visuals"
},
"inf:visual-templates": {
"href": "https://informer.example.com/api/datasets/00000000-0000-4000-8000-000000000001/visual-templates"
},
"inf:dataset-tags": {
"href": "https://informer.example.com/api/datasets/00000000-0000-4000-8000-000000000001/tags"
},
"inf:dataset-tag": {
"href": "https://informer.example.com/api/datasets/00000000-0000-4000-8000-000000000001/tags/{tagId}",
"templated": true
},
"inf:discover": {
"href": "https://informer.example.com/api/datasets/00000000-0000-4000-8000-000000000001/discover"
},
"inf:filters": {
"href": "https://informer.example.com/api/datasets/00000000-0000-4000-8000-000000000001/filters"
},
"inf:dataset-shares": {
"href": "https://informer.example.com/api/datasets/00000000-0000-4000-8000-000000000001/shares"
},
"inf:flow": {
"href": "https://informer.example.com/api/datasets/00000000-0000-4000-8000-000000000001/flow"
},
"inf:group": {
"href": "https://informer.example.com/api/datasets/00000000-0000-4000-8000-000000000001/group"
},
"inf:group-rows": {
"href": "https://informer.example.com/api/datasets/00000000-0000-4000-8000-000000000001/group-rows"
},
"inf:dataset-share": {
"href": "https://informer.example.com/api/datasets/00000000-0000-4000-8000-000000000001/shares/{principalId}",
"templated": true
},
"inf:import": {
"href": "https://informer.example.com/api/datasets/00000000-0000-4000-8000-000000000001/_import"
},
"inf:exceptions": {
"href": "https://informer.example.com/api/datasets/00000000-0000-4000-8000-000000000001/_exceptions"
},
"inf:search-aggregates": {
"href": "https://informer.example.com/api/datasets/00000000-0000-4000-8000-000000000001/_search-aggregates"
},
"inf:exporters": {
"href": "https://informer.example.com/api/datasets/00000000-0000-4000-8000-000000000001/exporters"
},
"inf:favorite": {
"href": "https://informer.example.com/api/datasets/00000000-0000-4000-8000-000000000001/favorite"
},
"inf:export-bundle": {
"href": "https://informer.example.com/api/datasets/00000000-0000-4000-8000-000000000001/_export"
},
"edit": {
"href": "https://informer.example.com/api/reports/marketing%3Anorthwind-orders/_edit"
}
},
"naturalId": "marketing:northwind-orders",
"permissions": {
"edit": true,
"share": true,
"delete": true,
"write": true,
"addVisual": true,
"deleteVisual": true,
"changeOwner": true,
"copy": true,
"rename": true,
"refresh": true,
"modifyFlows": true,
"replaceFile": true,
"modifySettings": true,
"createDataView": true,
"assignTags": true,
"createFilter": true,
"scriptFields": true,
"setIndex": false
},
"id": "00000000-0000-4000-8000-000000000001",
"tenant": "acme",
"ownerId": "marketing",
"slug": "northwind-orders",
"name": "Northwind Orders",
"description": "A dataset consisting of all orders in the northwind system (public schema)",
"embedded": false,
"esIndex": "docsex.northwind.northwind-orders.1700000000000",
"esIndexName": "northwind-orders",
"esType": "data",
"records": 2155,
"size": "524288",
"source": "northwind-datasets",
"sourceId": null,
"params": {},
"dataUpdatedAt": "2026-01-15T16:20:00.000Z",
"dataExpiresAt": null,
"ttl": null,
"append": false,
"shared": false,
"timestampField": null,
"lastDurationMillis": "1500",
"windowSize": 500,
"settings": {},
"flow": [],
"esId": null,
"lastQueriedAt": "2026-01-15T16:20:00.000Z",
"esWorkers": 1,
"datasetFieldReportAccess": false,
"parentId": null,
"templateProcessorId": null,
"deleteDate": null,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"datasourceId": null,
"reportId": null,
"queryId": "00000000-0000-4000-8000-000000000002",
"editingId": null,
"folderId": null,
"query": {
"naturalId": "00000000-0000-4000-8000-000000000002",
"fields": null,
"permissions": {
"assignTags": true,
"changeOwner": true,
"copy": true,
"delete": true,
"edit": true,
"rename": true,
"run": true,
"share": true,
"write": true
},
"id": "00000000-0000-4000-8000-000000000002",
"tenant": "acme",
"ownerId": "admin",
"slug": null,
"name": null,
"description": null,
"shared": false,
"embedded": true,
"source": null,
"sourceId": null,
"settings": {},
"inputs": null,
"language": "informer",
"flow": [
{
"calculatedField": {
"alias": "salesperson",
"label": "Salesperson",
"script": "FirstName + ' ' + LastName"
}
},
{
"calculatedField": {
"alias": "orderAmount",
"label": "Order Amount",
"script": "UnitPrice * Quantity"
}
},
{
"calculatedField": {
"alias": "shipState",
"label": "Ship State",
"script": "ShipCountry === \"USA\" ? ShipRegion : null"
}
}
],
"payload": {
"fields": [
{
"id": "OrderDate",
"path": "OrderDate",
"type": "field",
"label": "Order Date",
"fieldId": "OrderDate",
"grouped": false,
"linkRef": null,
"rawType": "date",
"dataType": "date_tz",
"distinct": false,
"position": 0,
"aggregate": null
},
{
"id": "RequiredDate",
"path": "RequiredDate",
"type": "field",
"label": "Required Date",
"fieldId": "RequiredDate",
"grouped": false,
"linkRef": null,
"rawType": "date",
"dataType": "date_tz",
"distinct": false,
"position": 1,
"aggregate": null
},
{
"id": "ShipAddress",
"path": "ShipAddress",
"type": "field",
"label": "Ship Address",
"fieldId": "ShipAddress",
"grouped": false,
"linkRef": null,
"rawType": "character varying",
"dataType": "keyword_text",
"distinct": false,
"position": 2,
"aggregate": null
},
"… 10 more items (13 total) — omitted from docs"
],
"source": {
"id": "00000000-0000-4000-8000-000000000003:public+orders",
"schemaId": "public",
"mappingId": "orders"
},
"groupBy": [],
"linkRefs": [
{
"id": "employees",
"linkId": "00000000-0000-4000-8000-000000000003:public+orders:employees",
"details": {
"id": "00000000-0000-4000-8000-000000000003:public+orders:employees",
"defn": [
{
"toField": "EmployeeID",
"operator": "=",
"toSchema": "public",
"fromField": "EmployeeID",
"toMapping": "employees",
"fromSchema": "public",
"fromMapping": "orders"
}
],
"toId": "00000000-0000-4000-8000-000000000003:public+employees",
"type": "sql",
"fromId": "00000000-0000-4000-8000-000000000003:public+orders",
"linkId": "employees"
}
},
{
"id": "order-details",
"linkId": "00000000-0000-4000-8000-000000000003:public+orders:order-details",
"details": {
"id": "00000000-0000-4000-8000-000000000003:public+orders:order-details",
"defn": [
{
"toField": "OrderID",
"operator": "=",
"toSchema": "public",
"fromField": "OrderID",
"toMapping": "order_details",
"fromSchema": "public",
"fromMapping": "orders"
}
],
"toId": "00000000-0000-4000-8000-000000000003:public+order_details",
"type": "sql",
"fromId": "00000000-0000-4000-8000-000000000003:public+orders",
"linkId": "order-details"
}
},
{
"id": "order-details/products",
"linkId": "00000000-0000-4000-8000-000000000003:public+order_details:products",
"details": {
"id": "00000000-0000-4000-8000-000000000003:public+order_details:products",
"defn": [
{
"toField": "ProductID",
"operator": "=",
"toSchema": "public",
"fromField": "ProductID",
"toMapping": "products",
"fromSchema": "public",
"fromMapping": "order_details"
}
],
"toId": "00000000-0000-4000-8000-000000000003:public+products",
"type": "sql",
"fromId": "00000000-0000-4000-8000-000000000003:public+order_details",
"linkId": "products"
}
}
]
},
"defnUpdatedAt": null,
"limit": -1,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"datasourceId": "00000000-0000-4000-8000-000000000003",
"editingId": null,
"folderId": null,
"datasource": {
"defaultLinkType": "sql",
"aiSystemMessage": "This is a PostgresSQL database. Identifiers are case-sensitive by default. \n Always surround all column names, table names, and schema names in double-quotes (\"). \n For example:\n SELECT \"OrderID\", \"ShipCountry\" FROM \"public\".\"orders\" WHERE \"ShipCity\" = 'Raleigh';\n ---",
"family": "sql",
"languages": [
"informer",
"sql",
"distinctValue",
"… 2 more items (5 total) — omitted from docs"
],
"naturalId": "admin:northwind",
"image": "/opt/informer/packages/informer-server/modules/sql/images/postgres.svg",
"compatibility": [],
"permissions": {
"assignTags": true,
"edit": true,
"delete": true,
"share": true,
"write": true,
"changeOwner": true,
"ping": true,
"scan": true,
"downloadSchema": true,
"importData": true,
"importSchema": true,
"rename": true,
"editConnection": true,
"createLink": true,
"setWrite": true,
"createSuite": true,
"createFieldExpression": true,
"createMapping": false,
"bundle": true,
"query": true
},
"id": "00000000-0000-4000-8000-000000000003",
"tenant": "acme",
"ownerId": "admin",
"slug": "northwind",
"name": "Northwind",
"description": null,
"embedded": false,
"type": "postgres",
"connection": {
"host": "localhost",
"pool": {
"max": 5,
"min": 0,
"idle": 10000,
"acquire": 10000
},
"port": 5432,
"user": "northwinduser",
"database": "northwind",
"password": "encrypted:iv:0000000000000000",
"idleTimeoutMillis": 7
},
"scannedAt": "2026-01-15T16:20:00.000Z",
"schemaUpdatedAt": "2026-01-15T16:20:00.000Z",
"rescanRequired": false,
"shared": false,
"schemas": [
"public"
],
"source": null,
"sourceId": null,
"settings": {
"multiSchema": false,
"useFakeData": false,
"remoteQueryBatchSize": {
"multiKey": 500,
"singleKey": 500
},
"usePreparedStatements": false
},
"data": null,
"appId": null,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"folderId": null,
"fileId": null,
"shares": []
}
}
}
Behavior:
- The Dataset's refresh jobs, visuals, and snapshot Datasets move to the new owner with it
- The natural id changes to
<newOwner>:<slug> - The new owner is notified via the activity feed
- The response carries a
Locationheader with the canonical Dataset URL
GET /api/datasets/{id}/favorite
Check whether you have favorited the Dataset. Answers your favorite row, or
404 when you have not.
Authentication: Required
{
"_links": {
"self": {
"href": "https://informer.example.com/api/datasets/admin%3Anorthwind-orders/favorite"
}
},
"permissions": {},
"id": "00000000-0000-4000-8000-000000000001",
"principalId": "admin",
"reportId": null,
"datasetId": "00000000-0000-4000-8000-000000000002",
"queryId": null,
"datasourceId": null,
"jobId": null,
"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/datasets/{id}/favorite
Favorite the Dataset for the calling user. Idempotent; no body needed.
Authentication: Required
{
"_links": {
"self": {
"href": "https://informer.example.com/api/datasets/admin%3Anorthwind-orders/favorite"
}
},
"permissions": {},
"id": "00000000-0000-4000-8000-000000000001",
"tenant": "acme",
"datasetId": "00000000-0000-4000-8000-000000000002",
"principalId": "admin",
"reportId": null,
"queryId": null,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"datasourceId": null,
"jobId": null,
"templateId": null,
"assistantId": null,
"libraryId": null,
"appId": null,
"integrationId": null,
"toolkitId": null
}
Favorites are per user and surface as the favorite flag in
GET /api/datasets-list.
DELETE /api/datasets/{id}/favorite
Remove your favorite.
Authentication: Required
Responds 200 with an empty body, also when there was nothing to remove.