Skip to main content
Version: 2.0.0

Portal Backend API

Requests need a Bearer token. See Authentication for how to get a token.

API host​

External clients call the API on the management host:

https://management.<your-domain>/v1

All paths start with /v1.

Typical responses​

StatusMeaning
401 UnauthorizedThe token is missing, expired or invalid, comes from another realm, or does not come from the api-access client
403 ForbiddenThe token is valid, but the user does not have the permission for the request. The gateway also returns 403 for a path under /v1 that the API does not have
404 Not FoundThe requested resource does not exist, or the path does not start with /v1

When the gateway rejects a token, the 401 response is an HTML page, not JSON.

OpenAPI reference​

CIVITAS/CORE Data Management API (2.0.0)

Download OpenAPI specification:Download

Smart city data management REST API

REST API for the CIVITAS/CORE smart city data management platform. Manages datasets, data sources, data structures, users, groups, roles, and permissions.

Assignments

Role assignment management endpoints

List all assignments

Returns a paginated, filterable list of assignments. Supports sorting and specification-based filtering.

Authorizations:
oauth2
query Parameters
page
integer >= 0
Default: 0

Zero-based page index (0..N)

size
integer >= 1
Default: 20

The size of the page to be returned

sort
Array of strings
Default: "createdAt,DESC"

Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.

id
string
Example: id=1,2,3

Filter by one or more IDs (comma-separated).

createdAtFrom
string <date-time>
Example: createdAtFrom=2024-01-01T00:00:00Z

Filter by creation date greater than or equal to this value (ISO 8601).

createdAtTo
string <date-time>
Example: createdAtTo=2024-12-31T23:59:59Z

Filter by creation date less than or equal to this value (ISO 8601).

modifiedAtFrom
string <date-time>
Example: modifiedAtFrom=2024-01-01T00:00:00Z

Filter by modification date greater than or equal to this value (ISO 8601).

modifiedAtTo
string <date-time>
Example: modifiedAtTo=2024-12-31T23:59:59Z

Filter by modification date less than or equal to this value (ISO 8601).

roleId
string
Example: roleId=role-123

Filter by role ID (exact match).

userId
string
Example: userId=user-456

Filter by user ID (exact match).

groupId
string
Example: groupId=group-789

Filter by group ID (exact match).

scopeId
string
Example: scopeId=scope-101112

Filter by scope ID (exact match).

scopeType
string
Example: scopeType=DATASET

Filter by scope type (exact match). One of: TENANT, DATASET, DATASOURCE, DATASTRUCTURE, DATAPOOL.

roleType
string
Example: roleType=DATA

Filter by role type (exact match). One of: SYSTEM, DATA.

q
string
Example: q=admin

Search in role name, role description, or group name (partial match, case-insensitive).

Responses

Response samples

Content type
application/json
{
  • "content": [
    ],
  • "empty": true,
  • "first": true,
  • "last": true,
  • "number": 0,
  • "numberOfElements": 0,
  • "pageable": {
    },
  • "size": 0,
  • "sort": {
    },
  • "totalElements": 0,
  • "totalPages": 0
}

Create a new assignment

Creates a new assignment and returns it with a Location header pointing to the new assignment URI.

Authorizations:
oauth2
Request Body schema: application/json
required
groupId
required
string <uuid>
roleId
required
string <uuid>
scopeId
string <uuid>
scopeType
string
Enum: "TENANT" "DATASTRUCTURE" "DATASOURCE" "DATASET" "DATAPOOL"

Responses

Request samples

Content type
application/json
{
  • "groupId": "eb54e96e-21b8-4f54-9cd4-80fccbd06f55",
  • "roleId": "7382d58e-652a-4905-b7c9-bcca1e0e5391",
  • "scopeId": "65fafe40-a220-4dd7-8724-4598b81c0643",
  • "scopeType": "TENANT"
}

Response samples

Content type
application/json
{
  • "createdAt": "2025-06-15T10:30:00",
  • "group": {
    },
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "modifiedAt": "2025-06-15T14:22:00",
  • "role": {
    },
  • "scope": {
    },
  • "scopeType": "DATASET"
}

Delete a assignment

Permanently deletes a assignment by its UUID.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>

Responses

Response samples

Content type
application/problem+json
Example
{
  • "detail": "Authentication required",
  • "instance": "/v1/datasets",
  • "status": 401,
  • "title": "Unauthorized",
  • "type": "urn:civitas:error:UNAUTHORIZED"
}

Get assignment by ID

Returns a single assignment identified by its UUID.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "createdAt": "2025-06-15T10:30:00",
  • "group": {
    },
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "modifiedAt": "2025-06-15T14:22:00",
  • "role": {
    },
  • "scope": {
    },
  • "scopeType": "DATASET"
}

Groups

Group management API

List all groups

Returns a paginated, filterable list of groups. Supports sorting and specification-based filtering.

Authorizations:
oauth2
query Parameters
page
integer >= 0
Default: 0

Zero-based page index (0..N)

size
integer >= 1
Default: 20

The size of the page to be returned

sort
Array of strings
Default: "createdAt,DESC"

Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.

id
string
Example: id=1,2,3

Filter by one or more IDs (comma-separated).

createdAtFrom
string <date-time>
Example: createdAtFrom=2024-01-01T00:00:00Z

Filter by creation date greater than or equal to this value (ISO 8601).

createdAtTo
string <date-time>
Example: createdAtTo=2024-12-31T23:59:59Z

Filter by creation date less than or equal to this value (ISO 8601).

modifiedAtFrom
string <date-time>
Example: modifiedAtFrom=2024-01-01T00:00:00Z

Filter by modification date greater than or equal to this value (ISO 8601).

modifiedAtTo
string <date-time>
Example: modifiedAtTo=2024-12-31T23:59:59Z

Filter by modification date less than or equal to this value (ISO 8601).

name
string
Example: name=Engineering

Filter by name (partial match, case-insensitive).

description
string
Example: description=Development team

Filter by description (partial match, case-insensitive).

contactUserId
string
Example: contactUserId=user-123

Filter by contact user ID (exact match).

memberIds
string
Example: memberIds=user-456

Filter by member user ID(s), comma-separated.

q
string
Example: q=team

Search in name or description (partial match, case-insensitive).

Responses

Response samples

Content type
application/json
{
  • "content": [
    ],
  • "empty": true,
  • "first": true,
  • "last": true,
  • "number": 0,
  • "numberOfElements": 0,
  • "pageable": {
    },
  • "size": 0,
  • "sort": {
    },
  • "totalElements": 0,
  • "totalPages": 0
}

Create a new group

Creates a new group and returns it with a Location header pointing to the new group URI.

Authorizations:
oauth2
Request Body schema: application/json
required
contactUserId
string <uuid>

ID of the primary contact user

description
string
memberIds
Array of strings <uuid> [ items <uuid > ]

IDs of users to add as group members

name
required
string non-empty

Responses

Request samples

Content type
application/json
{
  • "contactUserId": "51bacfca-7fc8-4660-8192-15c9f8dde461",
  • "description": "Responsible for urban mobility datasets",
  • "memberIds": [
    ],
  • "name": "City Data Team"
}

Response samples

Content type
application/json
{
  • "assignments": [
    ],
  • "contactUser": {
    },
  • "createdAt": "2025-06-15T10:30:00",
  • "datapools": [
    ],
  • "description": "Responsible for urban mobility datasets",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "members": [
    ],
  • "modifiedAt": "2025-06-15T14:22:00",
  • "name": "City Data Team"
}

Replace group assignments

Replaces all role assignments for a group using diff-based semantics.

Authorizations:
oauth2
path Parameters
groupId
required
string <uuid>
Request Body schema: application/json
required
Array
roleId
required
string <uuid>
scopeId
string <uuid>
scopeType
string
Enum: "TENANT" "DATASTRUCTURE" "DATASOURCE" "DATASET" "DATAPOOL"

Responses

Request samples

Content type
application/json
[
  • {
    }
]

Response samples

Content type
application/json
{
  • "assignments": [
    ],
  • "contactUser": {
    },
  • "createdAt": "2025-06-15T10:30:00",
  • "datapools": [
    ],
  • "description": "Responsible for urban mobility datasets",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "members": [
    ],
  • "modifiedAt": "2025-06-15T14:22:00",
  • "name": "City Data Team"
}

Delete a group

Permanently deletes a group by its UUID.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>

Responses

Response samples

Content type
application/problem+json
Example
{
  • "detail": "Authentication required",
  • "instance": "/v1/datasets",
  • "status": 401,
  • "title": "Unauthorized",
  • "type": "urn:civitas:error:UNAUTHORIZED"
}

Get group by ID

Returns a single group identified by its UUID.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "assignments": [
    ],
  • "contactUser": {
    },
  • "createdAt": "2025-06-15T10:30:00",
  • "datapools": [
    ],
  • "description": "Responsible for urban mobility datasets",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "members": [
    ],
  • "modifiedAt": "2025-06-15T14:22:00",
  • "name": "City Data Team"
}

Partially update a group

Applies a partial JSON update to an existing group. Only provided fields are modified.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>
Request Body schema: application/json
required
contactUserId
string <uuid>

ID of the primary contact user

description
string
memberIds
Array of strings <uuid> [ items <uuid > ]

IDs of users to add as group members

name
string non-empty

Responses

Request samples

Content type
application/json
{
  • "contactUserId": "51bacfca-7fc8-4660-8192-15c9f8dde461",
  • "description": "Responsible for urban mobility datasets",
  • "memberIds": [
    ],
  • "name": "City Data Team"
}

Response samples

Content type
application/json
{
  • "assignments": [
    ],
  • "contactUser": {
    },
  • "createdAt": "2025-06-15T10:30:00",
  • "datapools": [
    ],
  • "description": "Responsible for urban mobility datasets",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "members": [
    ],
  • "modifiedAt": "2025-06-15T14:22:00",
  • "name": "City Data Team"
}

Replace a group

Fully replaces an existing group with the provided input.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>
Request Body schema: application/json
required
contactUserId
string <uuid>

ID of the primary contact user

description
string
memberIds
Array of strings <uuid> [ items <uuid > ]

IDs of users to add as group members

name
required
string non-empty

Responses

Request samples

Content type
application/json
{
  • "contactUserId": "51bacfca-7fc8-4660-8192-15c9f8dde461",
  • "description": "Responsible for urban mobility datasets",
  • "memberIds": [
    ],
  • "name": "City Data Team"
}

Response samples

Content type
application/json
{
  • "assignments": [
    ],
  • "contactUser": {
    },
  • "createdAt": "2025-06-15T10:30:00",
  • "datapools": [
    ],
  • "description": "Responsible for urban mobility datasets",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "members": [
    ],
  • "modifiedAt": "2025-06-15T14:22:00",
  • "name": "City Data Team"
}

Roles

Role management endpoints

List all roles

Returns a paginated, filterable list of roles. Supports sorting and specification-based filtering.

Authorizations:
oauth2
query Parameters
page
integer >= 0
Default: 0

Zero-based page index (0..N)

size
integer >= 1
Default: 20

The size of the page to be returned

sort
Array of strings
Default: "createdAt,DESC"

Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.

id
string
Example: id=1,2,3

Filter by one or more IDs (comma-separated).

createdAtFrom
string <date-time>
Example: createdAtFrom=2024-01-01T00:00:00Z

Filter by creation date greater than or equal to this value (ISO 8601).

createdAtTo
string <date-time>
Example: createdAtTo=2024-12-31T23:59:59Z

Filter by creation date less than or equal to this value (ISO 8601).

modifiedAtFrom
string <date-time>
Example: modifiedAtFrom=2024-01-01T00:00:00Z

Filter by modification date greater than or equal to this value (ISO 8601).

modifiedAtTo
string <date-time>
Example: modifiedAtTo=2024-12-31T23:59:59Z

Filter by modification date less than or equal to this value (ISO 8601).

name
string
Example: name=admin

Filter by name (partial match, case-insensitive).

description
string
Example: description=Full access

Filter by description (partial match, case-insensitive).

roleType
string
Example: roleType=SYSTEM

Filter by role type (exact match, comma-separated for multiple).

q
string
Example: q=admin

Search in name or description (partial match, case-insensitive).

readonly
boolean
Example: readonly=true

Filter by readonly flag (exact match).

Responses

Response samples

Content type
application/json
{
  • "content": [
    ],
  • "empty": true,
  • "first": true,
  • "last": true,
  • "number": 0,
  • "numberOfElements": 0,
  • "pageable": {
    },
  • "size": 0,
  • "sort": {
    },
  • "totalElements": 0,
  • "totalPages": 0
}

Create a new role

Creates a new role and returns it with a Location header pointing to the new role URI.

Authorizations:
oauth2
Request Body schema: application/json
required
description
string
name
required
string non-empty
permissionIds
Array of strings <uuid> [ items <uuid > ]

IDs of permissions to assign to this role

readonly
boolean

Whether this role can be modified, defaults to false

roleType
required
string
Enum: "SYSTEM" "DATA"

Responses

Request samples

Content type
application/json
{
  • "description": "Manages datasets and data sources",
  • "name": "Data Manager",
  • "permissionIds": [
    ],
  • "readonly": true,
  • "roleType": "DATA"
}

Response samples

Content type
application/json
{
  • "createdAt": "2025-06-15T10:30:00",
  • "datapools": [
    ],
  • "description": "Manages datasets and data sources",
  • "groupCount": 3,
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "modifiedAt": "2025-06-15T14:22:00",
  • "name": "Data Manager",
  • "permissions": [
    ],
  • "readonly": false,
  • "roleType": "DATA",
  • "userCount": 12
}

Delete a role

Permanently deletes a role by its UUID.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>

Responses

Response samples

Content type
application/problem+json
Example
{
  • "detail": "Authentication required",
  • "instance": "/v1/datasets",
  • "status": 401,
  • "title": "Unauthorized",
  • "type": "urn:civitas:error:UNAUTHORIZED"
}

Get role by ID

Returns a single role identified by its UUID.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "createdAt": "2025-06-15T10:30:00",
  • "datapools": [
    ],
  • "description": "Manages datasets and data sources",
  • "groupCount": 3,
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "modifiedAt": "2025-06-15T14:22:00",
  • "name": "Data Manager",
  • "permissions": [
    ],
  • "readonly": false,
  • "roleType": "DATA",
  • "userCount": 12
}

Partially update a role

Applies a partial JSON update to an existing role. Only provided fields are modified.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>
Request Body schema: application/json
required
description
string
name
string non-empty
permissionIds
Array of strings <uuid> [ items <uuid > ]

IDs of permissions to assign to this role

readonly
boolean

Whether this role can be modified, defaults to false

roleType
string
Enum: "SYSTEM" "DATA"

Responses

Request samples

Content type
application/json
{
  • "description": "Manages datasets and data sources",
  • "name": "Data Manager",
  • "permissionIds": [
    ],
  • "readonly": true,
  • "roleType": "DATA"
}

Response samples

Content type
application/json
{
  • "createdAt": "2025-06-15T10:30:00",
  • "datapools": [
    ],
  • "description": "Manages datasets and data sources",
  • "groupCount": 3,
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "modifiedAt": "2025-06-15T14:22:00",
  • "name": "Data Manager",
  • "permissions": [
    ],
  • "readonly": false,
  • "roleType": "DATA",
  • "userCount": 12
}

Replace a role

Fully replaces an existing role with the provided input.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>
Request Body schema: application/json
required
description
string
name
required
string non-empty
permissionIds
Array of strings <uuid> [ items <uuid > ]

IDs of permissions to assign to this role

readonly
boolean

Whether this role can be modified, defaults to false

roleType
required
string
Enum: "SYSTEM" "DATA"

Responses

Request samples

Content type
application/json
{
  • "description": "Manages datasets and data sources",
  • "name": "Data Manager",
  • "permissionIds": [
    ],
  • "readonly": true,
  • "roleType": "DATA"
}

Response samples

Content type
application/json
{
  • "createdAt": "2025-06-15T10:30:00",
  • "datapools": [
    ],
  • "description": "Manages datasets and data sources",
  • "groupCount": 3,
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "modifiedAt": "2025-06-15T14:22:00",
  • "name": "Data Manager",
  • "permissions": [
    ],
  • "readonly": false,
  • "roleType": "DATA",
  • "userCount": 12
}

Permissions

Permission management endpoints

List all permissions

Returns a filterable, sorted list of permissions.

Authorizations:
oauth2
query Parameters
required
object (Sort)
id
string
Example: id=1,2,3

Filter by one or more IDs (comma-separated).

createdAtFrom
string <date-time>
Example: createdAtFrom=2024-01-01T00:00:00Z

Filter by creation date greater than or equal to this value (ISO 8601).

createdAtTo
string <date-time>
Example: createdAtTo=2024-12-31T23:59:59Z

Filter by creation date less than or equal to this value (ISO 8601).

modifiedAtFrom
string <date-time>
Example: modifiedAtFrom=2024-01-01T00:00:00Z

Filter by modification date greater than or equal to this value (ISO 8601).

modifiedAtTo
string <date-time>
Example: modifiedAtTo=2024-12-31T23:59:59Z

Filter by modification date less than or equal to this value (ISO 8601).

name
string
Example: name=read

Filter by name (partial match, case-insensitive).

description
string
Example: description=Allows read access

Filter by description (partial match, case-insensitive).

q
string
Example: q=read

Search in name or description (partial match, case-insensitive).

permissionType
string
Enum: "SYSTEM" "DATA"

Filter by permission type (exact match).

category
string
Enum: "TENANT_ADMINISTRATION" "DATA"

Filter by category (exact match).

source
string
Enum: "INTERNAL" "DATASET_DASHBOARD"

Filter by source (exact match).

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get permission by ID

Returns a single permission identified by its UUID.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "category": "DATASET",
  • "createdAt": "2025-06-15T10:30:00",
  • "description": "Read access to datasets",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "modifiedAt": "2025-06-15T14:22:00",
  • "name": "DATASET_READ",
  • "permissionType": "DATA"
}

DataSets

Dataset management endpoints

List all datasets

Returns a paginated, filterable list of datasets. Supports sorting and specification-based filtering.

Authorizations:
oauth2
query Parameters
page
integer >= 0
Default: 0

Zero-based page index (0..N)

size
integer >= 1
Default: 20

The size of the page to be returned

sort
Array of strings
Default: "createdAt,DESC"

Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.

id
string
Example: id=1,2,3

Filter by one or more IDs (comma-separated).

createdAtFrom
string <date-time>
Example: createdAtFrom=2024-01-01T00:00:00Z

Filter by creation date greater than or equal to this value (ISO 8601).

createdAtTo
string <date-time>
Example: createdAtTo=2024-12-31T23:59:59Z

Filter by creation date less than or equal to this value (ISO 8601).

modifiedAtFrom
string <date-time>
Example: modifiedAtFrom=2024-01-01T00:00:00Z

Filter by modification date greater than or equal to this value (ISO 8601).

modifiedAtTo
string <date-time>
Example: modifiedAtTo=2024-12-31T23:59:59Z

Filter by modification date less than or equal to this value (ISO 8601).

name
string
Example: name=sensor-data

Filter by name (partial match, case-insensitive).

description
string
Example: description=Temperature sensor readings

Filter by description (partial match, case-insensitive).

q
string
Example: q=sensor

Search in name or description (partial match, case-insensitive).

datapoolIds
string
Example: datapoolIds=550e8400-e29b-41d4-a716-446655440000,3fa85f64-5717-4562-b3fc-2c963f66afa6

Filter by datapool IDs (comma-separated UUIDs, IN-clause). Returns datasets assigned to any of the listed datapools.

includePendingDelete
boolean
Default: false
Example: includePendingDelete=true

Include datasets with pendingSagaType DELETE. Defaults to false.

Responses

Response samples

Content type
application/json
{
  • "content": [
    ],
  • "empty": true,
  • "first": true,
  • "last": true,
  • "number": 0,
  • "numberOfElements": 0,
  • "pageable": {
    },
  • "size": 0,
  • "sort": {
    },
  • "totalElements": 0,
  • "totalPages": 0
}

Create a new dataset

Creates a new dataset and returns it with a Location header pointing to the new dataset URI.

Authorizations:
oauth2
Request Body schema: application/json
required
Array of objects (AssignmentScopedInputDTO) unique
datapoolId
string <uuid>

ID of the datapool this dataset belongs to.

description
required
string non-empty
name
required
string [ 3 .. 255 ] characters
Array of objects (NamedApiInputDTO)

Named API endpoints exposed by this dataset. Each entry produces one APISIX route after release.

openDataAccess
boolean

Whether this dataset is publicly accessible, defaults to false

Responses

Request samples

Content type
application/json
{
  • "assignments": [
    ],
  • "datapoolId": "c1a42405-0a1d-43d8-8252-dbf4e1fe39a8",
  • "description": "string",
  • "name": "string",
  • "namedApis": [
    ],
  • "openDataAccess": true
}

Response samples

Content type
application/json
{
  • "createdAt": "2025-06-15T10:30:00",
  • "createdBy": {
    },
  • "dataSetStatus": "DRAFT",
  • "datapool": {
    },
  • "description": "Hourly vehicle counts at major intersections",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "modifiedAt": "2025-06-15T14:22:00",
  • "name": "Traffic Count 2025",
  • "namedApis": [],
  • "openDataAccess": true,
  • "pendingSagaType": "CREATE",
  • "pipelines": [
    ],
  • "provisioned": true,
}

Delete a dataset

Deletes a dataset (204 No Content). A never-provisioned dataset is removed immediately. A dataset that still holds a provisioned sink is torn down asynchronously via a DELETE saga and removed once the saga completes. An AVAILABLE dataset cannot be deleted directly — unrelease it first (POST /{id}/unrelease).

Authorizations:
oauth2
path Parameters
id
required
string <uuid>

Responses

Response samples

Content type
application/problem+json
Example
{
  • "detail": "Authentication required",
  • "instance": "/v1/datasets",
  • "status": 401,
  • "title": "Unauthorized",
  • "type": "urn:civitas:error:UNAUTHORIZED"
}

Get dataset by ID

Returns a single dataset identified by its UUID.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "createdAt": "2025-06-15T10:30:00",
  • "createdBy": {
    },
  • "dataSetStatus": "DRAFT",
  • "datapool": {
    },
  • "description": "Hourly vehicle counts at major intersections",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "modifiedAt": "2025-06-15T14:22:00",
  • "name": "Traffic Count 2025",
  • "namedApis": [],
  • "openDataAccess": true,
  • "pendingSagaType": "CREATE",
  • "pipelines": [
    ],
  • "provisioned": true,
}

Partially update a dataset

Applies a partial JSON update to an existing dataset. Only provided fields are modified.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>
Request Body schema: application/json
required
Array of objects (AssignmentScopedInputDTO) unique
datapoolId
string <uuid>

ID of the datapool this dataset belongs to.

description
string non-empty
name
string [ 3 .. 255 ] characters
Array of objects (NamedApiInputDTO)

Named API endpoints exposed by this dataset. Each entry produces one APISIX route after release.

openDataAccess
boolean

Whether this dataset is publicly accessible, defaults to false

Responses

Request samples

Content type
application/json
{
  • "assignments": [
    ],
  • "datapoolId": "c1a42405-0a1d-43d8-8252-dbf4e1fe39a8",
  • "description": "string",
  • "name": "string",
  • "namedApis": [
    ],
  • "openDataAccess": true
}

Response samples

Content type
application/json
{
  • "createdAt": "2025-06-15T10:30:00",
  • "createdBy": {
    },
  • "dataSetStatus": "DRAFT",
  • "datapool": {
    },
  • "description": "Hourly vehicle counts at major intersections",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "modifiedAt": "2025-06-15T14:22:00",
  • "name": "Traffic Count 2025",
  • "namedApis": [],
  • "openDataAccess": true,
  • "pendingSagaType": "CREATE",
  • "pipelines": [
    ],
  • "provisioned": true,
}

Update a DRAFT dataset

Updates a dataset in DRAFT status. For released datasets (READY or AVAILABLE), use PATCH /datasets/{id}/released/meta instead.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>
Request Body schema: application/json
required
Array of objects (AssignmentScopedInputDTO) unique
datapoolId
string <uuid>

ID of the datapool this dataset belongs to.

description
required
string non-empty
name
required
string [ 3 .. 255 ] characters
Array of objects (NamedApiInputDTO)

Named API endpoints exposed by this dataset. Each entry produces one APISIX route after release.

openDataAccess
boolean

Whether this dataset is publicly accessible, defaults to false

Responses

Request samples

Content type
application/json
{
  • "assignments": [
    ],
  • "datapoolId": "c1a42405-0a1d-43d8-8252-dbf4e1fe39a8",
  • "description": "string",
  • "name": "string",
  • "namedApis": [
    ],
  • "openDataAccess": true
}

Response samples

Content type
application/json
{
  • "createdAt": "2025-06-15T10:30:00",
  • "createdBy": {
    },
  • "dataSetStatus": "DRAFT",
  • "datapool": {
    },
  • "description": "Hourly vehicle counts at major intersections",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "modifiedAt": "2025-06-15T14:22:00",
  • "name": "Traffic Count 2025",
  • "namedApis": [],
  • "openDataAccess": true,
  • "pendingSagaType": "CREATE",
  • "pipelines": [
    ],
  • "provisioned": true,
}

List a dataset's published named APIs

Returns the named APIs of a PUBLISHED dataset (lifecycle status AVAILABLE), including the server-built previewUrl. Per concept #1379 only active published APIs are discoverable: a DRAFT/READY dataset returns an empty list. Respects the caller's X-Allowed-Scope-Ids; unknown or out-of-scope datasets return 404.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>

Responses

Response samples

Content type
application/json
[]

Get assignments

Returns all role assignments scoped to this dataset.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Update READY dataset metadata

Applies a JSON merge patch to the metadata of a dataset in READY status, requiring only DATASET_UPDATE — unlike PATCH /datasets/{id}/released/meta, which also requires DATASET_RELEASE. An omitted field keeps its value. Rejects DRAFT and AVAILABLE datasets. A field that is not metadata, such as namedApis, answers 400 — unrelease the dataset and edit it in DRAFT.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>
Request Body schema: application/json
required
Array of objects (AssignmentScopedInputDTO) unique
datapoolId
string <uuid>

ID of the datapool this dataset belongs to.

description
string non-empty
name
string [ 3 .. 255 ] characters
openDataAccess
boolean

Whether this dataset is publicly accessible, defaults to false

Responses

Request samples

Content type
application/json
{
  • "assignments": [
    ],
  • "datapoolId": "c1a42405-0a1d-43d8-8252-dbf4e1fe39a8",
  • "description": "string",
  • "name": "string",
  • "openDataAccess": true
}

Response samples

Content type
application/json
{
  • "createdAt": "2025-06-15T10:30:00",
  • "createdBy": {
    },
  • "dataSetStatus": "DRAFT",
  • "datapool": {
    },
  • "description": "Hourly vehicle counts at major intersections",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "modifiedAt": "2025-06-15T14:22:00",
  • "name": "Traffic Count 2025",
  • "namedApis": [],
  • "openDataAccess": true,
  • "pendingSagaType": "CREATE",
  • "pipelines": [
    ],
  • "provisioned": true,
}

Release

Transitions the entity from DRAFT to AVAILABLE status.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "createdAt": "2025-06-15T10:30:00",
  • "createdBy": {
    },
  • "dataSetStatus": "DRAFT",
  • "datapool": {
    },
  • "description": "Hourly vehicle counts at major intersections",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "modifiedAt": "2025-06-15T14:22:00",
  • "name": "Traffic Count 2025",
  • "namedApis": [],
  • "openDataAccess": true,
  • "pendingSagaType": "CREATE",
  • "pipelines": [
    ],
  • "provisioned": true,
}

Update released metadata

Applies a JSON merge patch to the metadata of a released entity. An omitted field keeps its value. A field that is not metadata answers 400, and so does null for assignments or datapoolScope. Only works on entities that are not in DRAFT status.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>
Request Body schema: application/json
required
Array of objects (AssignmentScopedInputDTO) unique
datapoolId
string <uuid>

ID of the datapool this dataset belongs to.

description
string non-empty
name
string [ 3 .. 255 ] characters
openDataAccess
boolean

Whether this dataset is publicly accessible, defaults to false

Responses

Request samples

Content type
application/json
{
  • "assignments": [
    ],
  • "datapoolId": "c1a42405-0a1d-43d8-8252-dbf4e1fe39a8",
  • "description": "string",
  • "name": "string",
  • "openDataAccess": true
}

Response samples

Content type
application/problem+json
Example
{
  • "detail": "Authentication required",
  • "instance": "/v1/datasets",
  • "status": 401,
  • "title": "Unauthorized",
  • "type": "urn:civitas:error:UNAUTHORIZED"
}

Stage a dataset

Validates the dataset's pipeline configuration, then transitions status from DRAFT to READY. The artifacts participating in its flows may still be DRAFT; release validates them.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "createdAt": "2025-06-15T10:30:00",
  • "createdBy": {
    },
  • "dataSetStatus": "DRAFT",
  • "datapool": {
    },
  • "description": "Hourly vehicle counts at major intersections",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "modifiedAt": "2025-06-15T14:22:00",
  • "name": "Traffic Count 2025",
  • "namedApis": [],
  • "openDataAccess": true,
  • "pendingSagaType": "CREATE",
  • "pipelines": [
    ],
  • "provisioned": true,
}

Unrelease

Transitions the entity from AVAILABLE back to DRAFT status.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>

Responses

Response samples

Content type
application/problem+json
Example
{
  • "detail": "Authentication required",
  • "instance": "/v1/datasets",
  • "status": 401,
  • "title": "Unauthorized",
  • "type": "urn:civitas:error:UNAUTHORIZED"
}

Unstage a dataset

Reverts the dataset from READY to DRAFT.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>

Responses

Response samples

Content type
application/problem+json
Example
{
  • "detail": "Authentication required",
  • "instance": "/v1/datasets",
  • "status": 401,
  • "title": "Unauthorized",
  • "type": "urn:civitas:error:UNAUTHORIZED"
}

Styles

Style management endpoints

List all Styles for a dataset

Authorizations:
oauth2
path Parameters
dataSetId
required
any <uuid>
query Parameters
page
integer >= 0
Default: 0

Zero-based page index (0..N)

size
integer >= 1
Default: 20

The size of the page to be returned

sort
Array of strings
Default: "createdAt,DESC"

Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.

id
string
Example: id=1,2,3

Filter by one or more IDs (comma-separated).

createdAtFrom
string <date-time>
Example: createdAtFrom=2024-01-01T00:00:00Z

Filter by creation date greater than or equal to this value (ISO 8601).

createdAtTo
string <date-time>
Example: createdAtTo=2024-12-31T23:59:59Z

Filter by creation date less than or equal to this value (ISO 8601).

modifiedAtFrom
string <date-time>
Example: modifiedAtFrom=2024-01-01T00:00:00Z

Filter by modification date greater than or equal to this value (ISO 8601).

modifiedAtTo
string <date-time>
Example: modifiedAtTo=2024-12-31T23:59:59Z

Filter by modification date less than or equal to this value (ISO 8601).

Responses

Response samples

Content type
application/json
{
  • "content": [
    ],
  • "empty": true,
  • "first": true,
  • "last": true,
  • "number": 0,
  • "numberOfElements": 0,
  • "pageable": {
    },
  • "size": 0,
  • "sort": {
    },
  • "totalElements": 0,
  • "totalPages": 0
}

Create a new Style

Authorizations:
oauth2
path Parameters
dataSetId
required
any <uuid>
Request Body schema: application/json
required
name
required
string non-empty [A-Za-z0-9_-]+
sldContent
required
string non-empty

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "sldContent": "string"
}

Response samples

Content type
application/json
{
  • "createdAt": "2025-06-15T10:30:00",
  • "dataSetId": "4d7600aa-4d53-4144-aa57-ce0c5b68b1da",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "inUse": true,
  • "modifiedAt": "2025-06-15T14:22:00",
  • "name": "string",
  • "sldContent": "string"
}

Delete a Style

Authorizations:
oauth2
path Parameters
id
required
string <uuid>
dataSetId
required
any <uuid>

Responses

Response samples

Content type
application/problem+json
Example
{
  • "detail": "A dataset and its sub-entities can only be changed while the dataset is DRAFT. Unstage or unrelease the dataset first.",
  • "instance": "/datasets/{dataSetId}/styles/{id}",
  • "status": 400,
  • "title": "Bad Request",
  • "type": "urn:civitas:error:DATASET_NOT_EDITABLE"
}

Get Style by ID

Authorizations:
oauth2
path Parameters
id
required
string <uuid>
dataSetId
required
any <uuid>

Responses

Response samples

Content type
application/json
{
  • "createdAt": "2025-06-15T10:30:00",
  • "dataSetId": "4d7600aa-4d53-4144-aa57-ce0c5b68b1da",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "inUse": true,
  • "modifiedAt": "2025-06-15T14:22:00",
  • "name": "string",
  • "sldContent": "string"
}

Partially update a style

Applies a partial JSON update to an existing style. Only provided fields are modified.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>
dataSetId
required
any <uuid>
Request Body schema: application/json
required
name
string non-empty [A-Za-z0-9_-]+
sldContent
string non-empty

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "sldContent": "string"
}

Response samples

Content type
application/json
{
  • "createdAt": "2025-06-15T10:30:00",
  • "dataSetId": "4d7600aa-4d53-4144-aa57-ce0c5b68b1da",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "inUse": true,
  • "modifiedAt": "2025-06-15T14:22:00",
  • "name": "string",
  • "sldContent": "string"
}

Replace a Style

Authorizations:
oauth2
path Parameters
id
required
string <uuid>
dataSetId
required
any <uuid>
Request Body schema: application/json
required
name
required
string non-empty [A-Za-z0-9_-]+
sldContent
required
string non-empty

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "sldContent": "string"
}

Response samples

Content type
application/json
{
  • "createdAt": "2025-06-15T10:30:00",
  • "dataSetId": "4d7600aa-4d53-4144-aa57-ce0c5b68b1da",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "inUse": true,
  • "modifiedAt": "2025-06-15T14:22:00",
  • "name": "string",
  • "sldContent": "string"
}

Mappings

First-class CORE Mapping artifacts (content stored in Model Forge)

Delete a Mapping artifact by its (logical or versioned) CORE URN

Rejected while another artifact still references the mapping — a pipeline's mappingRef, for instance. Remove that reference at the artifact holding it first; deleting a mapping a pipeline still uses would leave the pipeline pointing at nothing.

Authorizations:
oauth2
path Parameters
dataSetId
required
string <uuid>
query Parameters
urn
required
string

Responses

Response samples

Content type
application/problem+json
Example
{
  • "detail": "Authentication required",
  • "instance": "/v1/datasets",
  • "status": 401,
  • "title": "Unauthorized",
  • "type": "urn:civitas:error:UNAUTHORIZED"
}

Fetch a Mapping artifact's content by CORE URN, or list this DataSet's mappings

With urn, returns that mapping's content. Without urn, returns the URNs of every mapping of this DataSet — the only way to find one that no pipeline names.

Authorizations:
oauth2
path Parameters
dataSetId
required
string <uuid>
query Parameters
urn
string

Responses

Response samples

Content type
application/json
{ }

Create a Mapping artifact from a CORE mapping document; returns its URN pins

Authorizations:
oauth2
path Parameters
dataSetId
required
string <uuid>
Request Body schema: application/json
required
property name*
additional property
any

Responses

Request samples

Content type
application/json
{
  • "property1": null,
  • "property2": null
}

Response samples

Content type
application/json
{
  • "property1": "string",
  • "property2": "string"
}

Version an existing Mapping artifact (body carries its logicalUrn)

Authorizations:
oauth2
path Parameters
dataSetId
required
string <uuid>
Request Body schema: application/json
required
property name*
additional property
any

Responses

Request samples

Content type
application/json
{
  • "property1": null,
  • "property2": null
}

Response samples

Content type
application/json
{
  • "property1": "string",
  • "property2": "string"
}

Users

User management endpoints

List all users

Returns a paginated, filterable list of users. Supports sorting and specification-based filtering.

Authorizations:
oauth2
query Parameters
page
integer >= 0
Default: 0

Zero-based page index (0..N)

size
integer >= 1
Default: 20

The size of the page to be returned

sort
Array of strings
Default: "createdAt,DESC"

Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.

id
string
Example: id=1,2,3

Filter by one or more IDs (comma-separated).

createdAtFrom
string <date-time>
Example: createdAtFrom=2024-01-01T00:00:00Z

Filter by creation date greater than or equal to this value (ISO 8601).

createdAtTo
string <date-time>
Example: createdAtTo=2024-12-31T23:59:59Z

Filter by creation date less than or equal to this value (ISO 8601).

modifiedAtFrom
string <date-time>
Example: modifiedAtFrom=2024-01-01T00:00:00Z

Filter by modification date greater than or equal to this value (ISO 8601).

modifiedAtTo
string <date-time>
Example: modifiedAtTo=2024-12-31T23:59:59Z

Filter by modification date less than or equal to this value (ISO 8601).

firstName
string
Example: firstName=John

Filter by first name (partial match, case-insensitive).

lastName
string
Example: lastName=Doe

Filter by last name (partial match, case-insensitive).

email
string
Example: email=john.doe@example.com

Filter by email (exact match, case-insensitive).

q
string
Example: q=john doe, john@doe.com

Search in full name, or email (partial match, case-insensitive).

Responses

Response samples

Content type
application/json
{
  • "content": [
    ],
  • "empty": true,
  • "first": true,
  • "last": true,
  • "number": 0,
  • "numberOfElements": 0,
  • "pageable": {
    },
  • "size": 0,
  • "sort": {
    },
  • "totalElements": 0,
  • "totalPages": 0
}

Create a new user

Creates a new user and returns it with a Location header pointing to the new user URI.

Authorizations:
oauth2
Request Body schema: application/json
required
email
required
string <email> non-empty
firstName
required
string non-empty
lastName
required
string non-empty
phone
string
title
string
Enum: "MR" "MS" "OTHER"

Salutation, defaults to OTHER

Responses

Request samples

Content type
application/json
{
  • "email": "jane.doe@example.com",
  • "firstName": "Jane",
  • "lastName": "Doe",
  • "phone": "+49 170 1234567",
  • "title": "MS"
}

Response samples

Content type
application/json
{
  • "createdAt": "2025-06-15T10:30:00",
  • "datapools": [
    ],
  • "email": "jane.doe@example.com",
  • "firstName": "Jane",
  • "groups": [
    ],
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "lastName": "Doe",
  • "modifiedAt": "2025-06-15T14:22:00",
  • "phone": "+49 170 1234567",
  • "title": "MS"
}

Get current user

Returns the profile information of the authenticated user including assignments

Authorizations:
oauth2

Responses

Response samples

Content type
application/json
{
  • "assignments": [
    ],
  • "email": "user@example.com",
  • "firstName": "John",
  • "lastName": "Doe",
  • "title": "MS",
  • "username": "testuser"
}

Delete a user

Permanently deletes a user by its UUID.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>

Responses

Response samples

Content type
application/problem+json
Example
{
  • "detail": "Authentication required",
  • "instance": "/v1/datasets",
  • "status": 401,
  • "title": "Unauthorized",
  • "type": "urn:civitas:error:UNAUTHORIZED"
}

Get user by ID

Returns a single user identified by its UUID.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "createdAt": "2025-06-15T10:30:00",
  • "datapools": [
    ],
  • "email": "jane.doe@example.com",
  • "firstName": "Jane",
  • "groups": [
    ],
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "lastName": "Doe",
  • "modifiedAt": "2025-06-15T14:22:00",
  • "phone": "+49 170 1234567",
  • "title": "MS"
}

Partially update a user

Applies a partial JSON update to an existing user. Only provided fields are modified.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>
Request Body schema: application/json
required
email
string <email> non-empty
firstName
string non-empty
lastName
string non-empty
phone
string
title
string
Enum: "MR" "MS" "OTHER"

Salutation, defaults to OTHER

Responses

Request samples

Content type
application/json
{
  • "email": "jane.doe@example.com",
  • "firstName": "Jane",
  • "lastName": "Doe",
  • "phone": "+49 170 1234567",
  • "title": "MS"
}

Response samples

Content type
application/json
{
  • "createdAt": "2025-06-15T10:30:00",
  • "datapools": [
    ],
  • "email": "jane.doe@example.com",
  • "firstName": "Jane",
  • "groups": [
    ],
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "lastName": "Doe",
  • "modifiedAt": "2025-06-15T14:22:00",
  • "phone": "+49 170 1234567",
  • "title": "MS"
}

Replace a user

Fully replaces an existing user with the provided input.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>
Request Body schema: application/json
required
email
required
string <email> non-empty
firstName
required
string non-empty
lastName
required
string non-empty
phone
string
title
string
Enum: "MR" "MS" "OTHER"

Salutation, defaults to OTHER

Responses

Request samples

Content type
application/json
{
  • "email": "jane.doe@example.com",
  • "firstName": "Jane",
  • "lastName": "Doe",
  • "phone": "+49 170 1234567",
  • "title": "MS"
}

Response samples

Content type
application/json
{
  • "createdAt": "2025-06-15T10:30:00",
  • "datapools": [
    ],
  • "email": "jane.doe@example.com",
  • "firstName": "Jane",
  • "groups": [
    ],
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "lastName": "Doe",
  • "modifiedAt": "2025-06-15T14:22:00",
  • "phone": "+49 170 1234567",
  • "title": "MS"
}

Replace user group memberships

Replaces all group memberships for a user with the provided list of group IDs.

Authorizations:
oauth2
path Parameters
userId
required
string <uuid>
Request Body schema: application/json
required
Array
string <uuid>

Responses

Request samples

Content type
application/json
[
  • "497f6eca-6276-4993-bfeb-53cbbbba6f08"
]

Response samples

Content type
application/json
{
  • "createdAt": "2025-06-15T10:30:00",
  • "datapools": [
    ],
  • "email": "jane.doe@example.com",
  • "firstName": "Jane",
  • "groups": [
    ],
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "lastName": "Doe",
  • "modifiedAt": "2025-06-15T14:22:00",
  • "phone": "+49 170 1234567",
  • "title": "MS"
}

Data Structures

Data structure management endpoints

List all data structures

Returns a paginated, filterable list of data structures. Supports sorting and specification-based filtering.

Authorizations:
oauth2
query Parameters
page
integer >= 0
Default: 0

Zero-based page index (0..N)

size
integer >= 1
Default: 20

The size of the page to be returned

sort
Array of strings
Default: "createdAt,DESC"

Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.

id
string
Example: id=1,2,3

Filter by one or more IDs (comma-separated).

createdAtFrom
string <date-time>
Example: createdAtFrom=2024-01-01T00:00:00Z

Filter by creation date greater than or equal to this value (ISO 8601).

createdAtTo
string <date-time>
Example: createdAtTo=2024-12-31T23:59:59Z

Filter by creation date less than or equal to this value (ISO 8601).

modifiedAtFrom
string <date-time>
Example: modifiedAtFrom=2024-01-01T00:00:00Z

Filter by modification date greater than or equal to this value (ISO 8601).

modifiedAtTo
string <date-time>
Example: modifiedAtTo=2024-12-31T23:59:59Z

Filter by modification date less than or equal to this value (ISO 8601).

name
string
Example: name=My Data Structure

Filter by name (partial match, case-insensitive).

description
string
Example: description=Data structure description

Filter by description (partial match, case-insensitive).

q
string
Example: q=structure

Search in name or description (partial match, case-insensitive).

dataStructureStatus
string
Enum: "DRAFT" "AVAILABLE"

Filter by status (exact match).

Responses

Response samples

Content type
application/json
{
  • "content": [
    ],
  • "empty": true,
  • "first": true,
  • "last": true,
  • "number": 0,
  • "numberOfElements": 0,
  • "pageable": {
    },
  • "size": 0,
  • "sort": {
    },
  • "totalElements": 0,
  • "totalPages": 0
}

Create a new data structure

Creates a new data structure and returns it with a Location header pointing to the new data structure URI.

Authorizations:
oauth2
Request Body schema: application/json
required
Array of objects (AssignmentScopedInputDTO) unique
description
required
string non-empty
name
required
string non-empty

Responses

Request samples

Content type
application/json
{
  • "assignments": [
    ],
  • "description": "string",
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "createdAt": "2025-06-15T10:30:00",
  • "dataStructureStatus": "ACTIVE",
  • "dataStructureVersions": [
    ],
  • "description": "Schema for traffic sensor readings",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "inUse": true,
  • "inUseByReleased": true,
  • "modifiedAt": "2025-06-15T14:22:00",
  • "name": "Traffic Sensor Schema"
}

Delete a data structure

Permanently deletes a data structure by its UUID.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>

Responses

Response samples

Content type
application/problem+json
Example
{
  • "detail": "Authentication required",
  • "instance": "/v1/datasets",
  • "status": 401,
  • "title": "Unauthorized",
  • "type": "urn:civitas:error:UNAUTHORIZED"
}

Get data structure by ID

Returns a single data structure identified by its UUID.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "createdAt": "2025-06-15T10:30:00",
  • "dataStructureStatus": "ACTIVE",
  • "dataStructureVersions": [
    ],
  • "description": "Schema for traffic sensor readings",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "inUse": true,
  • "inUseByReleased": true,
  • "modifiedAt": "2025-06-15T14:22:00",
  • "name": "Traffic Sensor Schema"
}

Partially update a data structure

Applies a partial JSON update to an existing data structure. Only provided fields are modified.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>
Request Body schema: application/json
required
Array of objects (AssignmentScopedInputDTO) unique
description
string non-empty
name
string non-empty

Responses

Request samples

Content type
application/json
{
  • "assignments": [
    ],
  • "description": "string",
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "createdAt": "2025-06-15T10:30:00",
  • "dataStructureStatus": "ACTIVE",
  • "dataStructureVersions": [
    ],
  • "description": "Schema for traffic sensor readings",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "inUse": true,
  • "inUseByReleased": true,
  • "modifiedAt": "2025-06-15T14:22:00",
  • "name": "Traffic Sensor Schema"
}

Replace a data structure

Fully replaces an existing data structure with the provided input.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>
Request Body schema: application/json
required
Array of objects (AssignmentScopedInputDTO) unique
description
required
string non-empty
name
required
string non-empty

Responses

Request samples

Content type
application/json
{
  • "assignments": [
    ],
  • "description": "string",
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "createdAt": "2025-06-15T10:30:00",
  • "dataStructureStatus": "ACTIVE",
  • "dataStructureVersions": [
    ],
  • "description": "Schema for traffic sensor readings",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "inUse": true,
  • "inUseByReleased": true,
  • "modifiedAt": "2025-06-15T14:22:00",
  • "name": "Traffic Sensor Schema"
}

Get assignments

Returns all role assignments scoped to this data structure.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Release

Transitions the entity from DRAFT to AVAILABLE status.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "createdAt": "2025-06-15T10:30:00",
  • "dataStructureStatus": "ACTIVE",
  • "dataStructureVersions": [
    ],
  • "description": "Schema for traffic sensor readings",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "inUse": true,
  • "inUseByReleased": true,
  • "modifiedAt": "2025-06-15T14:22:00",
  • "name": "Traffic Sensor Schema"
}

Update released metadata

Applies a JSON merge patch to the metadata of a released entity. An omitted field keeps its value. A field that is not metadata answers 400, and so does null for assignments or datapoolScope. Only works on entities that are not in DRAFT status.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>
Request Body schema: application/json
required
Array of objects (AssignmentScopedInputDTO) unique
description
string non-empty
name
string non-empty

Responses

Request samples

Content type
application/json
{
  • "assignments": [
    ],
  • "description": "string",
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "createdAt": "2025-06-15T10:30:00",
  • "dataStructureStatus": "ACTIVE",
  • "dataStructureVersions": [
    ],
  • "description": "Schema for traffic sensor readings",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "inUse": true,
  • "inUseByReleased": true,
  • "modifiedAt": "2025-06-15T14:22:00",
  • "name": "Traffic Sensor Schema"
}

Unrelease

Transitions the entity from AVAILABLE back to DRAFT status.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "createdAt": "2025-06-15T10:30:00",
  • "dataStructureStatus": "ACTIVE",
  • "dataStructureVersions": [
    ],
  • "description": "Schema for traffic sensor readings",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "inUse": true,
  • "inUseByReleased": true,
  • "modifiedAt": "2025-06-15T14:22:00",
  • "name": "Traffic Sensor Schema"
}

Published structures

The data structures the platform's sinks publish

List the sinks that publish data structures, with their structures

Authorizations:
oauth2

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get the model document of a published data structure

Authorizations:
oauth2
path Parameters
key
required
string

Responses

Response samples

Content type
application/json
{
  • "property1": null,
  • "property2": null
}

Pipelines

Pipeline management endpoints

List all pipelines

Authorizations:
oauth2
path Parameters
dataSetId
required
any <uuid>
query Parameters
page
integer >= 0
Default: 0

Zero-based page index (0..N)

size
integer >= 1
Default: 20

The size of the page to be returned

sort
Array of strings
Default: "createdAt,DESC"

Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.

id
string
Example: id=1,2,3

Filter by one or more IDs (comma-separated).

createdAtFrom
string <date-time>
Example: createdAtFrom=2024-01-01T00:00:00Z

Filter by creation date greater than or equal to this value (ISO 8601).

createdAtTo
string <date-time>
Example: createdAtTo=2024-12-31T23:59:59Z

Filter by creation date less than or equal to this value (ISO 8601).

modifiedAtFrom
string <date-time>
Example: modifiedAtFrom=2024-01-01T00:00:00Z

Filter by modification date greater than or equal to this value (ISO 8601).

modifiedAtTo
string <date-time>
Example: modifiedAtTo=2024-12-31T23:59:59Z

Filter by modification date less than or equal to this value (ISO 8601).

Responses

Response samples

Content type
application/json
{
  • "content": [
    ],
  • "empty": true,
  • "first": true,
  • "last": true,
  • "number": 0,
  • "numberOfElements": 0,
  • "pageable": {
    },
  • "size": 0,
  • "sort": {
    },
  • "totalElements": 0,
  • "totalPages": 0
}

Create a new pipeline

Authorizations:
oauth2
path Parameters
dataSetId
required
any <uuid>
Request Body schema: application/json
required
dataSinkIds
Array of strings <uuid> unique [ items <uuid > ]
dataSourceIds
Array of strings <uuid> unique [ items <uuid > ]
description
string
object
name
required
string non-empty
object

Responses

Request samples

Content type
application/json
{
  • "dataSinkIds": [
    ],
  • "dataSourceIds": [
    ],
  • "description": "string",
  • "model": {
    },
  • "name": "string",
  • "styles": {
    }
}

Response samples

Content type
application/json
{
  • "createdAt": "2025-06-15T10:30:00",
  • "dataSetId": "4d7600aa-4d53-4144-aa57-ce0c5b68b1da",
  • "dataSinkIds": [
    ],
  • "dataSourceIds": [
    ],
  • "description": "string",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "model": {
    },
  • "modelUrn": "string",
  • "modifiedAt": "2025-06-15T14:22:00",
  • "name": "string",
  • "styles": {
    }
}

Delete a pipeline

Authorizations:
oauth2
path Parameters
id
required
string <uuid>
dataSetId
required
any <uuid>

Responses

Response samples

Content type
application/problem+json
Example
{
  • "detail": "A dataset and its sub-entities can only be changed while the dataset is DRAFT. Unstage or unrelease the dataset first.",
  • "instance": "/datasets/{dataSetId}/pipelines/{id}",
  • "status": 400,
  • "title": "Bad Request",
  • "type": "urn:civitas:error:DATASET_NOT_EDITABLE"
}

Get pipeline by ID

Authorizations:
oauth2
path Parameters
id
required
string <uuid>
dataSetId
required
any <uuid>

Responses

Response samples

Content type
application/json
{
  • "createdAt": "2025-06-15T10:30:00",
  • "dataSetId": "4d7600aa-4d53-4144-aa57-ce0c5b68b1da",
  • "dataSinkIds": [
    ],
  • "dataSourceIds": [
    ],
  • "description": "string",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "model": {
    },
  • "modelUrn": "string",
  • "modifiedAt": "2025-06-15T14:22:00",
  • "name": "string",
  • "styles": {
    }
}

Partially update a pipeline

Authorizations:
oauth2
path Parameters
id
required
string <uuid>
dataSetId
required
any <uuid>
Request Body schema: application/json
required
dataSinkIds
Array of strings <uuid> unique [ items <uuid > ]
dataSourceIds
Array of strings <uuid> unique [ items <uuid > ]
description
string
object
name
string non-empty
object

Responses

Request samples

Content type
application/json
{
  • "dataSinkIds": [
    ],
  • "dataSourceIds": [
    ],
  • "description": "string",
  • "model": {
    },
  • "name": "string",
  • "styles": {
    }
}

Response samples

Content type
application/json
{
  • "createdAt": "2025-06-15T10:30:00",
  • "dataSetId": "4d7600aa-4d53-4144-aa57-ce0c5b68b1da",
  • "dataSinkIds": [
    ],
  • "dataSourceIds": [
    ],
  • "description": "string",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "model": {
    },
  • "modelUrn": "string",
  • "modifiedAt": "2025-06-15T14:22:00",
  • "name": "string",
  • "styles": {
    }
}

Replace a pipeline

Authorizations:
oauth2
path Parameters
id
required
string <uuid>
dataSetId
required
any <uuid>
Request Body schema: application/json
required
dataSinkIds
Array of strings <uuid> unique [ items <uuid > ]
dataSourceIds
Array of strings <uuid> unique [ items <uuid > ]
description
string
object
name
required
string non-empty
object

Responses

Request samples

Content type
application/json
{
  • "dataSinkIds": [
    ],
  • "dataSourceIds": [
    ],
  • "description": "string",
  • "model": {
    },
  • "name": "string",
  • "styles": {
    }
}

Response samples

Content type
application/json
{
  • "createdAt": "2025-06-15T10:30:00",
  • "dataSetId": "4d7600aa-4d53-4144-aa57-ce0c5b68b1da",
  • "dataSinkIds": [
    ],
  • "dataSourceIds": [
    ],
  • "description": "string",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "model": {
    },
  • "modelUrn": "string",
  • "modifiedAt": "2025-06-15T14:22:00",
  • "name": "string",
  • "styles": {
    }
}

DataSinks

DataSink management endpoints

List all DataSinks for a dataset

Authorizations:
oauth2
path Parameters
dataSetId
required
any <uuid>
query Parameters
page
integer >= 0
Default: 0

Zero-based page index (0..N)

size
integer >= 1
Default: 20

The size of the page to be returned

sort
Array of strings
Default: "createdAt,DESC"

Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.

id
string
Example: id=1,2,3

Filter by one or more IDs (comma-separated).

createdAtFrom
string <date-time>
Example: createdAtFrom=2024-01-01T00:00:00Z

Filter by creation date greater than or equal to this value (ISO 8601).

createdAtTo
string <date-time>
Example: createdAtTo=2024-12-31T23:59:59Z

Filter by creation date less than or equal to this value (ISO 8601).

modifiedAtFrom
string <date-time>
Example: modifiedAtFrom=2024-01-01T00:00:00Z

Filter by modification date greater than or equal to this value (ISO 8601).

modifiedAtTo
string <date-time>
Example: modifiedAtTo=2024-12-31T23:59:59Z

Filter by modification date less than or equal to this value (ISO 8601).

Responses

Response samples

Content type
application/json
{
  • "content": [
    ],
  • "empty": true,
  • "first": true,
  • "last": true,
  • "number": 0,
  • "numberOfElements": 0,
  • "pageable": {
    },
  • "size": 0,
  • "sort": {
    },
  • "totalElements": 0,
  • "totalPages": 0
}

Create a new DataSink

Authorizations:
oauth2
path Parameters
dataSetId
required
any <uuid>
Request Body schema: application/json
required
required
PostgisConfiguration (object) or FrostConfiguration (object)
confirmDataLoss
boolean

Acknowledges that this update rebuilds the sink's table and discards all stored data. Required (true) when tableName or the referenced element changes on a provisioned sink; ignored otherwise.

dataSinkType
required
string
Enum: "FROST" "POSTGIS"

Responses

Request samples

Content type
application/json
{
  • "configuration": {
    },
  • "confirmDataLoss": true,
  • "dataSinkType": "FROST"
}

Response samples

Content type
application/json
{
  • "configuration": {
    },
  • "configurationUrn": "string",
  • "createdAt": "2025-06-15T10:30:00",
  • "dataSetId": "4d7600aa-4d53-4144-aa57-ce0c5b68b1da",
  • "dataSinkType": "FROST",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "inUseByLayer": true,
  • "inUseByPipeline": true,
  • "modifiedAt": "2025-06-15T14:22:00",
  • "pipelineId": "621ef2b0-ba1d-48e5-89dc-b778e6ed42fd",
  • "provisioned": true
}

Delete a DataSink

Authorizations:
oauth2
path Parameters
id
required
string <uuid>
dataSetId
required
any <uuid>

Responses

Response samples

Content type
application/problem+json
Example
{
  • "detail": "A dataset and its sub-entities can only be changed while the dataset is DRAFT. Unstage or unrelease the dataset first.",
  • "instance": "/datasets/{dataSetId}/datasinks/{id}",
  • "status": 400,
  • "title": "Bad Request",
  • "type": "urn:civitas:error:DATASET_NOT_EDITABLE"
}

Get DataSink by ID

Authorizations:
oauth2
path Parameters
id
required
string <uuid>
dataSetId
required
any <uuid>

Responses

Response samples

Content type
application/json
{
  • "configuration": {
    },
  • "configurationUrn": "string",
  • "createdAt": "2025-06-15T10:30:00",
  • "dataSetId": "4d7600aa-4d53-4144-aa57-ce0c5b68b1da",
  • "dataSinkType": "FROST",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "inUseByLayer": true,
  • "inUseByPipeline": true,
  • "modifiedAt": "2025-06-15T14:22:00",
  • "pipelineId": "621ef2b0-ba1d-48e5-89dc-b778e6ed42fd",
  • "provisioned": true
}

Partially update a DataSink

Authorizations:
oauth2
path Parameters
id
required
string <uuid>
dataSetId
required
any <uuid>
Request Body schema: application/json
required
PostgisConfiguration (object) or FrostConfiguration (object)
confirmDataLoss
boolean

Acknowledges that this update rebuilds the sink's table and discards all stored data. Required (true) when tableName or the referenced element changes on a provisioned sink; ignored otherwise.

dataSinkType
string
Enum: "FROST" "POSTGIS"

Responses

Request samples

Content type
application/json
{
  • "configuration": {
    },
  • "confirmDataLoss": true,
  • "dataSinkType": "FROST"
}

Response samples

Content type
application/json
{
  • "configuration": {
    },
  • "configurationUrn": "string",
  • "createdAt": "2025-06-15T10:30:00",
  • "dataSetId": "4d7600aa-4d53-4144-aa57-ce0c5b68b1da",
  • "dataSinkType": "FROST",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "inUseByLayer": true,
  • "inUseByPipeline": true,
  • "modifiedAt": "2025-06-15T14:22:00",
  • "pipelineId": "621ef2b0-ba1d-48e5-89dc-b778e6ed42fd",
  • "provisioned": true
}

Replace a DataSink

Authorizations:
oauth2
path Parameters
id
required
string <uuid>
dataSetId
required
any <uuid>
Request Body schema: application/json
required
required
PostgisConfiguration (object) or FrostConfiguration (object)
confirmDataLoss
boolean

Acknowledges that this update rebuilds the sink's table and discards all stored data. Required (true) when tableName or the referenced element changes on a provisioned sink; ignored otherwise.

dataSinkType
required
string
Enum: "FROST" "POSTGIS"

Responses

Request samples

Content type
application/json
{
  • "configuration": {
    },
  • "confirmDataLoss": true,
  • "dataSinkType": "FROST"
}

Response samples

Content type
application/json
{
  • "configuration": {
    },
  • "configurationUrn": "string",
  • "createdAt": "2025-06-15T10:30:00",
  • "dataSetId": "4d7600aa-4d53-4144-aa57-ce0c5b68b1da",
  • "dataSinkType": "FROST",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "inUseByLayer": true,
  • "inUseByPipeline": true,
  • "modifiedAt": "2025-06-15T14:22:00",
  • "pipelineId": "621ef2b0-ba1d-48e5-89dc-b778e6ed42fd",
  • "provisioned": true
}

Layers

Layer management endpoints

List all Layers for a dataset

Authorizations:
oauth2
path Parameters
dataSetId
required
any <uuid>
query Parameters
page
integer >= 0
Default: 0

Zero-based page index (0..N)

size
integer >= 1
Default: 20

The size of the page to be returned

sort
Array of strings
Default: "createdAt,DESC"

Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.

id
string
Example: id=1,2,3

Filter by one or more IDs (comma-separated).

createdAtFrom
string <date-time>
Example: createdAtFrom=2024-01-01T00:00:00Z

Filter by creation date greater than or equal to this value (ISO 8601).

createdAtTo
string <date-time>
Example: createdAtTo=2024-12-31T23:59:59Z

Filter by creation date less than or equal to this value (ISO 8601).

modifiedAtFrom
string <date-time>
Example: modifiedAtFrom=2024-01-01T00:00:00Z

Filter by modification date greater than or equal to this value (ISO 8601).

modifiedAtTo
string <date-time>
Example: modifiedAtTo=2024-12-31T23:59:59Z

Filter by modification date less than or equal to this value (ISO 8601).

Responses

Response samples

Content type
application/json
{
  • "content": [
    ],
  • "empty": true,
  • "first": true,
  • "last": true,
  • "number": 0,
  • "numberOfElements": 0,
  • "pageable": {
    },
  • "size": 0,
  • "sort": {
    },
  • "totalElements": 0,
  • "totalPages": 0
}

Create a new Layer

Authorizations:
oauth2
path Parameters
dataSetId
required
any <uuid>
Request Body schema: application/json
required
alternativeStyleIds
Array of strings <uuid> [ items <uuid > ]
attribute
Array of strings
cqlFilter
string
crs
string
dataSinkId
required
string <uuid>
defaultStyleId
string <uuid>
description
string
geometryColumnRef
string
object
layerName
required
string non-empty ^[A-Za-z_-][A-Za-z0-9_-]*$
object
title
string

Responses

Request samples

Content type
application/json
{
  • "alternativeStyleIds": [
    ],
  • "attribute": [
    ],
  • "cqlFilter": "string",
  • "crs": "string",
  • "dataSinkId": "d5b80dfe-0335-4d90-b1c3-ece455c91130",
  • "defaultStyleId": "7c1ad1be-33c1-4d72-b742-ac8cc28b8ba1",
  • "description": "string",
  • "geometryColumnRef": "string",
  • "latLonBoundingBox": {
    },
  • "layerName": "string",
  • "nativeBoundingBox": {
    },
  • "title": "string"
}

Response samples

Content type
application/json
{
  • "alternativeStyleIds": [
    ],
  • "attribute": [
    ],
  • "cqlFilter": "string",
  • "createdAt": "2025-06-15T10:30:00",
  • "crs": "string",
  • "dataSetId": "4d7600aa-4d53-4144-aa57-ce0c5b68b1da",
  • "dataSinkId": "d5b80dfe-0335-4d90-b1c3-ece455c91130",
  • "defaultStyleId": "7c1ad1be-33c1-4d72-b742-ac8cc28b8ba1",
  • "description": "string",
  • "geometryColumnRef": "string",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "latLonBoundingBox": {
    },
  • "layerName": "string",
  • "modifiedAt": "2025-06-15T14:22:00",
  • "nativeBoundingBox": {
    },
  • "title": "string"
}

Delete a Layer

Authorizations:
oauth2
path Parameters
id
required
string <uuid>
dataSetId
required
any <uuid>

Responses

Response samples

Content type
application/problem+json
Example
{
  • "detail": "A dataset and its sub-entities can only be changed while the dataset is DRAFT. Unstage or unrelease the dataset first.",
  • "instance": "/datasets/{dataSetId}/layers/{id}",
  • "status": 400,
  • "title": "Bad Request",
  • "type": "urn:civitas:error:DATASET_NOT_EDITABLE"
}

Get Layer by ID

Authorizations:
oauth2
path Parameters
id
required
string <uuid>
dataSetId
required
any <uuid>

Responses

Response samples

Content type
application/json
{
  • "alternativeStyleIds": [
    ],
  • "attribute": [
    ],
  • "cqlFilter": "string",
  • "createdAt": "2025-06-15T10:30:00",
  • "crs": "string",
  • "dataSetId": "4d7600aa-4d53-4144-aa57-ce0c5b68b1da",
  • "dataSinkId": "d5b80dfe-0335-4d90-b1c3-ece455c91130",
  • "defaultStyleId": "7c1ad1be-33c1-4d72-b742-ac8cc28b8ba1",
  • "description": "string",
  • "geometryColumnRef": "string",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "latLonBoundingBox": {
    },
  • "layerName": "string",
  • "modifiedAt": "2025-06-15T14:22:00",
  • "nativeBoundingBox": {
    },
  • "title": "string"
}

Partially update a layer

Applies a partial JSON update to an existing layer. Only provided fields are modified.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>
dataSetId
required
any <uuid>
Request Body schema: application/json
required
alternativeStyleIds
Array of strings <uuid> [ items <uuid > ]
attribute
Array of strings
cqlFilter
string
crs
string
dataSinkId
string <uuid>
defaultStyleId
string <uuid>
description
string
geometryColumnRef
string
object
layerName
string non-empty ^[A-Za-z_-][A-Za-z0-9_-]*$
object
title
string

Responses

Request samples

Content type
application/json
{
  • "alternativeStyleIds": [
    ],
  • "attribute": [
    ],
  • "cqlFilter": "string",
  • "crs": "string",
  • "dataSinkId": "d5b80dfe-0335-4d90-b1c3-ece455c91130",
  • "defaultStyleId": "7c1ad1be-33c1-4d72-b742-ac8cc28b8ba1",
  • "description": "string",
  • "geometryColumnRef": "string",
  • "latLonBoundingBox": {
    },
  • "layerName": "string",
  • "nativeBoundingBox": {
    },
  • "title": "string"
}

Response samples

Content type
application/json
{
  • "alternativeStyleIds": [
    ],
  • "attribute": [
    ],
  • "cqlFilter": "string",
  • "createdAt": "2025-06-15T10:30:00",
  • "crs": "string",
  • "dataSetId": "4d7600aa-4d53-4144-aa57-ce0c5b68b1da",
  • "dataSinkId": "d5b80dfe-0335-4d90-b1c3-ece455c91130",
  • "defaultStyleId": "7c1ad1be-33c1-4d72-b742-ac8cc28b8ba1",
  • "description": "string",
  • "geometryColumnRef": "string",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "latLonBoundingBox": {
    },
  • "layerName": "string",
  • "modifiedAt": "2025-06-15T14:22:00",
  • "nativeBoundingBox": {
    },
  • "title": "string"
}

Replace a Layer

Authorizations:
oauth2
path Parameters
id
required
string <uuid>
dataSetId
required
any <uuid>
Request Body schema: application/json
required
alternativeStyleIds
Array of strings <uuid> [ items <uuid > ]
attribute
Array of strings
cqlFilter
string
crs
string
dataSinkId
required
string <uuid>
defaultStyleId
string <uuid>
description
string
geometryColumnRef
string
object
layerName
required
string non-empty ^[A-Za-z_-][A-Za-z0-9_-]*$
object
title
string

Responses

Request samples

Content type
application/json
{
  • "alternativeStyleIds": [
    ],
  • "attribute": [
    ],
  • "cqlFilter": "string",
  • "crs": "string",
  • "dataSinkId": "d5b80dfe-0335-4d90-b1c3-ece455c91130",
  • "defaultStyleId": "7c1ad1be-33c1-4d72-b742-ac8cc28b8ba1",
  • "description": "string",
  • "geometryColumnRef": "string",
  • "latLonBoundingBox": {
    },
  • "layerName": "string",
  • "nativeBoundingBox": {
    },
  • "title": "string"
}

Response samples

Content type
application/json
{
  • "alternativeStyleIds": [
    ],
  • "attribute": [
    ],
  • "cqlFilter": "string",
  • "createdAt": "2025-06-15T10:30:00",
  • "crs": "string",
  • "dataSetId": "4d7600aa-4d53-4144-aa57-ce0c5b68b1da",
  • "dataSinkId": "d5b80dfe-0335-4d90-b1c3-ece455c91130",
  • "defaultStyleId": "7c1ad1be-33c1-4d72-b742-ac8cc28b8ba1",
  • "description": "string",
  • "geometryColumnRef": "string",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "latLonBoundingBox": {
    },
  • "layerName": "string",
  • "modifiedAt": "2025-06-15T14:22:00",
  • "nativeBoundingBox": {
    },
  • "title": "string"
}

Data Structure Versions

Data structure version management endpoints

Create a new data structure version

Authorizations:
oauth2
path Parameters
dataStructureId
required
any <uuid>
Request Body schema: application/json
required
description
string
importedStructureUrns
Array of strings
object

Data model definition as a JSON Schema document

modelName
string
object

Responses

Request samples

Content type
application/json
{
  • "description": "string",
  • "importedStructureUrns": [
    ],
  • "model": {
    },
  • "modelName": "string",
  • "styles": {
    }
}

Response samples

Content type
application/json
{
  • "createdAt": "2025-06-15T10:30:00",
  • "dataStructure": {
    },
  • "dataStructureVersionSource": "OWN",
  • "dataStructureVersionStatus": "DRAFT",
  • "description": "Initial version of traffic sensor schema",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "importedStructureUrns": [
    ],
  • "inUse": true,
  • "inUseByReleased": true,
  • "model": {
    },
  • "modelName": "string",
  • "modelUrn": "string",
  • "modifiedAt": "2025-06-15T14:22:00",
  • "styles": {
    },
  • "version": "1.0.0"
}

Get data structure version by ID

Authorizations:
oauth2
path Parameters
id
required
string <uuid>
dataStructureId
required
any <uuid>

Responses

Response samples

Content type
application/json
{
  • "createdAt": "2025-06-15T10:30:00",
  • "dataStructure": {
    },
  • "dataStructureVersionSource": "OWN",
  • "dataStructureVersionStatus": "DRAFT",
  • "description": "Initial version of traffic sensor schema",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "importedStructureUrns": [
    ],
  • "inUse": true,
  • "inUseByReleased": true,
  • "model": {
    },
  • "modelName": "string",
  • "modelUrn": "string",
  • "modifiedAt": "2025-06-15T14:22:00",
  • "styles": {
    },
  • "version": "1.0.0"
}

Partially update a data structure version

Authorizations:
oauth2
path Parameters
id
required
string <uuid>
dataStructureId
required
any <uuid>
Request Body schema: application/json
required
description
string
importedStructureUrns
Array of strings
object

Data model definition as a JSON Schema document

modelName
string
object

Responses

Request samples

Content type
application/json
{
  • "description": "string",
  • "importedStructureUrns": [
    ],
  • "model": {
    },
  • "modelName": "string",
  • "styles": {
    }
}

Response samples

Content type
application/json
{
  • "createdAt": "2025-06-15T10:30:00",
  • "dataStructure": {
    },
  • "dataStructureVersionSource": "OWN",
  • "dataStructureVersionStatus": "DRAFT",
  • "description": "Initial version of traffic sensor schema",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "importedStructureUrns": [
    ],
  • "inUse": true,
  • "inUseByReleased": true,
  • "model": {
    },
  • "modelName": "string",
  • "modelUrn": "string",
  • "modifiedAt": "2025-06-15T14:22:00",
  • "styles": {
    },
  • "version": "1.0.0"
}

Replace a data structure version

Authorizations:
oauth2
path Parameters
id
required
string <uuid>
dataStructureId
required
any <uuid>
Request Body schema: application/json
required
description
string
importedStructureUrns
Array of strings
object

Data model definition as a JSON Schema document

modelName
string
object

Responses

Request samples

Content type
application/json
{
  • "description": "string",
  • "importedStructureUrns": [
    ],
  • "model": {
    },
  • "modelName": "string",
  • "styles": {
    }
}

Response samples

Content type
application/json
{
  • "createdAt": "2025-06-15T10:30:00",
  • "dataStructure": {
    },
  • "dataStructureVersionSource": "OWN",
  • "dataStructureVersionStatus": "DRAFT",
  • "description": "Initial version of traffic sensor schema",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "importedStructureUrns": [
    ],
  • "inUse": true,
  • "inUseByReleased": true,
  • "model": {
    },
  • "modelName": "string",
  • "modelUrn": "string",
  • "modifiedAt": "2025-06-15T14:22:00",
  • "styles": {
    },
  • "version": "1.0.0"
}

Release a data structure version

Releases a data structure version by setting status to AVAILABLE. Requires a model (JSON schema) with exactly one root Element that reaches every other member.

Authorizations:
oauth2
path Parameters
dataStructureId
required
string <uuid>
versionId
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "createdAt": "2025-06-15T10:30:00",
  • "dataStructure": {
    },
  • "dataStructureVersionSource": "OWN",
  • "dataStructureVersionStatus": "DRAFT",
  • "description": "Initial version of traffic sensor schema",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "importedStructureUrns": [
    ],
  • "inUse": true,
  • "inUseByReleased": true,
  • "model": {
    },
  • "modelName": "string",
  • "modelUrn": "string",
  • "modifiedAt": "2025-06-15T14:22:00",
  • "styles": {
    },
  • "version": "1.0.0"
}

Update metadata of a released data structure version

Applies a JSON merge patch to the description of a released data structure version (AVAILABLE status). An omitted field keeps its value. The description is the only field of a released version that can change; a request that contains any other field answers 400. For DRAFT versions, use PATCH /datastructures/{dataStructureId}/versions/{versionId} instead.

Authorizations:
oauth2
path Parameters
dataStructureId
required
string <uuid>
versionId
required
string <uuid>
Request Body schema: application/json
required
description
string

Responses

Request samples

Content type
application/json
{
  • "description": "string"
}

Response samples

Content type
application/json
{
  • "createdAt": "2025-06-15T10:30:00",
  • "dataStructure": {
    },
  • "dataStructureVersionSource": "OWN",
  • "dataStructureVersionStatus": "DRAFT",
  • "description": "Initial version of traffic sensor schema",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "importedStructureUrns": [
    ],
  • "inUse": true,
  • "inUseByReleased": true,
  • "model": {
    },
  • "modelName": "string",
  • "modelUrn": "string",
  • "modifiedAt": "2025-06-15T14:22:00",
  • "styles": {
    },
  • "version": "1.0.0"
}

Unrelease a data structure version

Unreleases a data structure version by setting status back to DRAFT. Cannot unrelease if this is the only released version of a released DataStructure - unrelease the DataStructure first in that case.

Authorizations:
oauth2
path Parameters
dataStructureId
required
string <uuid>
versionId
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "createdAt": "2025-06-15T10:30:00",
  • "dataStructure": {
    },
  • "dataStructureVersionSource": "OWN",
  • "dataStructureVersionStatus": "DRAFT",
  • "description": "Initial version of traffic sensor schema",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "importedStructureUrns": [
    ],
  • "inUse": true,
  • "inUseByReleased": true,
  • "model": {
    },
  • "modelName": "string",
  • "modelUrn": "string",
  • "modifiedAt": "2025-06-15T14:22:00",
  • "styles": {
    },
  • "version": "1.0.0"
}

DataPools

Datapool management endpoints

List all datapools

Returns a paginated, filterable list of datapools. Supports sorting and specification-based filtering.

Authorizations:
oauth2
query Parameters
page
integer >= 0
Default: 0

Zero-based page index (0..N)

size
integer >= 1
Default: 20

The size of the page to be returned

sort
Array of strings
Default: "createdAt,DESC"

Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.

id
string
Example: id=1,2,3

Filter by one or more IDs (comma-separated).

createdAtFrom
string <date-time>
Example: createdAtFrom=2024-01-01T00:00:00Z

Filter by creation date greater than or equal to this value (ISO 8601).

createdAtTo
string <date-time>
Example: createdAtTo=2024-12-31T23:59:59Z

Filter by creation date less than or equal to this value (ISO 8601).

modifiedAtFrom
string <date-time>
Example: modifiedAtFrom=2024-01-01T00:00:00Z

Filter by modification date greater than or equal to this value (ISO 8601).

modifiedAtTo
string <date-time>
Example: modifiedAtTo=2024-12-31T23:59:59Z

Filter by modification date less than or equal to this value (ISO 8601).

name
string
Example: name=mobility

Filter by name (partial match, case-insensitive).

description
string
Example: description=governance

Filter by description (partial match, case-insensitive).

q
string
Example: q=city

Search in name or description (partial match, case-insensitive).

Responses

Response samples

Content type
application/json
{
  • "content": [
    ],
  • "empty": true,
  • "first": true,
  • "last": true,
  • "number": 0,
  • "numberOfElements": 0,
  • "pageable": {
    },
  • "size": 0,
  • "sort": {
    },
  • "totalElements": 0,
  • "totalPages": 0
}

Create a new datapool

Creates a new datapool and returns it with a Location header pointing to the new datapool URI.

Authorizations:
oauth2
Request Body schema: application/json
required
Array of objects (AssignmentScopedInputDTO) unique
contactPersonId
string <uuid>

ID of the user designated as the contact person for this datapool

description
required
string non-empty
name
required
string [ 3 .. 255 ] characters

Responses

Request samples

Content type
application/json
{
  • "assignments": [
    ],
  • "contactPersonId": "22834537-8924-44e7-9ea8-8ffa30265086",
  • "description": "string",
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "contactPerson": {
    },
  • "createdAt": "2025-06-15T10:30:00",
  • "datasets": [
    ],
  • "description": "Groups all mobility-related datasets under one governance boundary",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "modifiedAt": "2025-06-15T14:22:00",
  • "name": "City Mobility DataPool"
}

Delete a datapool

Permanently deletes a datapool by its UUID. Fails with 409 Conflict if any datasets are still assigned to it.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>

Responses

Response samples

Content type
application/problem+json
Example
{
  • "detail": "Authentication required",
  • "instance": "/v1/datasets",
  • "status": 401,
  • "title": "Unauthorized",
  • "type": "urn:civitas:error:UNAUTHORIZED"
}

Get datapool by ID

Returns a single datapool identified by its UUID.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "contactPerson": {
    },
  • "createdAt": "2025-06-15T10:30:00",
  • "datasets": [
    ],
  • "description": "Groups all mobility-related datasets under one governance boundary",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "modifiedAt": "2025-06-15T14:22:00",
  • "name": "City Mobility DataPool"
}

Partially update a datapool

Applies a partial JSON update to an existing datapool. Only provided fields are modified.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>
Request Body schema: application/json
required
Array of objects (AssignmentScopedInputDTO) unique
contactPersonId
string <uuid>

ID of the user designated as the contact person for this datapool

description
string non-empty
name
string [ 3 .. 255 ] characters

Responses

Request samples

Content type
application/json
{
  • "assignments": [
    ],
  • "contactPersonId": "22834537-8924-44e7-9ea8-8ffa30265086",
  • "description": "string",
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "contactPerson": {
    },
  • "createdAt": "2025-06-15T10:30:00",
  • "datasets": [
    ],
  • "description": "Groups all mobility-related datasets under one governance boundary",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "modifiedAt": "2025-06-15T14:22:00",
  • "name": "City Mobility DataPool"
}

Replace a datapool

Fully replaces an existing datapool with the provided input.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>
Request Body schema: application/json
required
Array of objects (AssignmentScopedInputDTO) unique
contactPersonId
string <uuid>

ID of the user designated as the contact person for this datapool

description
required
string non-empty
name
required
string [ 3 .. 255 ] characters

Responses

Request samples

Content type
application/json
{
  • "assignments": [
    ],
  • "contactPersonId": "22834537-8924-44e7-9ea8-8ffa30265086",
  • "description": "string",
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "contactPerson": {
    },
  • "createdAt": "2025-06-15T10:30:00",
  • "datasets": [
    ],
  • "description": "Groups all mobility-related datasets under one governance boundary",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "modifiedAt": "2025-06-15T14:22:00",
  • "name": "City Mobility DataPool"
}

Get assignments

Returns all role assignments scoped to this datapool.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>

Responses

Response samples

Content type
application/json
[
  • {
    }
]

DataSources

Data source management endpoints

List all datasources

Returns a paginated, filterable list of datasources. Supports sorting and specification-based filtering.

Authorizations:
oauth2
query Parameters
page
integer >= 0
Default: 0

Zero-based page index (0..N)

size
integer >= 1
Default: 20

The size of the page to be returned

sort
Array of strings
Default: "createdAt,DESC"

Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.

id
string
Example: id=1,2,3

Filter by one or more IDs (comma-separated).

createdAtFrom
string <date-time>
Example: createdAtFrom=2024-01-01T00:00:00Z

Filter by creation date greater than or equal to this value (ISO 8601).

createdAtTo
string <date-time>
Example: createdAtTo=2024-12-31T23:59:59Z

Filter by creation date less than or equal to this value (ISO 8601).

modifiedAtFrom
string <date-time>
Example: modifiedAtFrom=2024-01-01T00:00:00Z

Filter by modification date greater than or equal to this value (ISO 8601).

modifiedAtTo
string <date-time>
Example: modifiedAtTo=2024-12-31T23:59:59Z

Filter by modification date less than or equal to this value (ISO 8601).

name
string
Example: name=mqtt-sensor

Filter by name (partial match, case-insensitive).

description
string
Example: description=Temperature sensor

Filter by description (partial match, case-insensitive).

q
string
Example: q=sensor

Search in name or description (partial match, case-insensitive).

dataSourceStatus
string
Enum: "DRAFT" "AVAILABLE"

Filter by status (exact match).

connectorType
string
Enum: "MQTT" "SQL"

Filter by connector type (exact match).

datapoolId
string <uuid>
Example: datapoolId=550e8400-e29b-41d4-a716-446655440000

Filter by DataPool scope. Returns DataSources with scope type ALL, or SPECIFIC DataSources that include this DataPool.

datapoolScopeType
string
Enum: "ALL" "NONE" "SPECIFIC"

Filter by DataPool scope type (exact match).

Responses

Response samples

Content type
application/json
{
  • "content": [
    ],
  • "empty": true,
  • "first": true,
  • "last": true,
  • "number": 0,
  • "numberOfElements": 0,
  • "pageable": {
    },
  • "size": 0,
  • "sort": {
    },
  • "totalElements": 0,
  • "totalPages": 0
}

Create a new datasource

Creates a new datasource and returns it with a Location header pointing to the new datasource URI.

Authorizations:
oauth2
Request Body schema: application/json
required
Array of objects (AssignmentScopedInputDTO) unique
MqttConnectorConfiguration (object) or SqlConnectorConfiguration (object)

Connector-specific configuration. Structure depends on connectorType.

connectorType
string
Enum: "MQTT" "SQL"

Type of connector (e.g. MQTT, SQL)

dataStructureVersionId
string <uuid>

ID of the data structure version to associate

object (DatapoolScopeInputDTO)

Datapool scope configuration. Defaults to ALL if omitted on create.

description
required
string non-empty

Data source description (required)

name
required
string non-empty

Data source name (required)

Responses

Request samples

Content type
application/json
{
  • "assignments": [
    ],
  • "configuration": {
    },
  • "connectorType": "MQTT",
  • "dataStructureVersionId": "4c6dbd5d-de35-4924-850b-7c38f17c9638",
  • "datapoolScope": {
    },
  • "description": "string",
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "configuration": {
    },
  • "configurationUrn": "string",
  • "connectorType": "MQTT",
  • "createdAt": "2025-06-15T10:30:00",
  • "dataSourceStatus": "ACTIVE",
  • "dataStructureVersion": {
    },
  • "datapoolScope": {
    },
  • "description": "Real-time traffic sensor data via MQTT broker",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "inUse": true,
  • "inUseByReleased": true,
  • "modifiedAt": "2025-06-15T14:22:00",
  • "name": "Traffic Sensor MQTT"
}

Delete a datasource

Permanently deletes a datasource by its UUID.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>

Responses

Response samples

Content type
application/problem+json
Example
{
  • "detail": "Authentication required",
  • "instance": "/v1/datasets",
  • "status": 401,
  • "title": "Unauthorized",
  • "type": "urn:civitas:error:UNAUTHORIZED"
}

Get datasource by ID

Returns a single datasource identified by its UUID.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "configuration": {
    },
  • "configurationUrn": "string",
  • "connectorType": "MQTT",
  • "createdAt": "2025-06-15T10:30:00",
  • "dataSourceStatus": "ACTIVE",
  • "dataStructureVersion": {
    },
  • "datapoolScope": {
    },
  • "description": "Real-time traffic sensor data via MQTT broker",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "inUse": true,
  • "inUseByReleased": true,
  • "modifiedAt": "2025-06-15T14:22:00",
  • "name": "Traffic Sensor MQTT"
}

Partially update a datasource

Applies a partial JSON update to an existing datasource. Only provided fields are modified.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>
Request Body schema: application/json
required
Array of objects (AssignmentScopedInputDTO) unique
MqttConnectorConfiguration (object) or SqlConnectorConfiguration (object)

Connector-specific configuration. Structure depends on connectorType.

connectorType
string
Enum: "MQTT" "SQL"

Type of connector (e.g. MQTT, SQL)

dataStructureVersionId
string <uuid>

ID of the data structure version to associate

object (DatapoolScopeInputDTO)

Datapool scope configuration. Defaults to ALL if omitted on create.

description
string non-empty

Data source description (required)

name
string non-empty

Data source name (required)

Responses

Request samples

Content type
application/json
{
  • "assignments": [
    ],
  • "configuration": {
    },
  • "connectorType": "MQTT",
  • "dataStructureVersionId": "4c6dbd5d-de35-4924-850b-7c38f17c9638",
  • "datapoolScope": {
    },
  • "description": "string",
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "configuration": {
    },
  • "configurationUrn": "string",
  • "connectorType": "MQTT",
  • "createdAt": "2025-06-15T10:30:00",
  • "dataSourceStatus": "ACTIVE",
  • "dataStructureVersion": {
    },
  • "datapoolScope": {
    },
  • "description": "Real-time traffic sensor data via MQTT broker",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "inUse": true,
  • "inUseByReleased": true,
  • "modifiedAt": "2025-06-15T14:22:00",
  • "name": "Traffic Sensor MQTT"
}

Replace a datasource

Fully replaces an existing datasource with the provided input.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>
Request Body schema: application/json
required
Array of objects (AssignmentScopedInputDTO) unique
MqttConnectorConfiguration (object) or SqlConnectorConfiguration (object)

Connector-specific configuration. Structure depends on connectorType.

connectorType
string
Enum: "MQTT" "SQL"

Type of connector (e.g. MQTT, SQL)

dataStructureVersionId
string <uuid>

ID of the data structure version to associate

object (DatapoolScopeInputDTO)

Datapool scope configuration. Defaults to ALL if omitted on create.

description
required
string non-empty

Data source description (required)

name
required
string non-empty

Data source name (required)

Responses

Request samples

Content type
application/json
{
  • "assignments": [
    ],
  • "configuration": {
    },
  • "connectorType": "MQTT",
  • "dataStructureVersionId": "4c6dbd5d-de35-4924-850b-7c38f17c9638",
  • "datapoolScope": {
    },
  • "description": "string",
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "configuration": {
    },
  • "configurationUrn": "string",
  • "connectorType": "MQTT",
  • "createdAt": "2025-06-15T10:30:00",
  • "dataSourceStatus": "ACTIVE",
  • "dataStructureVersion": {
    },
  • "datapoolScope": {
    },
  • "description": "Real-time traffic sensor data via MQTT broker",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "inUse": true,
  • "inUseByReleased": true,
  • "modifiedAt": "2025-06-15T14:22:00",
  • "name": "Traffic Sensor MQTT"
}

Get assignments

Returns all role assignments scoped to this datasource.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Release

Transitions the entity from DRAFT to AVAILABLE status.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "configuration": {
    },
  • "configurationUrn": "string",
  • "connectorType": "MQTT",
  • "createdAt": "2025-06-15T10:30:00",
  • "dataSourceStatus": "ACTIVE",
  • "dataStructureVersion": {
    },
  • "datapoolScope": {
    },
  • "description": "Real-time traffic sensor data via MQTT broker",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "inUse": true,
  • "inUseByReleased": true,
  • "modifiedAt": "2025-06-15T14:22:00",
  • "name": "Traffic Sensor MQTT"
}

Update released metadata

Applies a JSON merge patch to the metadata of a released entity. An omitted field keeps its value. A field that is not metadata answers 400, and so does null for assignments or datapoolScope. Only works on entities that are not in DRAFT status.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>
Request Body schema: application/json
required
Array of objects (AssignmentScopedInputDTO) unique
object (DatapoolScopeInputDTO)

Datapool scope configuration. Defaults to ALL if omitted on create.

description
string non-empty

Data source description (required)

name
string non-empty

Data source name (required)

Responses

Request samples

Content type
application/json
{
  • "assignments": [
    ],
  • "datapoolScope": {
    },
  • "description": "string",
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "configuration": {
    },
  • "configurationUrn": "string",
  • "connectorType": "MQTT",
  • "createdAt": "2025-06-15T10:30:00",
  • "dataSourceStatus": "ACTIVE",
  • "dataStructureVersion": {
    },
  • "datapoolScope": {
    },
  • "description": "Real-time traffic sensor data via MQTT broker",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "inUse": true,
  • "inUseByReleased": true,
  • "modifiedAt": "2025-06-15T14:22:00",
  • "name": "Traffic Sensor MQTT"
}

Unrelease

Transitions the entity from AVAILABLE back to DRAFT status.

Authorizations:
oauth2
path Parameters
id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "configuration": {
    },
  • "configurationUrn": "string",
  • "connectorType": "MQTT",
  • "createdAt": "2025-06-15T10:30:00",
  • "dataSourceStatus": "ACTIVE",
  • "dataStructureVersion": {
    },
  • "datapoolScope": {
    },
  • "description": "Real-time traffic sensor data via MQTT broker",
  • "id": "550e8400-e29b-41d4-a716-446655440000",
  • "inUse": true,
  • "inUseByReleased": true,
  • "modifiedAt": "2025-06-15T14:22:00",
  • "name": "Traffic Sensor MQTT"
}