Links & Suites
Within a datasource, links define relationships (joins) between its mappings, and suites are named groupings of mappings.
Links
GET /api/datasources/{id}/links-list
List a datasource's links (flat array).
List a datasource’s linksGET /api/datasources/admin:northwind/links-list
A flat array of the links (relationships) defined between this datasource’s mappings.
Response · 200
[
{
"id": "00000000-0000-4000-8000-000000000001:public+products:categories",
"linkId": "categories",
"fromId": "00000000-0000-4000-8000-000000000001:public+products",
"toId": "00000000-0000-4000-8000-000000000001:public+categories",
"name": "Category",
"type": "sql",
"defn": [
{
"toField": "CategoryID",
"operator": "=",
"toSchema": "public",
"fromField": "CategoryID",
"toMapping": "categories",
"fromSchema": "public",
"fromMapping": "products"
}
],
"embedded": false,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"fromName": "Products",
"fromDatasourceId": "00000000-0000-4000-8000-000000000001",
"fromDatasourceName": "Northwind",
"fromDatasourceSlug": "northwind",
"fromSchemaId": "public",
"fromMappingId": "products",
"toName": "Categories",
"toDatasourceId": "00000000-0000-4000-8000-000000000001",
"toDatasourceName": "Northwind",
"toDatasourceSlug": "northwind",
"toSchemaId": "public",
"toMappingId": "categories",
"permissions": {
"edit": true,
"write": true,
"delete": true
}
},
{
"id": "00000000-0000-4000-8000-000000000001:public+orders:customers",
"linkId": "customers",
"fromId": "00000000-0000-4000-8000-000000000001:public+orders",
"toId": "00000000-0000-4000-8000-000000000001:public+customers",
"name": "Customer",
"type": "sql",
"defn": [
{
"toField": "CustomerID",
"operator": "=",
"toSchema": "public",
"fromField": "CustomerID",
"toMapping": "customers",
"fromSchema": "public",
"fromMapping": "orders"
}
],
"embedded": false,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"fromName": "Orders",
"fromDatasourceId": "00000000-0000-4000-8000-000000000001",
"fromDatasourceName": "Northwind",
"fromDatasourceSlug": "northwind",
"fromSchemaId": "public",
"fromMappingId": "orders",
"toName": "Customers",
"toDatasourceId": "00000000-0000-4000-8000-000000000001",
"toDatasourceName": "Northwind",
"toDatasourceSlug": "northwind",
"toSchemaId": "public",
"toMappingId": "customers",
"permissions": {
"edit": true,
"write": true,
"delete": true
}
},
{
"id": "00000000-0000-4000-8000-000000000001:public+customers:customercustomerdemo",
"linkId": "customercustomerdemo",
"fromId": "00000000-0000-4000-8000-000000000001:public+customers",
"toId": "00000000-0000-4000-8000-000000000001:public+customercustomerdemo",
"name": "Customercustomerdemo",
"type": "sql",
"defn": [
{
"toField": "CustomerID",
"operator": "=",
"toSchema": "public",
"fromField": "CustomerID",
"toMapping": "customercustomerdemo",
"fromSchema": "public",
"fromMapping": "customers"
}
],
"embedded": false,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"fromName": "Customers",
"fromDatasourceId": "00000000-0000-4000-8000-000000000001",
"fromDatasourceName": "Northwind",
"fromDatasourceSlug": "northwind",
"fromSchemaId": "public",
"fromMappingId": "customers",
"toName": "Customercustomerdemo",
"toDatasourceId": "00000000-0000-4000-8000-000000000001",
"toDatasourceName": "Northwind",
"toDatasourceSlug": "northwind",
"toSchemaId": "public",
"toMappingId": "customercustomerdemo",
"permissions": {
"edit": true,
"write": true,
"delete": true
}
},
"… 9 more items (12 total) — omitted from docs"
]
GET /api/datasources/{id}/links
Get the datasource's links grouped for graph/diagram display.
Get datasource linksGET /api/datasources/admin:northwind/links
The links grouped for graph/diagram display.
Response · 200
{
"_links": {
"self": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/links?sort=name&limit=0&start=0"
},
"next": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/links?sort=name&limit=10&start=10"
}
},
"start": 0,
"count": 12,
"total": 48,
"aggs": {
"total": 12,
"type": {
"sql": 12
}
},
"_embedded": {
"inf:link": [
{
"_links": {
"self": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/mappings/public+products/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"
}
}
}
}
}
}
},
{
"_links": {
"self": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/mappings/public+orders/links/customers"
}
},
"id": "00000000-0000-4000-8000-000000000001:public+orders:customers",
"linkId": "customers",
"name": "Customer",
"permissions": {
"edit": true,
"write": true,
"delete": true
},
"tenant": "acme",
"fromId": "00000000-0000-4000-8000-000000000001:public+orders",
"toId": "00000000-0000-4000-8000-000000000001:public+customers",
"source": "northwind-schema",
"sourceId": null,
"type": "sql",
"defn": [
{
"toField": "CustomerID",
"operator": "=",
"toSchema": "public",
"fromField": "CustomerID",
"toMapping": "customers",
"fromSchema": "public",
"fromMapping": "orders"
}
],
"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+customers"
}
},
"id": "00000000-0000-4000-8000-000000000001:public+customers",
"name": "Customers",
"permissions": {
"write": true,
"hide": true,
"delete": true,
"rename": true,
"changeSet": true,
"restoreDefaults": true,
"scan": true
},
"datasourceId": "00000000-0000-4000-8000-000000000001",
"schemaId": "public",
"mappingId": "customers",
"source": "pg",
"sourceId": null,
"description": null,
"hidden": false,
"records": 91,
"size": "524288",
"data": {
"size": "524288",
"records": "91",
"schemaId": "public",
"mappingId": "customers"
},
"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+orders"
}
},
"id": "00000000-0000-4000-8000-000000000001:public+orders",
"name": "Orders",
"permissions": {
"write": true,
"hide": true,
"delete": true,
"rename": true,
"changeSet": true,
"restoreDefaults": true,
"scan": true
},
"datasourceId": "00000000-0000-4000-8000-000000000001",
"schemaId": "public",
"mappingId": "orders",
"source": "pg",
"sourceId": null,
"description": null,
"hidden": false,
"records": 830,
"size": "524288",
"data": {
"size": "524288",
"records": "830",
"schemaId": "public",
"mappingId": "orders"
},
"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"
}
}
}
}
}
}
},
{
"_links": {
"self": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/mappings/public+customers/links/customercustomerdemo"
}
},
"id": "00000000-0000-4000-8000-000000000001:public+customers:customercustomerdemo",
"linkId": "customercustomerdemo",
"name": "Customercustomerdemo",
"permissions": {
"edit": true,
"write": true,
"delete": true
},
"tenant": "acme",
"fromId": "00000000-0000-4000-8000-000000000001:public+customers",
"toId": "00000000-0000-4000-8000-000000000001:public+customercustomerdemo",
"source": "northwind-schema",
"sourceId": null,
"type": "sql",
"defn": [
{
"toField": "CustomerID",
"operator": "=",
"toSchema": "public",
"fromField": "CustomerID",
"toMapping": "customercustomerdemo",
"fromSchema": "public",
"fromMapping": "customers"
}
],
"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+customercustomerdemo"
}
},
"id": "00000000-0000-4000-8000-000000000001:public+customercustomerdemo",
"name": "Customercustomerdemo",
"permissions": {
"write": true,
"hide": true,
"delete": true,
"rename": true,
"changeSet": true,
"restoreDefaults": true,
"scan": true
},
"datasourceId": "00000000-0000-4000-8000-000000000001",
"schemaId": "public",
"mappingId": "customercustomerdemo",
"source": "pg",
"sourceId": null,
"description": null,
"hidden": false,
"records": 0,
"size": "524288",
"data": {
"size": "524288",
"records": "0",
"schemaId": "public",
"mappingId": "customercustomerdemo"
},
"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+customers"
}
},
"id": "00000000-0000-4000-8000-000000000001:public+customers",
"name": "Customers",
"permissions": {
"write": true,
"hide": true,
"delete": true,
"rename": true,
"changeSet": true,
"restoreDefaults": true,
"scan": true
},
"datasourceId": "00000000-0000-4000-8000-000000000001",
"schemaId": "public",
"mappingId": "customers",
"source": "pg",
"sourceId": null,
"description": null,
"hidden": false,
"records": 91,
"size": "524288",
"data": {
"size": "524288",
"records": "91",
"schemaId": "public",
"mappingId": "customers"
},
"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"
}
}
}
}
}
}
},
"… 9 more items (12 total) — omitted from docs"
]
}
}
GET /api/datasources/{id}/references
Get the inbound/outbound references between the datasource's mappings.
Get datasource referencesGET /api/datasources/admin:northwind/references
Inbound/outbound references between this datasource’s mappings.
Response · 200
{
"_links": {
"self": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/references?sort=name&limit=0&start=0"
}
},
"start": 0,
"count": 0,
"total": 0,
"_embedded": {
"inf:link": []
}
}
GET /api/datasources/{id}/mappings/{schemaId}+{mappingId}/links
List the links originating from a single mapping.
List a mapping’s linksGET /api/datasources/admin:northwind/mappings/public+categories/links
The links originating from a single mapping (addressed by {schemaId}+{mappingId}).
Response · 200
{
"_links": {
"self": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/mappings/public%2Bcategories/links?sort=name&limit=0&start=0"
}
},
"start": 0,
"count": 0,
"total": 0,
"aggs": {
"total": 0,
"type": {}
},
"_embedded": {
"inf:link": []
}
}
Links are created and removed against a mapping:
POST /api/datasources/\{id\}/mappings/\{schemaId\}+\{mappingId\}/links: create a linkPUT/DELETE .../links/\{linkId\}: update or remove a link
Link Types
GET /api/link-types
List the available link (relationship) types.
List link typesGET /api/link-types
The available link (relationship) types.
Response · 200
{
"_links": {
"self": {
"href": "https://informer.example.com/api/link-types"
}
},
"start": 0,
"count": 7,
"total": 7,
"_embedded": {
"inf:link-type": [
{
"_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/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/native"
}
},
"id": "native",
"name": "SQL",
"description": "A Native SQL Join between two or more Tables",
"icon": "orange flaticon-sql",
"canCreate": true
},
"… 4 more items (7 total) — omitted from docs"
]
}
}
GET /api/link-types/{id}
Get a single link type.
Get a single link typeGET /api/link-types/remote
Response · 200
{
"_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
}
Suites
A suite is a named grouping of a datasource's mappings.
GET /api/datasources/{id}/suites
List a datasource's mapping suites.
List mapping suitesGET /api/datasources/admin:northwind/suites
A HAL collection of the datasource’s mapping suites (named groupings of mappings).
Response · 200
{
"_links": {
"self": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/suites"
}
},
"start": 0,
"count": 1,
"total": 1,
"_embedded": {
"inf:suite": [
{
"_links": {
"self": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/suites/00000000-0000-4000-8000-000000000001"
},
"inf:suite-mappings": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/suites/00000000-0000-4000-8000-000000000001/mappings"
},
"inf:suite-partitions": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/suites/00000000-0000-4000-8000-000000000001/partitions"
},
"inf:suite-generate": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/suites/00000000-0000-4000-8000-000000000001/_generate"
}
},
"permissions": {
"delete": true,
"rename": true,
"write": true
},
"tenant": "acme",
"id": "00000000-0000-4000-8000-000000000001",
"name": "Sales Tables",
"datasourceId": "00000000-0000-4000-8000-000000000002",
"slug": "sales-tables",
"label": null,
"defaultPartitionId": "00000000-0000-4000-8000-000000000003",
"_embedded": {
"inf:suite-partition": [
{
"_links": {
"self": {
"href": "https://informer.example.com/api/datasources/admin%3Anorthwind/suites/00000000-0000-4000-8000-000000000001/partitions/00000000-0000-4000-8000-000000000003"
}
},
"entryMap": {},
"tenant": "acme",
"id": "00000000-0000-4000-8000-000000000003",
"name": "Current",
"suiteId": "00000000-0000-4000-8000-000000000001"
}
]
}
}
]
}
}
GET /api/datasources/{id}/suites-list
List the suites as a flat array.
List mapping suites (flat)GET /api/datasources/admin:northwind/suites-list
A flat array of the datasource’s mapping suites (one row per default partition), for pickers and quick lookups.
Response · 200
[
{
"id": "00000000-0000-4000-8000-000000000001",
"name": "Sales Tables",
"description": "Order-related mappings grouped for reporting",
"datasourceId": "00000000-0000-4000-8000-000000000002",
"slug": "sales-tables",
"label": null,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"defaultPartitionId": "00000000-0000-4000-8000-000000000003",
"permissions": {
"delete": true,
"rename": true,
"write": true
}
}
]
Suites are managed against the datasource:
POST /api/datasources/\{id\}/suites: create a suiteGET/PUT/DELETE /api/datasources/\{id\}/suites/\{suiteId\}: read, update, or delete a suitePOST /api/datasources/\{id\}/suites/\{suiteId\}/_generate: generate the suite's mappings
Use Case:
Organize a large datasource's tables into focused suites (e.g. Sales, Inventory) for mapping and reporting.