Skip to content

Catalog of map layers, categories and sublegends for KDK-based applications.

The catalog service is a Feathers service exposed over REST under the API prefix (/api by default): find, get, create, update, patch and remove map to the usual HTTP verbs. Layers are stored in MongoDB, while categories and sublegends declared in the configuration files are merged into find results at runtime.

In addition, a feature service is created dynamically for every layer declaring a service (or probeService) property, exposing the layer's GeoJSON features under /{featureService}.


Health

Service status


Service health check

GET
/healthcheck

Returns the service name and its version. The version can be overridden at build time with the VERSION environment variable, and a buildNumber is added to the response when BUILD_NUMBER is set.

Responses

Service is up

application/json
JSON
{
  
"name": "katalog",
  
"version": "0.0.0",
  
"buildNumber": "42"
}

Playground

Samples


Catalog


List catalog objects

GET
/catalog

Returns a paginated list of catalog objects.

Without a type query parameter only layers are returned — the service implicitly applies type: { $nin: ['Context', 'Service', 'Category', 'Sublegend'] }. Query type=Category or type=Sublegend to retrieve the categories and sublegends injected from the configuration files, which are merged with any user-defined ones stored in MongoDB.

Any MongoDB query operator enabled on the service can be used, e.g. tags[$in][]=hydrography.

Authorizations

bearerAuth

Paste a Kalisio JWT access token to authorize requests sent through the API gateway. The service itself does not configure authentication: reached directly on its own port it answers without a token.

Type
HTTP (bearer)

Parameters

Query Parameters

type

Filter on the object type. Defaults to every layer type.

Type
string
Valid values
"BaseLayer""OverlayLayer""TerrainLayer""Category""Sublegend"
Example"OverlayLayer"
name

Exact match on the object name (i18n key).

Type
string
Example"Layers.OSM_BRIGHT"
tags[$in][]

Return the layers carrying at least one of these tags.

Type
array
Example"hydrography"
$limit

Maximum number of objects returned. $limit=0 returns only the total count — and skips the merge of the configured categories/sublegends.

Type
integer
Example10
Minimum
0
Maximum
1000
Default
1000
$skip

Number of objects to skip.

Type
integer
Example0
Minimum
0
$sort[name]

Sort on a property, 1 ascending and -1 descending.

Type
integer
Valid values
1-1
Example1
$select[]

Restrict the returned properties.

Type
array
Example"name""type""tags"
$search

Fuzzy, diacritic-insensitive search on the name and label properties.

Type
string
Example"osm"

Responses

Paginated list of catalog objects

application/json
JSON
{
  
"total": 96,
  
"limit": 1000,
  
"skip": 0,
  
"data": [
  
  
{
  
  
  
"_id": "65f1c0b5e1c2a30012a4b8d1",
  
  
  
"createdAt": "2026-08-14T09:12:33.041Z",
  
  
  
"updatedAt": "2026-08-14T09:12:33.041Z",
  
  
  
"name": "Layers.OSM_BRIGHT",
  
  
  
"type": "BaseLayer",
  
  
  
"description": "Layers.OSM_BRIGHT_DESCRIPTION",
  
  
  
"i18n": {
  
  
  
},
  
  
  
"tags": [
  
  
  
  
[
  
  
  
  
  
"street"
  
  
  
  
]
  
  
  
],
  
  
  
"icon": "streetview",
  
  
  
"iconUrl": "https://mapcache.test.kalisio.xyz/mapcache/tms/1.0.0/osm-bright@GLOBAL_WEBMERCATOR/0/0/0.png",
  
  
  
"attribution": "OpenStreetMap © OpenStreetMap contributors, ODbL license",
  
  
  
"service": "hubeau-hydro-observations",
  
  
  
"probeService": "hubeau-hydro-stations",
  
  
  
"featureLabel": "string",
  
  
  
"baseQuery": {
  
  
  
},
  
  
  
"leaflet": {
  
  
  
},
  
  
  
"cesium": {
  
  
  
},
  
  
  
"options": {
  
  
  
}
  
  
}
  
]
}

Playground

Server
Authorization
Variables
Key
Value

Samples


Create a catalog object

POST
/catalog

Creates a layer, a category or a sublegend. The name has to be unique for a given type. createdAt and updatedAt are set by the service.

Authorizations

bearerAuth

Paste a Kalisio JWT access token to authorize requests sent through the API gateway. The service itself does not configure authentication: reached directly on its own port it answers without a token.

Type
HTTP (bearer)

Request Body

application/json
JSON
{
  
"name": "Layers.OSM_BRIGHT",
  
"type": "BaseLayer",
  
"description": "Layers.OSM_BRIGHT_DESCRIPTION",
  
"i18n": {
  
},
  
"tags": [
  
  
[
  
  
  
"street"
  
  
]
  
],
  
"icon": "streetview",
  
"iconUrl": "https://mapcache.test.kalisio.xyz/mapcache/tms/1.0.0/osm-bright@GLOBAL_WEBMERCATOR/0/0/0.png",
  
"attribution": "OpenStreetMap © OpenStreetMap contributors, ODbL license",
  
"service": "hubeau-hydro-observations",
  
"probeService": "hubeau-hydro-stations",
  
"featureLabel": "string",
  
"baseQuery": {
  
},
  
"leaflet": {
  
},
  
"cesium": {
  
},
  
"options": {
  
}
}

Responses

The created object

application/json
JSON
{
  
"_id": "65f1c0b5e1c2a30012a4b8d1",
  
"createdAt": "2026-08-14T09:12:33.041Z",
  
"updatedAt": "2026-08-14T09:12:33.041Z",
  
"name": "Layers.OSM_BRIGHT",
  
"type": "BaseLayer",
  
"description": "Layers.OSM_BRIGHT_DESCRIPTION",
  
"i18n": {
  
},
  
"tags": [
  
  
[
  
  
  
"street"
  
  
]
  
],
  
"icon": "streetview",
  
"iconUrl": "https://mapcache.test.kalisio.xyz/mapcache/tms/1.0.0/osm-bright@GLOBAL_WEBMERCATOR/0/0/0.png",
  
"attribution": "OpenStreetMap © OpenStreetMap contributors, ODbL license",
  
"service": "hubeau-hydro-observations",
  
"probeService": "hubeau-hydro-stations",
  
"featureLabel": "string",
  
"baseQuery": {
  
},
  
"leaflet": {
  
},
  
"cesium": {
  
},
  
"options": {
  
}
}

Playground

Server
Authorization
Body

Samples


Read a catalog object

GET
/catalog/{id}

Authorizations

bearerAuth

Paste a Kalisio JWT access token to authorize requests sent through the API gateway. The service itself does not configure authentication: reached directly on its own port it answers without a token.

Type
HTTP (bearer)

Responses

The requested object

application/json
JSON
{
  
"_id": "65f1c0b5e1c2a30012a4b8d1",
  
"createdAt": "2026-08-14T09:12:33.041Z",
  
"updatedAt": "2026-08-14T09:12:33.041Z",
  
"name": "Layers.OSM_BRIGHT",
  
"type": "BaseLayer",
  
"description": "Layers.OSM_BRIGHT_DESCRIPTION",
  
"i18n": {
  
},
  
"tags": [
  
  
[
  
  
  
"street"
  
  
]
  
],
  
"icon": "streetview",
  
"iconUrl": "https://mapcache.test.kalisio.xyz/mapcache/tms/1.0.0/osm-bright@GLOBAL_WEBMERCATOR/0/0/0.png",
  
"attribution": "OpenStreetMap © OpenStreetMap contributors, ODbL license",
  
"service": "hubeau-hydro-observations",
  
"probeService": "hubeau-hydro-stations",
  
"featureLabel": "string",
  
"baseQuery": {
  
},
  
"leaflet": {
  
},
  
"cesium": {
  
},
  
"options": {
  
}
}

Playground

Server
Authorization

Samples


Replace a catalog object

PUT
/catalog/{id}

Replaces the whole object. This is the operation used on startup to refresh the layers declared in the configuration files. Renaming a layer also updates the categories and contexts referencing it.

Authorizations

bearerAuth

Paste a Kalisio JWT access token to authorize requests sent through the API gateway. The service itself does not configure authentication: reached directly on its own port it answers without a token.

Type
HTTP (bearer)

Request Body

application/json
JSON
{
  
"name": "Layers.OSM_BRIGHT",
  
"type": "BaseLayer",
  
"description": "Layers.OSM_BRIGHT_DESCRIPTION",
  
"i18n": {
  
},
  
"tags": [
  
  
[
  
  
  
"street"
  
  
]
  
],
  
"icon": "streetview",
  
"iconUrl": "https://mapcache.test.kalisio.xyz/mapcache/tms/1.0.0/osm-bright@GLOBAL_WEBMERCATOR/0/0/0.png",
  
"attribution": "OpenStreetMap © OpenStreetMap contributors, ODbL license",
  
"service": "hubeau-hydro-observations",
  
"probeService": "hubeau-hydro-stations",
  
"featureLabel": "string",
  
"baseQuery": {
  
},
  
"leaflet": {
  
},
  
"cesium": {
  
},
  
"options": {
  
}
}

Responses

The updated object

application/json
JSON
{
  
"_id": "65f1c0b5e1c2a30012a4b8d1",
  
"createdAt": "2026-08-14T09:12:33.041Z",
  
"updatedAt": "2026-08-14T09:12:33.041Z",
  
"name": "Layers.OSM_BRIGHT",
  
"type": "BaseLayer",
  
"description": "Layers.OSM_BRIGHT_DESCRIPTION",
  
"i18n": {
  
},
  
"tags": [
  
  
[
  
  
  
"street"
  
  
]
  
],
  
"icon": "streetview",
  
"iconUrl": "https://mapcache.test.kalisio.xyz/mapcache/tms/1.0.0/osm-bright@GLOBAL_WEBMERCATOR/0/0/0.png",
  
"attribution": "OpenStreetMap © OpenStreetMap contributors, ODbL license",
  
"service": "hubeau-hydro-observations",
  
"probeService": "hubeau-hydro-stations",
  
"featureLabel": "string",
  
"baseQuery": {
  
},
  
"leaflet": {
  
},
  
"cesium": {
  
},
  
"options": {
  
}
}

Playground

Server
Authorization
Body

Samples


Remove a catalog object

DELETE
/catalog/{id}

Removes the object and drops its name from the categories, contexts and projects referencing it.

Authorizations

bearerAuth

Paste a Kalisio JWT access token to authorize requests sent through the API gateway. The service itself does not configure authentication: reached directly on its own port it answers without a token.

Type
HTTP (bearer)

Responses

The removed object

application/json
JSON
{
  
"_id": "65f1c0b5e1c2a30012a4b8d1",
  
"createdAt": "2026-08-14T09:12:33.041Z",
  
"updatedAt": "2026-08-14T09:12:33.041Z",
  
"name": "Layers.OSM_BRIGHT",
  
"type": "BaseLayer",
  
"description": "Layers.OSM_BRIGHT_DESCRIPTION",
  
"i18n": {
  
},
  
"tags": [
  
  
[
  
  
  
"street"
  
  
]
  
],
  
"icon": "streetview",
  
"iconUrl": "https://mapcache.test.kalisio.xyz/mapcache/tms/1.0.0/osm-bright@GLOBAL_WEBMERCATOR/0/0/0.png",
  
"attribution": "OpenStreetMap © OpenStreetMap contributors, ODbL license",
  
"service": "hubeau-hydro-observations",
  
"probeService": "hubeau-hydro-stations",
  
"featureLabel": "string",
  
"baseQuery": {
  
},
  
"leaflet": {
  
},
  
"cesium": {
  
},
  
"options": {
  
}
}

Playground

Server
Authorization

Samples


Update some properties of a catalog object

PATCH
/catalog/{id}

Authorizations

bearerAuth

Paste a Kalisio JWT access token to authorize requests sent through the API gateway. The service itself does not configure authentication: reached directly on its own port it answers without a token.

Type
HTTP (bearer)

Request Body

application/json
JSON
{
}

Responses

The updated object

application/json
JSON
{
  
"_id": "65f1c0b5e1c2a30012a4b8d1",
  
"createdAt": "2026-08-14T09:12:33.041Z",
  
"updatedAt": "2026-08-14T09:12:33.041Z",
  
"name": "Layers.OSM_BRIGHT",
  
"type": "BaseLayer",
  
"description": "Layers.OSM_BRIGHT_DESCRIPTION",
  
"i18n": {
  
},
  
"tags": [
  
  
[
  
  
  
"street"
  
  
]
  
],
  
"icon": "streetview",
  
"iconUrl": "https://mapcache.test.kalisio.xyz/mapcache/tms/1.0.0/osm-bright@GLOBAL_WEBMERCATOR/0/0/0.png",
  
"attribution": "OpenStreetMap © OpenStreetMap contributors, ODbL license",
  
"service": "hubeau-hydro-observations",
  
"probeService": "hubeau-hydro-stations",
  
"featureLabel": "string",
  
"baseQuery": {
  
},
  
"leaflet": {
  
},
  
"cesium": {
  
},
  
"options": {
  
}
}

Playground

Server
Authorization
Body

Samples


Features

GeoJSON features of the layers declaring a service


List the features of a layer

GET
/{featureService}

Feature services are created dynamically, one per layer declaring a service (or probeService) property — the path segment is the value of that property, e.g. hubeau-hydro-observations or admin-express. Query the catalog with $select[]=service to list the ones available on a given instance.

These services are paginated with a default and maximum page size of 5000.

Authorizations

bearerAuth

Paste a Kalisio JWT access token to authorize requests sent through the API gateway. The service itself does not configure authentication: reached directly on its own port it answers without a token.

Type
HTTP (bearer)

Parameters

Path Parameters

featureService*

The layer's service property.

Type
string
Required
Example"admin-express"

Query Parameters

$limit

Maximum number of features returned.

Type
integer
Example10
Minimum
0
Maximum
5000
Default
5000
$skip

Number of features to skip.

Type
integer
Example0
Minimum
0

Responses

Paginated list of GeoJSON features

application/json
JSON
{
  
"total": 34968,
  
"limit": 5000,
  
"skip": 0,
  
"data": [
  
  
{
  
  
  
"_id": "65f1c0b5e1c2a30012a4b8f7",
  
  
  
"type": "string",
  
  
  
"geometry": {
  
  
  
  
"type": "string",
  
  
  
  
"coordinates": [
  
  
  
  
  
1.9373,
  
  
  
  
  
43.2996
  
  
  
  
]
  
  
  
},
  
  
  
"properties": {
  
  
  
},
  
  
  
"time": "2026-08-14T09:00:00.000Z"
  
  
}
  
]
}

Playground

Server
Authorization
Variables
Key
Value

Samples