Mapping metadata
Read-only endpoints that expose a mapping's derived metadata — used by the
datasource and query builders. All are plain authenticated GETs.
GET /api/datasources/{id}/mappings/{schemaId}+{mappingId}/references
The inbound/outbound references (links) for one mapping.
{
"_links": {
"self": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/mappings/public%2Bproducts/references?sort=name&limit=0&start=0"
},
"next": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/mappings/public%2Bproducts/references?sort=name&limit=10&start=4"
}
},
"start": 0,
"count": 1,
"total": 4,
"_embedded": {
"inf:link": [
{
"_links": {
"self": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/mappings/public+order_details/links/products"
}
},
"id": "00000000-0000-4000-8000-000000000001:public+order_details:products",
"linkId": "products",
"name": "Product",
"permissions": {
"edit": true,
"write": true,
"delete": true
},
"tenant": "acme",
"fromId": "00000000-0000-4000-8000-000000000001:public+order_details",
"toId": "00000000-0000-4000-8000-000000000001:public+products",
"source": "northwind-schema",
"sourceId": null,
"type": "sql",
"defn": [
{
"toField": "ProductID",
"operator": "=",
"toSchema": "public",
"fromField": "ProductID",
"toMapping": "products",
"fromSchema": "public",
"fromMapping": "order_details"
}
],
"embedded": false,
"embeddedPrefix": null,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"_changes": null,
"parentId": null,
"_embedded": {
"inf:link-type": {
"_links": {
"self": {
"href": "https://informer.example.com/api/link-types/sql"
}
},
"id": "sql",
"name": "drivers:link.sql.name",
"description": "drivers:link.sql.description",
"icon": "green fa-columns",
"canCreate": true
},
"inf:links-to": {
"_links": {
"self": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/mappings/public+products"
}
},
"id": "00000000-0000-4000-8000-000000000001:public+products",
"name": "Products",
"permissions": {},
"datasourceId": "00000000-0000-4000-8000-000000000001",
"schemaId": "public",
"mappingId": "products",
"source": "pg",
"sourceId": null,
"description": null,
"hidden": false,
"records": 77,
"size": "524288",
"data": {
"size": "524288",
"records": "77",
"schemaId": "public",
"mappingId": "products"
},
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"_changes": null,
"tenant": "acme",
"_embedded": {
"inf:datasource": {
"_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
}
},
"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",
"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
},
"appId": null,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"folderId": null,
"fileId": null,
"_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:links-from": {
"_links": {
"self": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/mappings/public+order_details"
}
},
"id": "00000000-0000-4000-8000-000000000001:public+order_details",
"name": "Order Details",
"permissions": {},
"datasourceId": "00000000-0000-4000-8000-000000000001",
"schemaId": "public",
"mappingId": "order_details",
"source": "pg",
"sourceId": null,
"description": null,
"hidden": false,
"records": 2155,
"size": "524288",
"data": {
"size": "524288",
"records": "2155",
"schemaId": "public",
"mappingId": "order_details"
},
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"_changes": null,
"tenant": "acme",
"_embedded": {
"inf:datasource": {
"_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
}
},
"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",
"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
},
"appId": null,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"folderId": null,
"fileId": null,
"_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/{id}/mappings/{schemaId}+{mappingId}/changes
The unsaved metadata changes detected for the mapping (e.g. after a re-scan).
DELETE on the same path discards them.
GET /api/datasources/{id}/mappings/{schemaId}+{mappingId}/link-types
The link (relationship) types applicable to the mapping.
{
"_links": {
"self": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/mappings/public%2Bproducts/link-types"
}
},
"start": 0,
"count": 3,
"total": 3,
"_embedded": {
"inf:link-type": [
{
"_links": {
"self": {
"href": "https://informer.example.com/api/link-types/sql"
}
},
"id": "sql",
"name": "Field Pairings",
"description": "Match up Fields between two or more Mappings",
"icon": "green fa-columns",
"canCreate": true
},
{
"_links": {
"self": {
"href": "https://informer.example.com/api/link-types/remote"
}
},
"id": "remote",
"name": "Remote Datasource",
"description": "Link to a Mapping on another Datasource",
"icon": "red fa-external-link",
"canCreate": true
},
{
"_links": {
"self": {
"href": "https://informer.example.com/api/link-types/native"
}
},
"id": "native",
"name": "SQL",
"description": "A Native SQL Join between two or more Tables",
"icon": "orange flaticon-sql",
"canCreate": true
}
]
}
}
GET /api/datasources/{id}/mappings/{schemaId}+{mappingId}/criteria-nodes
The driver-supplied criteria nodes — the filter building blocks available for the mapping.
{
"_links": {
"self": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/mappings/public%2Bproducts/criteria-nodes"
}
},
"items": [],
"start": 0,
"count": 0,
"total": 0
}
GET /api/datasources/{id}/mappings/{schemaId}+{mappingId}/field-templates
The field templates (computed/derived field starting points) for the mapping.
{
"_links": {
"self": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/mappings/public%2Bproducts/field-templates"
}
},
"items": [
{
"detective": "00000000-0000-4000-8000-000000000001",
"id": "00000000-0000-4000-8000-000000000001:0",
"value": {
"name": "Custom Field",
"description": "Create a custom expression mapped as a Field",
"materialIcon": "code",
"rel": "inf:field-expression",
"relParams": {
"id": "00000000-0000-4000-8000-000000000002",
"schemaId": "public",
"mappingId": "products"
},
"editComponent": {
"newFieldDialog": {
"component": {
"newCustomExpressionField": "sqlCustomExpressionField"
}
}
},
"expression": {
"datasourceId": "00000000-0000-4000-8000-000000000002",
"schemaId": "public",
"mappingId": "products",
"name": "",
"fieldId": "",
"expression": "",
"rawType": "",
"data": {}
}
}
}
],
"start": 0,
"count": 1,
"total": 1
}
GET /api/datasources/{id}/mappings/{schemaId}+{mappingId}/saved-query-filters
The saved filters attached to the mapping.
{
"_links": {
"self": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/mappings/public%2Bproducts/saved-query-filters?sort=name&limit=0&start=0"
}
},
"start": 0,
"count": 0,
"total": 0,
"_embedded": {
"inf:saved-query-filter": []
}
}
GET /api/datasources/{id}/mappings/{schemaId}+{mappingId}/link-id
Suggest a unique link slug derived from a proposed ?name= (appending -2,
-3, … if the slug is taken).
"category"
GET /api/datasources/{id}/mappings/{schemaId}+{mappingId}/fields/{fieldId}/uses
The queries and datasets that reference a field ({fieldId} is the field slug).
GET /api/datasources/{id}/mappings/{schemaId}+{mappingId}/fields/{fieldId}/input-templates
The input templates (prompt presets) available for a field.
{
"_links": {
"self": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/mappings/public%2Bproducts/fields/CategoryID/input-templates?wildcard=false"
}
},
"items": [
{
"detective": "00000000-0000-4000-8000-000000000001",
"id": "00000000-0000-4000-8000-000000000001:0",
"value": {
"name": "Input Box",
"input": {
"mdMultiInput": {
"type": "text"
}
}
}
},
{
"detective": "00000000-0000-4000-8000-000000000001",
"id": "00000000-0000-4000-8000-000000000001:1",
"value": {
"group": "Autosuggest",
"name": "Value-Label Pairs",
"key": "input:value_label_pairs",
"input": {
"infLookupTable": {
"datasource": "00000000-0000-4000-8000-000000000002",
"schema": "public",
"mapping": "products",
"valueField": "CategoryID",
"labelField": "",
"multiSelect": "multiple"
}
}
}
},
{
"detective": "00000000-0000-4000-8000-000000000001",
"id": "00000000-0000-4000-8000-000000000001:2",
"value": {
"name": "Number Slider",
"key": "input:number_slider",
"input": {
"mdSlider": {}
}
}
},
"… 3 more items (6 total) — omitted from docs"
],
"start": 0,
"count": 6,
"total": 6
}
GET /api/datasources/{id}/mappings/{schemaId}+{mappingId}/links/{linkId}
One link defined from the mapping ({linkId} is the link slug).
{
"_links": {
"self": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/mappings/public%2Bproducts/links/categories"
}
},
"id": "00000000-0000-4000-8000-000000000001:public+products:categories",
"linkId": "categories",
"name": "Category",
"permissions": {
"edit": true,
"write": true,
"delete": true
},
"tenant": "acme",
"fromId": "00000000-0000-4000-8000-000000000001:public+products",
"toId": "00000000-0000-4000-8000-000000000001:public+categories",
"source": "northwind-schema",
"sourceId": null,
"type": "sql",
"defn": [
{
"toField": "CategoryID",
"operator": "=",
"toSchema": "public",
"fromField": "CategoryID",
"toMapping": "categories",
"fromSchema": "public",
"fromMapping": "products"
}
],
"embedded": false,
"embeddedPrefix": null,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"_changes": null,
"parentId": null,
"parent": null,
"child": null,
"_embedded": {
"inf:link-type": {
"_links": {
"self": {
"href": "https://informer.example.com/api/link-types/sql"
}
},
"id": "sql",
"name": "drivers:link.sql.name",
"description": "drivers:link.sql.description",
"icon": "green fa-columns",
"canCreate": true
},
"inf:links-to": {
"_links": {
"self": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/mappings/public+categories"
}
},
"id": "00000000-0000-4000-8000-000000000001:public+categories",
"name": "Categories",
"permissions": {
"write": true,
"hide": true,
"delete": true,
"rename": true,
"changeSet": true,
"restoreDefaults": true,
"scan": true
},
"datasourceId": "00000000-0000-4000-8000-000000000001",
"schemaId": "public",
"mappingId": "categories",
"source": "pg",
"sourceId": null,
"description": null,
"hidden": false,
"records": 8,
"size": "524288",
"data": {
"size": "524288",
"records": "8",
"schemaId": "public",
"mappingId": "categories"
},
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"_changes": null,
"tenant": "acme",
"_embedded": {
"inf:datasource": {
"_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
}
},
"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",
"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
},
"appId": null,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"folderId": null,
"fileId": null,
"_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:links-from": {
"_links": {
"self": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/mappings/public+products"
}
},
"id": "00000000-0000-4000-8000-000000000001:public+products",
"name": "Products",
"permissions": {
"write": true,
"hide": true,
"delete": true,
"rename": true,
"changeSet": true,
"restoreDefaults": true,
"scan": true
},
"datasourceId": "00000000-0000-4000-8000-000000000001",
"schemaId": "public",
"mappingId": "products",
"source": "pg",
"sourceId": null,
"description": null,
"hidden": false,
"records": 77,
"size": "524288",
"data": {
"size": "524288",
"records": "77",
"schemaId": "public",
"mappingId": "products"
},
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"_changes": null,
"tenant": "acme",
"_embedded": {
"inf:datasource": {
"_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
}
},
"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",
"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
},
"appId": null,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"folderId": null,
"fileId": null,
"_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/{id}/mappings/{schemaId}+{mappingId}/links/{linkId}/uses
The queries and datasets that use a link.
GET /api/datasources/{id}/link-types
The link (relationship) types defined on the datasource.
{
"_links": {
"self": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/link-types"
}
},
"start": 0,
"count": 3,
"total": 3,
"_embedded": {
"inf:link-type": [
{
"_links": {
"self": {
"href": "https://informer.example.com/api/link-types/sql"
}
},
"id": "sql",
"name": "Field Pairings",
"description": "Match up Fields between two or more Mappings",
"icon": "green fa-columns",
"canCreate": true
},
{
"_links": {
"self": {
"href": "https://informer.example.com/api/link-types/remote"
}
},
"id": "remote",
"name": "Remote Datasource",
"description": "Link to a Mapping on another Datasource",
"icon": "red fa-external-link",
"canCreate": true
},
{
"_links": {
"self": {
"href": "https://informer.example.com/api/link-types/native"
}
},
"id": "native",
"name": "SQL",
"description": "A Native SQL Join between two or more Tables",
"icon": "orange flaticon-sql",
"canCreate": true
}
]
}
}