Skip to main content

Core CRUD

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

GET /api/datasources​

List all datasources.

Query Parameters:

ParameterTypeDefaultDescription
qstring-Search query
typestring-Filter by driver type
sortstring-Sort field
limitinteger30Results per page
startinteger0Pagination offset

Response:

The response is a paginated HAL collection. Datasource items are returned under _embedded["inf:datasource"]. q matches slug, name, and description; type filters by driver.

Search and page through datasourcesGET /api/datasources?q=northwind&limit=10
A paginated HAL collection. q matches slug, name, and description; type filters by driver. Items are under _embedded["inf:datasource"].
Response · 200
{
"_links": {
"self": {
"href": "https://informer.example.com/api/datasources?sort=name&limit=10&start=0&q=northwind%2A&embedded=false"
},
"next": {
"href": "https://informer.example.com/api/datasources?sort=name&limit=10&start=2&q=northwind%2A&embedded=false"
}
},
"start": 0,
"count": 1,
"total": 2,
"aggs": {
"drivers": {
"generic-jdbc": 1,
"postgres": 1
},
"total": 2
},
"permissions": {
"create": true,
"importIxp": false
},
"_embedded": {
"inf:datasource": [
{
"_links": {
"self": {
"href": "https://informer.example.com/api/datasources/00000000-0000-4000-8000-000000000001"
},
"inf:features": {
"href": "https://informer.example.com/api/datasources/00000000-0000-4000-8000-000000000001/features"
},
"inf:comments": {
"href": "https://informer.example.com/api/datasources/00000000-0000-4000-8000-000000000001/comments"
},
"inf:links": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/links{?sort,limit,start,q,show,expand}",
"templated": true
},
"inf:link-types": {
"href": "https://informer.example.com/api/datasources/00000000-0000-4000-8000-000000000001/link-types"
},
"inf:favorite": {
"href": "https://informer.example.com/api/datasources/00000000-0000-4000-8000-000000000001/favorite"
},
"inf:settings-components": {
"href": "https://informer.example.com/api/datasources/00000000-0000-4000-8000-000000000001/settings-components"
},
"inf:column-types": {
"href": "https://informer.example.com/api/datasources/00000000-0000-4000-8000-000000000001/column-types"
},
"inf:mappings": {
"href": "https://informer.example.com/api/datasources/00000000-0000-4000-8000-000000000001/mappings{?sort,limit,start,q,show,set,expand}",
"templated": true
},
"inf:scan": {
"href": "https://informer.example.com/api/datasources/00000000-0000-4000-8000-000000000001/_scan"
},
"inf:ping": {
"href": "https://informer.example.com/api/datasources/00000000-0000-4000-8000-000000000001/_ping"
},
"inf:query": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/_query{?limit,output,cache,fakeData,unmappedFields,disableCriteria,clearCache,applyFormatting}",
"templated": true
},
"inf:query-string": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/_query-string"
},
"inf:suites": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/suites{?mapping}",
"templated": true
},
"inf:owner": {
"href": "https://informer.example.com/api/datasources/00000000-0000-4000-8000-000000000001/owner"
}
},
"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-000000000001",
"tenant": "acme",
"ownerId": "admin",
"slug": "northwind",
"name": "Northwind",
"description": null,
"embedded": false,
"type": "postgres",
"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
},
"appId": null,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"folderId": null,
"fileId": null,
"features": {
"northwind-datasets": {
"id": "00000000-0000-4000-8000-000000000002",
"tenant": "acme",
"datasourceId": "00000000-0000-4000-8000-000000000001",
"featureId": "northwind-datasets",
"version": null,
"data": {},
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z"
},
"northwind-schema": {
"id": "00000000-0000-4000-8000-000000000003",
"tenant": "acme",
"datasourceId": "00000000-0000-4000-8000-000000000001",
"featureId": "northwind-schema",
"version": null,
"data": {},
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z"
}
},
"shares": [],
"_embedded": {
"inf:driver": {
"_links": {
"self": {
"href": "https://informer.example.com/api/datasource-drivers/postgres"
},
"edit": {
"href": "https://informer.example.com/api/datasource-drivers/postgres/connection-form"
},
"image": {
"href": "https://informer.example.com/api/datasource-drivers/postgres/image"
},
"inf:ping": {
"href": "https://informer.example.com/api/datasource-drivers/postgres/_ping"
},
"inf:scan": {
"href": "https://informer.example.com/_scan"
}
},
"id": "postgres",
"queryDialect": "pg",
"name": "PostgreSQL",
"color": "blue",
"maxQueryParameters": 50000,
"languages": [
"informer",
"sql",
"distinctValue",
"… 2 more items (5 total) — omitted from docs"
],
"allowOnlyUpdateExisting": true,
"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 ---",
"support": {
"queryDesigner": {
"iql": {
"supportsIgnoreCaseStringComparison": true,
"aggregatePayloadFields": true,
"countStarPayloadField": true,
"nativeOrdering": true,
"distinctValues": true
}
}
},
"create": true,
"allowFullScan": true,
"hasMappings": true,
"family": "sql",
"image": "/opt/informer/packages/informer-server/modules/sql/images/postgres.svg",
"defaultLinkType": "sql"
}
}
}
]
}
}
Captured from the API examples test suite; ids and timestamps are normalized.

GET /api/datasources-list​

Get the complete datasource list with tags, sharing, and permissions per datasource.

List all datasourcesGET /api/datasources-list
A flat array (not paged) with tags, sharing, and permissions per datasource.
Response · 200
[
{
"id": "00000000-0000-4000-8000-000000000001",
"slug": "northwind",
"name": "Northwind",
"description": null,
"type": "postgres",
"scannedAt": "2026-01-15T16:20:00.000Z",
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"ownerId": "admin",
"folderId": null,
"shared": false,
"isMultiSchema": false,
"schemas": [
"public"
],
"username": "admin",
"displayName": "acme Administrator",
"teamId": null,
"teamName": null,
"mappingCount": "24",
"favorite": false,
"naturalId": "admin:northwind",
"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
},
"ownerName": "acme Administrator",
"typeName": "PostgreSQL",
"languages": [
"informer",
"sql",
"distinctValue",
"… 2 more items (5 total) — omitted from docs"
],
"family": "sql",
"image": "https://informer.example.com/api/datasource-drivers/postgres/image",
"imageSuffix": "https://informer.example.com/api/datasource-drivers/postgres/image",
"compatibility": [],
"tags": []
},
{
"id": "00000000-0000-4000-8000-000000000002",
"slug": "acme-warehouse",
"name": "Acme Warehouse",
"description": "Reporting warehouse (primary)",
"type": "generic-jdbc",
"scannedAt": null,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"ownerId": "admin",
"folderId": null,
"shared": false,
"isMultiSchema": false,
"schemas": null,
"username": "admin",
"displayName": "acme Administrator",
"teamId": null,
"teamName": null,
"mappingCount": "0",
"favorite": false,
"naturalId": "admin:acme-warehouse",
"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
},
"ownerName": "acme Administrator",
"typeName": "Generic JDBC",
"languages": [
"informer",
"sql",
"distinctValue",
"… 2 more items (5 total) — omitted from docs"
],
"family": "sql",
"image": "https://informer.example.com/api/datasource-drivers/generic-jdbc/image",
"imageSuffix": "https://informer.example.com/api/datasource-drivers/generic-jdbc/image",
"compatibility": [],
"tags": []
}
]
Captured from the API examples test suite; ids and timestamps are normalized.

POST /api/datasources​

Create a new datasource.

Permissions: datasources:create

Request Body:

Connection settings live under the driver-specific connection object (their exact shape depends on the driver):

{
"name": "Production MySQL",
"type": "mysql",
"description": "Primary reporting database",
"connection": {
"host": "db.example.com",
"port": 3306,
"database": "production",
"username": "app_user",
"password": "secretPassword"
}
}

Required Fields:

FieldTypeDescription
namestringDatasource name
typestringDriver type (see GET /api/datasource-drivers)

Optional Fields:

FieldTypeDefaultDescription
descriptionstring-Datasource description
connectionobject-Driver-specific connection settings
featuresobject-Features to install
languagestring-Default query language
schemasarray-Schemas to expose
settingsobject-Driver settings
integrationIdstring (uuid)-An existing Integration whose access token authenticates the connection, for drivers that support it. Must be readable by the requester and able to supply a token without user interaction (shared-mode OAuth2, bearer, API key, or token exchange); 404 and 400 otherwise. An Integration embedded in another Datasource or a Library is refused.
integrationobject-Instead of integrationId: the definition of a one-off Integration created inside this Datasource, in the shape of POST /api/integrations minus id, mode, and shared. It is always API type and shared mode, only the token-capable authType values are accepted, apiBaseUri is optional, and it is owned by the Datasource's owner. Naming both fields is a 400.

Response:

Responds 201 Created with the datasource and a Location header. The connection password is stored encrypted, and the response omits the connection object and integrationId (see the note under GET /api/datasources/{id}); read them with GET /api/datasources/{id}/connection.

Create a datasourcePOST /api/datasources
type must be a registered driver (see GET /api/datasource-drivers). connection holds driver-specific connection settings. Responds 201 with a Location header.
Request body
{
"name": "Acme Warehouse",
"type": "generic-jdbc",
"description": "Reporting warehouse"
}
Response · 201
{
"_links": {
"self": {
"href": "https://informer.example.com/api/datasources/admin%3Aacme-warehouse"
},
"inf:features": {
"href": "https://informer.example.com/api/datasources/admin%3Aacme-warehouse/features"
},
"inf:comments": {
"href": "https://informer.example.com/api/datasources/admin%3Aacme-warehouse/comments"
},
"inf:links": {
"href": "https://informer.example.com/api/datasources/admin%3Aacme-warehouse/links{?sort,limit,start,q,show,expand}",
"templated": true
},
"inf:link-types": {
"href": "https://informer.example.com/api/datasources/admin%3Aacme-warehouse/link-types"
},
"inf:favorite": {
"href": "https://informer.example.com/api/datasources/admin%3Aacme-warehouse/favorite"
},
"inf:settings-components": {
"href": "https://informer.example.com/api/datasources/admin%3Aacme-warehouse/settings-components"
},
"inf:column-types": {
"href": "https://informer.example.com/api/datasources/admin%3Aacme-warehouse/column-types"
},
"inf:mappings": {
"href": "https://informer.example.com/api/datasources/admin:acme-warehouse/mappings{?sort,limit,start,q,show,set,expand}",
"templated": true
},
"inf:scan": {
"href": "https://informer.example.com/api/datasources/admin%3Aacme-warehouse/_scan"
},
"inf:ping": {
"href": "https://informer.example.com/api/datasources/admin%3Aacme-warehouse/_ping"
},
"inf:query": {
"href": "https://informer.example.com/api/datasources/admin%3Aacme-warehouse/_query{?limit,output,cache,fakeData,unmappedFields,disableCriteria,clearCache,applyFormatting}",
"templated": true
},
"inf:query-string": {
"href": "https://informer.example.com/api/datasources/admin%3Aacme-warehouse/_query-string"
},
"inf:suites": {
"href": "https://informer.example.com/api/datasources/admin%3Aacme-warehouse/suites{?mapping}",
"templated": true
}
},
"defaultLinkType": "sql",
"family": "sql",
"languages": [
"informer",
"sql",
"distinctValue",
"… 2 more items (5 total) — omitted from docs"
],
"naturalId": "admin:acme-warehouse",
"image": "/opt/informer/packages/informer-server/modules/sql/images/generic-jdbc.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-000000000001",
"tenant": "acme",
"embedded": false,
"schemaUpdatedAt": "2026-01-15T16:20:00.000Z",
"rescanRequired": false,
"shared": false,
"settings": {
"multiSchema": false,
"useFakeData": false,
"remoteQueryBatchSize": {
"multiKey": 500,
"singleKey": 500
},
"usePreparedStatements": false
},
"name": "Acme Warehouse",
"type": "generic-jdbc",
"description": "Reporting warehouse",
"updatedAt": "2026-01-15T16:20:00.000Z",
"createdAt": "2026-01-15T16:20:00.000Z",
"ownerId": "admin",
"slug": "acme-warehouse",
"scannedAt": null,
"schemas": null,
"fileId": null,
"source": null,
"sourceId": null,
"_altid": null,
"folderId": null,
"data": null,
"appId": null,
"features": {},
"_embedded": {
"inf:driver": {
"_links": {
"self": {
"href": "https://informer.example.com/api/datasource-drivers/generic-jdbc"
},
"edit": {
"href": "https://informer.example.com/api/datasource-drivers/generic-jdbc/connection-form"
},
"image": {
"href": "https://informer.example.com/api/datasource-drivers/generic-jdbc/image"
},
"inf:ping": {
"href": "https://informer.example.com/api/datasource-drivers/generic-jdbc/_ping"
},
"inf:scan": {
"href": "https://informer.example.com/_scan"
}
},
"id": "generic-jdbc",
"name": "Generic JDBC",
"queryDialect": "oracledb",
"color": "black",
"maxQueryParameters": 500,
"allowOnlyUpdateExisting": true,
"support": {
"queryDesigner": {
"iql": {
"supportsIgnoreCaseStringComparison": true,
"aggregatePayloadFields": true,
"countStarPayloadField": true,
"nativeOrdering": true,
"distinctValues": true
}
}
},
"create": true,
"languages": [
"informer",
"sql",
"distinctValue",
"… 2 more items (5 total) — omitted from docs"
],
"allowFullScan": true,
"hasMappings": true,
"family": "sql",
"image": "/opt/informer/packages/informer-server/modules/sql/images/generic-jdbc.svg",
"defaultLinkType": "sql"
}
}
}
Captured from the API examples test suite; ids and timestamps are normalized.

GET /api/datasources/{id}​

Get a specific datasource.

Response:

Full datasource with its eligible/installed features and HAL links to mappings, visuals, shares, and owner.

Get a single datasourceGET /api/datasources/admin:northwind
Full datasource with its eligible/installed features and HAL links to mappings, visuals, shares, and owner.
Response · 200
{
"_links": {
"self": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind"
},
"inf:features": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/features"
},
"inf:comments": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/comments"
},
"inf:links": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/links{?sort,limit,start,q,show,expand}",
"templated": true
},
"inf:link-types": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/link-types"
},
"inf:favorite": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/favorite"
},
"inf:settings-components": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/settings-components"
},
"inf:column-types": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/column-types"
},
"inf:mappings": {
"href": "https://informer.example.com/api/datasources/admin:northwind/mappings{?sort,limit,start,q,show,set,expand}",
"templated": true
},
"inf:scan": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/_scan"
},
"inf:ping": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/_ping"
},
"inf:query": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/_query{?limit,output,cache,fakeData,unmappedFields,disableCriteria,clearCache,applyFormatting}",
"templated": true
},
"inf:query-string": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/_query-string"
},
"inf:suites": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/suites{?mapping}",
"templated": true
},
"inf:references": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/references{?sort,limit,start,q,show,expand}",
"templated": true
},
"inf:autohint": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/autohint"
},
"inf:visuals": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/visuals"
},
"inf:visual-templates": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/visual-templates"
},
"inf:datasource-shares": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/shares"
},
"inf:datasource-share": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/shares/{principalId}",
"templated": true
},
"inf:owner": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/owner"
}
},
"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-000000000001",
"tenant": "acme",
"ownerId": "admin",
"slug": "northwind",
"name": "Northwind",
"description": null,
"embedded": false,
"type": "postgres",
"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,
"features": {
"northwind-datasets": {
"id": "00000000-0000-4000-8000-000000000002",
"tenant": "acme",
"datasourceId": "00000000-0000-4000-8000-000000000001",
"featureId": "northwind-datasets",
"version": null,
"data": {},
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z"
},
"northwind-schema": {
"id": "00000000-0000-4000-8000-000000000003",
"tenant": "acme",
"datasourceId": "00000000-0000-4000-8000-000000000001",
"featureId": "northwind-schema",
"version": null,
"data": {},
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z"
}
},
"shares": [],
"_embedded": {
"inf:driver": {
"_links": {
"self": {
"href": "https://informer.example.com/api/datasource-drivers/postgres"
},
"edit": {
"href": "https://informer.example.com/api/datasource-drivers/postgres/connection-form"
},
"image": {
"href": "https://informer.example.com/api/datasource-drivers/postgres/image"
},
"inf:ping": {
"href": "https://informer.example.com/api/datasource-drivers/postgres/_ping"
},
"inf:scan": {
"href": "https://informer.example.com/_scan"
}
},
"id": "postgres",
"queryDialect": "pg",
"name": "PostgreSQL",
"color": "blue",
"maxQueryParameters": 50000,
"languages": [
"informer",
"sql",
"distinctValue",
"… 2 more items (5 total) — omitted from docs"
],
"allowOnlyUpdateExisting": true,
"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 ---",
"support": {
"queryDesigner": {
"iql": {
"supportsIgnoreCaseStringComparison": true,
"aggregatePayloadFields": true,
"countStarPayloadField": true,
"nativeOrdering": true,
"distinctValues": true
}
}
},
"create": true,
"allowFullScan": true,
"hasMappings": true,
"family": "sql",
"image": "/opt/informer/packages/informer-server/modules/sql/images/postgres.svg",
"defaultLinkType": "sql"
},
"inf:feature": [
{
"_links": {
"self": {
"href": "https://informer.example.com/api/datasource-features/hide-empty-mappings"
}
},
"id": "hide-empty-mappings",
"name": "Hide Empty Mappings",
"description": "Automatically hides Mappings that contain no records. Note that not all Datasources have this information on Mappings.",
"group": "Other",
"installed": false
},
{
"_links": {
"self": {
"href": "https://informer.example.com/api/datasource-features/northwind-datasets"
}
},
"id": "northwind-datasets",
"name": "Northwind Datasets",
"description": "Adds commonly used Datasets for Northwind",
"group": "Other",
"installed": true
},
{
"_links": {
"self": {
"href": "https://informer.example.com/api/datasource-features/northwind-schema"
}
},
"id": "northwind-schema",
"name": "Northwind Schema",
"description": "Automatically adds Links between tables found in the Northwind demo schema",
"group": "Other",
"installed": true
},
"… 1 more items (4 total) — omitted from docs"
]
}
}
Captured from the API examples test suite; ids and timestamps are normalized.

Note: Datasource responses never include the connection object, and neither integrationId nor the Integration it points at; all of it is connection knowledge, dropped from every Datasource representation, including datasources embedded in other resources. Read it with GET /api/datasources/{id}/connection, which is limited to users who can edit the connection and returns the password encrypted (encrypted:iv:...), never as plaintext.


PUT /api/datasources/{id}​

Update a datasource.

Permissions: datasource:write

Request Body:

{
"name": "Updated MySQL Production",
"port": 3307,
"options": {
"connectionLimit": 20
}
}

The Integration fields behave as on create, with these update rules: an omitted integrationId leaves the association untouched, an explicit null detaches, and the Datasource's own unchanged id passes without the read check, so someone who may edit the connection without being able to read the Integration can still save it. An integration definition updates the Datasource's embedded Integration in place (secrets absent from the definition stay as stored) or creates it; switching to an existing Integration, or sending integration: null, removes the embedded one.

Response:

Returns the updated datasource object.

Update a datasourcePUT /api/datasources/admin:acme-warehouse
Editable fields: name, description, connection, features, shared, schemas, settings, folderId. Changing features installs/uninstalls them.
Request body
{
"description": "Reporting warehouse (primary)"
}
Response · 200
{
"_links": {
"self": {
"href": "https://informer.example.com/api/datasources/admin%3Aacme-warehouse"
},
"inf:features": {
"href": "https://informer.example.com/api/datasources/admin%3Aacme-warehouse/features"
},
"inf:comments": {
"href": "https://informer.example.com/api/datasources/admin%3Aacme-warehouse/comments"
},
"inf:links": {
"href": "https://informer.example.com/api/datasources/admin%3Aacme-warehouse/links{?sort,limit,start,q,show,expand}",
"templated": true
},
"inf:link-types": {
"href": "https://informer.example.com/api/datasources/admin%3Aacme-warehouse/link-types"
},
"inf:favorite": {
"href": "https://informer.example.com/api/datasources/admin%3Aacme-warehouse/favorite"
},
"inf:settings-components": {
"href": "https://informer.example.com/api/datasources/admin%3Aacme-warehouse/settings-components"
},
"inf:column-types": {
"href": "https://informer.example.com/api/datasources/admin%3Aacme-warehouse/column-types"
},
"inf:mappings": {
"href": "https://informer.example.com/api/datasources/admin:acme-warehouse/mappings{?sort,limit,start,q,show,set,expand}",
"templated": true
},
"inf:scan": {
"href": "https://informer.example.com/api/datasources/admin%3Aacme-warehouse/_scan"
},
"inf:ping": {
"href": "https://informer.example.com/api/datasources/admin%3Aacme-warehouse/_ping"
},
"inf:query": {
"href": "https://informer.example.com/api/datasources/admin%3Aacme-warehouse/_query{?limit,output,cache,fakeData,unmappedFields,disableCriteria,clearCache,applyFormatting}",
"templated": true
},
"inf:query-string": {
"href": "https://informer.example.com/api/datasources/admin%3Aacme-warehouse/_query-string"
},
"inf:suites": {
"href": "https://informer.example.com/api/datasources/admin%3Aacme-warehouse/suites{?mapping}",
"templated": true
}
},
"defaultLinkType": "sql",
"family": "sql",
"languages": [
"informer",
"sql",
"distinctValue",
"… 2 more items (5 total) — omitted from docs"
],
"naturalId": "admin:acme-warehouse",
"image": "/opt/informer/packages/informer-server/modules/sql/images/generic-jdbc.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-000000000001",
"tenant": "acme",
"ownerId": "admin",
"slug": "acme-warehouse",
"name": "Acme Warehouse",
"description": "Reporting warehouse (primary)",
"embedded": false,
"type": "generic-jdbc",
"scannedAt": null,
"schemaUpdatedAt": "2026-01-15T16:20:00.000Z",
"rescanRequired": false,
"shared": false,
"schemas": null,
"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,
"features": {},
"shares": [],
"_embedded": {
"inf:driver": {
"_links": {
"self": {
"href": "https://informer.example.com/api/datasource-drivers/generic-jdbc"
},
"edit": {
"href": "https://informer.example.com/api/datasource-drivers/generic-jdbc/connection-form"
},
"image": {
"href": "https://informer.example.com/api/datasource-drivers/generic-jdbc/image"
},
"inf:ping": {
"href": "https://informer.example.com/api/datasource-drivers/generic-jdbc/_ping"
},
"inf:scan": {
"href": "https://informer.example.com/_scan"
}
},
"id": "generic-jdbc",
"name": "Generic JDBC",
"queryDialect": "oracledb",
"color": "black",
"maxQueryParameters": 500,
"allowOnlyUpdateExisting": true,
"support": {
"queryDesigner": {
"iql": {
"supportsIgnoreCaseStringComparison": true,
"aggregatePayloadFields": true,
"countStarPayloadField": true,
"nativeOrdering": true,
"distinctValues": true
}
}
},
"create": true,
"languages": [
"informer",
"sql",
"distinctValue",
"… 2 more items (5 total) — omitted from docs"
],
"allowFullScan": true,
"hasMappings": true,
"family": "sql",
"image": "/opt/informer/packages/informer-server/modules/sql/images/generic-jdbc.svg",
"defaultLinkType": "sql"
}
}
}
Captured from the API examples test suite; ids and timestamps are normalized.

DELETE /api/datasources/{id}​

Delete a datasource.

Permissions: datasource:write

Response:

Responds 200 on success.

Delete a datasourceDELETE /api/datasources/admin:temp-source
Permanently removes the datasource.
Response · 200 · no body
Captured from the API examples test suite; ids and timestamps are normalized.

Warning:

Deleting a datasource may affect datasets and reports that depend on it.


GET /api/datasources/{id}/owner​

Get a datasource's owner: the owning principal (a user or team), with the user or team embedded.

Get a datasource’s ownerGET /api/datasources/admin:acme-warehouse/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/datasources/admin%3Aacme-warehouse/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/datasources/{id}/owner​

Reassign a datasource's owner.

Permissions: datasource:write

Request Body:

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

Reassign a datasource’s ownerPUT /api/datasources/admin:acme-warehouse/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/datasources/annie.larson%3Aacme-warehouse"
},
"inf:features": {
"href": "https://informer.example.com/api/datasources/annie.larson%3Aacme-warehouse/features"
},
"inf:comments": {
"href": "https://informer.example.com/api/datasources/annie.larson%3Aacme-warehouse/comments"
},
"inf:links": {
"href": "https://informer.example.com/api/datasources/annie.larson%3Aacme-warehouse/links{?sort,limit,start,q,show,expand}",
"templated": true
},
"inf:link-types": {
"href": "https://informer.example.com/api/datasources/annie.larson%3Aacme-warehouse/link-types"
},
"inf:favorite": {
"href": "https://informer.example.com/api/datasources/annie.larson%3Aacme-warehouse/favorite"
},
"inf:settings-components": {
"href": "https://informer.example.com/api/datasources/annie.larson%3Aacme-warehouse/settings-components"
},
"inf:column-types": {
"href": "https://informer.example.com/api/datasources/annie.larson%3Aacme-warehouse/column-types"
},
"inf:mappings": {
"href": "https://informer.example.com/api/datasources/annie.larson:acme-warehouse/mappings{?sort,limit,start,q,show,set,expand}",
"templated": true
},
"inf:scan": {
"href": "https://informer.example.com/api/datasources/annie.larson%3Aacme-warehouse/_scan"
},
"inf:ping": {
"href": "https://informer.example.com/api/datasources/annie.larson%3Aacme-warehouse/_ping"
},
"inf:query": {
"href": "https://informer.example.com/api/datasources/annie.larson%3Aacme-warehouse/_query{?limit,output,cache,fakeData,unmappedFields,disableCriteria,clearCache,applyFormatting}",
"templated": true
},
"inf:query-string": {
"href": "https://informer.example.com/api/datasources/annie.larson%3Aacme-warehouse/_query-string"
},
"inf:suites": {
"href": "https://informer.example.com/api/datasources/annie.larson%3Aacme-warehouse/suites{?mapping}",
"templated": true
}
},
"defaultLinkType": "sql",
"family": "sql",
"languages": [
"informer",
"sql",
"distinctValue",
"… 2 more items (5 total) — omitted from docs"
],
"naturalId": "annie.larson:acme-warehouse",
"image": "/opt/informer/packages/informer-server/modules/sql/images/generic-jdbc.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-000000000001",
"tenant": "acme",
"ownerId": "annie.larson",
"slug": "acme-warehouse",
"name": "Acme Warehouse",
"description": "Reporting warehouse (primary)",
"embedded": false,
"type": "generic-jdbc",
"scannedAt": null,
"schemaUpdatedAt": "2026-01-15T16:20:00.000Z",
"rescanRequired": false,
"shared": false,
"schemas": null,
"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,
"features": {},
"shares": [],
"_embedded": {
"inf:driver": {
"_links": {
"self": {
"href": "https://informer.example.com/api/datasource-drivers/generic-jdbc"
},
"edit": {
"href": "https://informer.example.com/api/datasource-drivers/generic-jdbc/connection-form"
},
"image": {
"href": "https://informer.example.com/api/datasource-drivers/generic-jdbc/image"
},
"inf:ping": {
"href": "https://informer.example.com/api/datasource-drivers/generic-jdbc/_ping"
},
"inf:scan": {
"href": "https://informer.example.com/_scan"
}
},
"id": "generic-jdbc",
"name": "Generic JDBC",
"queryDialect": "oracledb",
"color": "black",
"maxQueryParameters": 500,
"allowOnlyUpdateExisting": true,
"support": {
"queryDesigner": {
"iql": {
"supportsIgnoreCaseStringComparison": true,
"aggregatePayloadFields": true,
"countStarPayloadField": true,
"nativeOrdering": true,
"distinctValues": true
}
}
},
"create": true,
"languages": [
"informer",
"sql",
"distinctValue",
"… 2 more items (5 total) — omitted from docs"
],
"allowFullScan": true,
"hasMappings": true,
"family": "sql",
"image": "/opt/informer/packages/informer-server/modules/sql/images/generic-jdbc.svg",
"defaultLinkType": "sql"
}
}
}
Captured from the API examples test suite; ids and timestamps are normalized.