Field sets & mapping sets
Field sets and mapping sets are tenant-wide, named and colored groupings used to
organize content in the datasource and query builders. A field set groups
fields; a mapping set groups mappings. Both are siblings with the same
shape — { name, icon?, color? } — and the same CRUD surface.
Mapping-set membership is managed separately, through mapping-set entries.
Field sets
GET /api/field-sets
List field sets. A HAL collection (rel inf:field-sets) sorted by name; pass
?q= to filter by name.
{
"_links": {
"self": {
"href": "https://informer.example.com/api/field-sets?sort=name&limit=0&start=0"
}
},
"start": 0,
"count": 1,
"total": 1,
"_embedded": {
"inf:field-set": [
{
"_links": {
"self": {
"href": "https://informer.example.com/api/field-sets/00000000-0000-4000-8000-000000000001"
}
},
"id": "00000000-0000-4000-8000-000000000001",
"name": "Financials",
"color": "#2E7D32",
"icon": "flaticon-coins",
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"tenant": "acme"
}
]
}
}
POST /api/field-sets
Create a field set.
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Display name. |
icon | string | No | Icon class. |
color | string | No | Hex color. |
Returns 201 with a Location header.
{
"name": "Financials",
"color": "#2E7D32",
"icon": "flaticon-coins"
}
{
"_links": {
"self": {
"href": "https://informer.example.com/api/field-sets/00000000-0000-4000-8000-000000000001"
}
},
"id": "00000000-0000-4000-8000-000000000001",
"tenant": "acme",
"name": "Financials",
"color": "#2E7D32",
"icon": "flaticon-coins",
"updatedAt": "2026-01-15T16:20:00.000Z",
"createdAt": "2026-01-15T16:20:00.000Z"
}
GET /api/field-sets/{id}
Get one field set.
{
"_links": {
"self": {
"href": "https://informer.example.com/api/field-sets/00000000-0000-4000-8000-000000000001"
}
},
"id": "00000000-0000-4000-8000-000000000001",
"name": "Financials",
"color": "#2E7D32",
"icon": "flaticon-coins",
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"tenant": "acme"
}
PUT /api/field-sets/{id}
Upsert a field set. Returns 200 with the updated record.
{
"name": "Financial Fields",
"color": "#1B5E20",
"icon": "flaticon-coins"
}
{
"_links": {
"self": {
"href": "https://informer.example.com/api/field-sets/00000000-0000-4000-8000-000000000001"
}
},
"id": "00000000-0000-4000-8000-000000000001",
"name": "Financial Fields",
"color": "#1B5E20",
"icon": "flaticon-coins",
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"tenant": "acme"
}
DELETE /api/field-sets/{id}
Delete a field set. Returns 200 with an empty body (Informer convention).
POST /api/field-sets-bulk
Apply adds, updates, and removes in a single transaction.
| Field | Type | Description |
|---|---|---|
add | array | Field sets to create ({ name, icon?, color? }). |
update | array | Field sets to update (each with id). |
remove | array | Field-set ids to delete. |
Returns 200 with an empty body.
{
"add": [
{
"name": "Dates",
"color": "#1565C0"
}
],
"update": [],
"remove": []
}
Mapping sets
GET /api/mapping-sets
List mapping sets. A HAL collection (rel inf:mapping-sets) sorted by name,
carrying the caller's mappingSets permissions; pass ?q= to filter by name.
{
"_links": {
"self": {
"href": "https://informer.example.com/api/mapping-sets?sort=name&limit=0&start=0"
}
},
"start": 0,
"count": 1,
"total": 1,
"permissions": {
"create": true
},
"_embedded": {
"inf:mapping-set": [
{
"_links": {
"self": {
"href": "https://informer.example.com/api/mapping-sets/sales-tables"
}
},
"tenant": "acme",
"id": "sales-tables",
"name": "Sales Tables",
"icon": "flaticon-table",
"color": "#6A1B9A",
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z"
}
]
}
}
POST /api/mapping-sets
Create a mapping set ({ name, icon?, color? }). Returns 201 with a Location
header.
{
"name": "Sales Tables",
"color": "#6A1B9A",
"icon": "flaticon-table"
}
{
"_links": {
"self": {
"href": "https://informer.example.com/api/mapping-sets/sales-tables"
}
},
"tenant": "acme",
"id": "sales-tables",
"name": "Sales Tables",
"color": "#6A1B9A",
"icon": "flaticon-table",
"updatedAt": "2026-01-15T16:20:00.000Z",
"createdAt": "2026-01-15T16:20:00.000Z"
}
GET /api/mapping-sets/{id}
Get one mapping set.
{
"_links": {
"self": {
"href": "https://informer.example.com/api/mapping-sets/sales-tables"
}
},
"tenant": "acme",
"id": "sales-tables",
"name": "Sales Tables",
"icon": "flaticon-table",
"color": "#6A1B9A",
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z"
}
PUT /api/mapping-sets/{id}
Upsert a mapping set. Returns 200 with the updated record.
{
"name": "Sales & Orders",
"color": "#4A148C"
}
{
"_links": {
"self": {
"href": "https://informer.example.com/api/mapping-sets/sales-tables"
}
},
"tenant": "acme",
"id": "sales-tables",
"name": "Sales & Orders",
"icon": "flaticon-table",
"color": "#4A148C",
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z"
}
DELETE /api/mapping-sets/{id}
Delete a mapping set. Returns 200 with an empty body.
POST /api/mapping-sets-bulk
Bulk add / update / remove, same shape as the field-sets bulk endpoint.
Returns 200 with an empty body.
{
"add": [
{
"name": "Reference Tables",
"color": "#00838F"
}
],
"update": [],
"remove": []
}
POST /api/mapping-set-entries
Set which mapping sets each mapping belongs to. The payload is an object keyed by Mapping id, whose values are arrays of mapping-set ids:
{ "<mappingId>": ["<setId>", "<setId>"] }
Passing an empty array for a mapping clears all of its set assignments. The
caller needs datasource:write on each mapping's datasource (mappings whose
datasource is not writable are silently skipped). The response echoes the
resulting { mappingId: [setId] } map.
{
"00000000-0000-4000-8000-000000000001:public+categories": [
"sales-tables"
]
}
{
"_links": {
"self": {
"href": "https://informer.example.com/api/mapping-set-entries"
}
},
"00000000-0000-4000-8000-000000000001:public+categories": [
"sales-tables"
]
}