Core CRUD
Basic datasource creation, retrieval, update, and deletion operations.
GET /api/datasources
List all datasources.
Query Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
q | string | - | Search query |
type | string | - | Filter by driver type |
sort | string | - | Sort field |
limit | integer | 30 | Results per page |
start | integer | 0 | Pagination 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.
{
"_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"
}
}
}
]
}
}
GET /api/datasources-list
Get the complete datasource list with tags, sharing, and permissions per datasource.
[
{
"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": []
}
]
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:
| Field | Type | Description |
|---|---|---|
name | string | Datasource name |
type | string | Driver type (see GET /api/datasource-drivers) |
Optional Fields:
| Field | Type | Default | Description |
|---|---|---|---|
description | string | - | Datasource description |
connection | object | - | Driver-specific connection settings |
features | object | - | Features to install |
language | string | - | Default query language |
schemas | array | - | Schemas to expose |
settings | object | - | Driver settings |
integrationId | string (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. |
integration | object | - | 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.
{
"name": "Acme Warehouse",
"type": "generic-jdbc",
"description": "Reporting warehouse"
}
{
"_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"
}
}
}
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.
{
"_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"
]
}
}
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.
{
"description": "Reporting warehouse (primary)"
}
{
"_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"
}
}
}
DELETE /api/datasources/{id}
Delete a datasource.
Permissions: datasource:write
Response:
Responds 200 on success.
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.
{
"_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
}
}
}
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.
{
"userId": "annie.larson"
}
{
"_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"
}
}
}