service-registry-management IDD
GENERIC-HTTP & GENERIC-HTTPS
Overview
This page describes the service-registry-management service, which enables systems (with operator role or proper permissions) to handle (register, update, revoke, lookup) devices, systems, service instances, service definitions and interface templates in bulk. An example of this interaction is that an operator uses the Management Tool to register interface templates, systems, and service instances manually. The interfaces are implemented using protocol, encoding as stated in the following tables:
Interface Description
GENERIC-HTTP
Profile type | type | Version |
---|---|---|
Transfer protocol | HTTP | 1.1 |
Data encryption | N/A | - |
Encoding | JSON | RFC 8259 |
Compression | N/A | - |
GENERIC-HTTPS
Profile type | type | Version |
---|---|---|
Transfer protocol | HTTPS | 1.1 |
Data encryption | TLS | - |
Encoding | JSON | RFC 8259 |
Compression | N/A | - |
Hereby the Interface Design Description (IDD) is provided to the service-registry-management – Service Description. For further details about how this service is meant to be used, please consult that document.
Interface Description
device-query
The service operation request requires an identity related header or certificate and may optionally include a DeviceQueryRequest JSON encoded body.
POST /serviceregistry/mgmt/devices/query HTTP/1.1
Authorization: Bearer <authorization-info>
{
"pagination": {
"page": 0,
"size": 10,
"direction": "ASC",
"sortField": "name"
},
"deviceNames": [
],
"addresses": [
],
"addressType": "",
"metadataRequirementList": [
{
"volume.value": {"op": "GREATER_THAN_OR_EQUALS_TO", "value": 90},
"volume.unit": {"op": "EQUALS", "value": "dB"}
}
]
}
The service operation responds with the status code 200
if called successfully. The response also contains a DeviceListResponse JSON encoded body.
{
"entries": [
{
"name": "alarm1",
"metadata": {
"volume": {
"value": 100,
"unit": "dB"
}
},
"addresses": [
{
"type": "MAC",
"address": "3a:f7:9c:12:8e:b5"
}
],
"createdAt": "2025-03-10T09:09:58Z",
"updatedAt": "2025-03-10T09:09:58Z"
},
{
"name": "alarm2",
"metadata": {
"volume": {
"value": 110,
"unit": "dB"
}
},
"addresses": [
{
"type": "MAC",
"address": "3a:f7:9c:12:8e:bb"
}
],
"createdAt": "2025-03-10T09:09:58Z",
"updatedAt": "2025-03-10T09:09:58Z"
}
],
"count": 2
}
The error codes are 400
if the request is malformed, 401
if the requester authentication was unsuccessful,
403
if the authenticated requester has no permission and
500
if an unexpected error happens. The error response also contains an
ErrorResponse JSON encoded body.
{
"errorMessage": "Sort field is invalid. Only the following are allowed: [id, name, createdAt]",
"errorCode": 400,
"exceptionType": "INVALID_PARAMETER",
"origin": "POST /serviceregistry/mgmt/devices/query"
}
device-create
The service operation request requires an identity related header or certificate and a DeviceListRequest JSON encoded body.
POST /serviceregistry/mgmt/devices HTTP/1.1
Authorization: Bearer <authorization-info>
{
"devices": [
{
"name": "alarm1",
"metadata": {
"volume": { "value": 100, "unit": "dB"}
},
"addresses": [
"3a:f7:9c:12:8e:b5"
]
},
{
"name": "alarm2",
"metadata": {
"volume": { "value": 110, "unit": "dB"}
},
"addresses": [
"3a:f7:9c:12:8e:bb"
]
}
]
}
The service operation responds with the status code 201
if the device entities were successfully created. The response also contains a
DeviceListResponse JSON encoded body.
{
"entries": [
{
"name": "alarm1",
"metadata": {
"volume": {
"value": 100,
"unit": "dB"
}
},
"addresses": [
{
"type": "MAC",
"address": "3a:f7:9c:12:8e:b5"
}
],
"createdAt": "2025-03-10T09:09:57.989904100Z",
"updatedAt": "2025-03-10T09:09:57.989904100Z"
},
{
"name": "alarm2",
"metadata": {
"volume": {
"value": 110,
"unit": "dB"
}
},
"addresses": [
{
"type": "MAC",
"address": "3a:f7:9c:12:8e:bb"
}
],
"createdAt": "2025-03-10T09:09:58.010712400Z",
"updatedAt": "2025-03-10T09:09:58.010712400Z"
}
],
"count": 2
}
The error codes are 400
if the request is malformed, 401
if the requester authentication was unsuccessful,
403
if the authenticated requester has no permission and
500
if an unexpected error happens. The error response also contains an
ErrorResponse JSON encoded body.
{
"errorMessage": "Device with names already exists: alarm1, alarm2",
"errorCode": 400,
"exceptionType": "INVALID_PARAMETER",
"origin": "POST /serviceregistry/mgmt/devices"
}
device-update
The service operation request requires an identity related header or certificate and a DeviceListRequest JSON encoded body.
PUT /serviceregistry/mgmt/devices HTTP/1.1
Authorization: Bearer <authorization-info>
{
"devices": [
{
"name": "alarm1",
"metadata": {
"volume": { "value": 100, "unit": "dB"}
},
"addresses": [
"4a:f7:9c:12:8e:b5"
]
},
{
"name": "alarm2",
"metadata": {
"volume": { "value": 110, "unit": "dB"}
},
"addresses": [
"4a:f7:9c:12:8e:bb"
]
}
]
}
The service operation responds with the status code 200
if called successfully. The response also contains a DeviceListResponse JSON encoded body.
{
"entries": [
{
"name": "alarm1",
"metadata": {
"volume": {
"value": 100,
"unit": "dB"
}
},
"addresses": [
{
"type": "MAC",
"address": "4a:f7:9c:12:8e:b5"
}
],
"createdAt": "2025-03-10T09:09:58Z",
"updatedAt": "2025-03-10T09:09:58Z"
},
{
"name": "alarm2",
"metadata": {
"volume": {
"value": 110,
"unit": "dB"
}
},
"addresses": [
{
"type": "MAC",
"address": "4a:f7:9c:12:8e:bb"
}
],
"createdAt": "2025-03-10T09:09:58Z",
"updatedAt": "2025-03-10T09:09:58Z"
}
],
"count": 2
}
The error codes are 400
if the request is malformed, 401
if the requester authentication was unsuccessful,
403
if the authenticated requester has no permission and
500
if an unexpected error happens. The error response also contains an
ErrorResponse JSON encoded body.
{
"errorMessage": "Device(s) not exists: alarm001, alarm002",
"errorCode": 400,
"exceptionType": "INVALID_PARAMETER",
"origin": "PUT /serviceregistry/mgmt/devices"
}
device-remove
The service operation request requires an identity related header or certificate and a List<Name> as path parameter, which contains the names of the devices to delete.
DELETE /serviceregistry/mgmt/devices?names=alarm1&names=alarm2 HTTP/1.1
Authorization: Bearer <authorization-info>
The service operation responds with the status code 200
if called successfully. The success response does not contain any response body.
The error codes are, 400
if the request is malformed, 401
if the requester authentication was unsuccessful, 403
if the authenticated requester has no permission, 423
if entity is not removable and 500
if an unexpected error happens. The error response also contains an ErrorResponse JSON encoded body.
{
"errorMessage": "Device name list contains null or empty element",
"errorCode": 400,
"exceptionType": "INVALID_PARAMETER",
"origin": "DELETE /serviceregistry/mgmt/devices"
}
system-query
The service operation request requires an identity related header or certificate. The URI contains a query parameter with the key "verbose" and a Boolean value. If verbose is true, detailed device information also returns (only if the provider supports it). The request may optionally include a SystemQueryRequest JSON encoded body.
POST /serviceregistry/mgmt/systems/query?verbose=<verbose-value> HTTP/1.1
Authorization: Bearer <authorization-info>
{
"pagination": {
"page": 1,
"size": 1,
"direction": "ASC",
"sortField": ""
},
"systemNames": [
],
"addresses": [
],
"addressType": "",
"metadataRequirementList": [
],
"versions": [
"1.1"
],
"deviceNames": [
]
}
The service operation responds with the status code 200
if called successfully and with a SystemListResponse JSON encoded body.
{
"entries": [
{
"name": "alert-consumer2",
"metadata": {},
"version": "1.1.0",
"addresses": [
{
"type": "IPV4",
"address": "192.168.1.2"
}
],
"device": {
"name": "alarm2"
},
"createdAt": "2025-03-14T13:08:22Z",
"updatedAt": "2025-03-14T13:08:22Z"
}
],
"count": 2
}
The error codes are, 400
if the request is malformed, 401
if the requester authentication was unsuccessful, 403
if the authenticated requester has no permission and 500
if an unexpected error happens. The error response also contains an ErrorResponse JSON encoded body.
{
"errorMessage": "The page size cannot be larger than 1000",
"errorCode": 400,
"exceptionType": "INVALID_PARAMETER",
"origin": "POST /serviceregistry/mgmt/systems/query"
}
system-create
The service operation request requires an identity related header or certificate and a SystemListRequest JSON encoded body.
POST /serviceregistry/mgmt/systems HTTP/1.1
Authorization: Bearer <authorization-info>
{
"systems": [
{
"name": "alert-consumer1",
"metadata": {
},
"version": "1.1",
"addresses": [
"192.168.1.1"
],
"deviceName": "alarm1"
},
{
"name": "alert-consumer2",
"metadata": {
},
"version": "1.1",
"addresses": [
"192.168.1.2"
],
"deviceName": "alarm2"
}
]
}
The service operation responds with the status code 201
if the system entities were successfully created. The response also contains a
SystemListResponse JSON encoded body.
{
"entries": [
{
"name": "alert-consumer1",
"metadata": {},
"version": "1.1.0",
"addresses": [
{
"type": "IPV4",
"address": "192.168.1.1"
}
],
"device": {
"name": "alarm1",
"metadata": {
"volume": {
"value": 100,
"unit": "dB"
}
},
"addresses": [
{
"type": "MAC",
"address": "3a:f7:9c:12:8e:b5"
}
],
"createdAt": "2025-03-14T13:07:34Z",
"updatedAt": "2025-03-14T13:07:34Z"
},
"createdAt": "2025-03-14T13:08:21.856389Z",
"updatedAt": "2025-03-14T13:08:21.856389Z"
},
{
"name": "alert-consumer2",
"metadata": {},
"version": "1.1.0",
"addresses": [
{
"type": "IPV4",
"address": "192.168.1.2"
}
],
"device": {
"name": "alarm2",
"metadata": {
"volume": {
"value": 110,
"unit": "dB"
}
},
"addresses": [
{
"type": "MAC",
"address": "3a:f7:9c:12:8e:bb"
}
],
"createdAt": "2025-03-14T13:07:34Z",
"updatedAt": "2025-03-14T13:07:34Z"
},
"createdAt": "2025-03-14T13:08:21.858647200Z",
"updatedAt": "2025-03-14T13:08:21.858647200Z"
}
],
"count": 2
}
The error codes are, 400
if the request is malformed, 401
if the requester authentication was unsuccessful, 403
if the authenticated requester has no permission and 500
if an unexpected error happens. The error response also contains an ErrorResponse JSON encoded body.
{
"errorMessage": "Systems with names already exist: alert-consumer1, alert-consumer2",
"errorCode": 400,
"exceptionType": "INVALID_PARAMETER",
"origin": "POST /serviceregistry/mgmt/systems"
}
system-update
The service operation request requires an identity related header or certificate and a SystemListRequest JSON encoded body.
PUT /serviceregistry/mgmt/systems HTTP/1.1
Authorization: Bearer <authorization-info>
{
"systems": [
{
"name": "alert-consumer1",
"metadata": {
},
"version": "1.2",
"addresses": [
"192.168.1.1"
],
"deviceName": "alarm1"
},
{
"name": "alert-consumer2",
"metadata": {
},
"version": "1.2",
"addresses": [
"192.168.1.2"
],
"deviceName": "alarm2"
}
]
}
The service operation responds with the status code 200
if the system entities were successfully updated. The response also contains a
SystemListResponse JSON encoded body.
{
"entries": [
{
"name": "alert-consumer1",
"metadata": {},
"version": "1.2.0",
"addresses": [
{
"type": "IPV4",
"address": "192.168.1.1"
}
],
"device": {
"name": "alarm1",
"metadata": {
"volume": {
"value": 100,
"unit": "dB"
}
},
"addresses": [
{
"type": "MAC",
"address": "3a:f7:9c:12:8e:b5"
}
],
"createdAt": "2025-03-14T13:07:34Z",
"updatedAt": "2025-03-14T13:07:34Z"
},
"createdAt": "2025-03-14T13:08:22Z",
"updatedAt": "2025-03-14T13:51:03.159696600Z"
},
{
"name": "alert-consumer2",
"metadata": {},
"version": "1.2.0",
"addresses": [
{
"type": "IPV4",
"address": "192.168.1.2"
}
],
"device": {
"name": "alarm2",
"metadata": {
"volume": {
"value": 110,
"unit": "dB"
}
},
"addresses": [
{
"type": "MAC",
"address": "3a:f7:9c:12:8e:bb"
}
],
"createdAt": "2025-03-14T13:07:34Z",
"updatedAt": "2025-03-14T13:07:34Z"
},
"createdAt": "2025-03-14T13:08:22Z",
"updatedAt": "2025-03-14T13:51:03.169626100Z"
}
],
"count": 2
}
The error codes are, 400
if the request is malformed, 401
if the requester authentication was unsuccessful, 403
if the authenticated requester has no permission and 500
if an unexpected error happens. The error response also contains an ErrorResponse JSON encoded body.
{
"errorMessage": "Duplicated system name: alert-consumer1",
"errorCode": 400,
"exceptionType": "INVALID_PARAMETER",
"origin": "PUT /serviceregistry/mgmt/systems"
}
system-remove
The service operation request requires an identity related header or certificate and a List<Name> as path parameter, which contains the names of the systems to delete.
DELETE /serviceregistry/mgmt/systems?names=alert-consumer1&names=alert-consumer2 HTTP/1.1
Authorization: Bearer <authorization-info>
The service operation responds with the status code 200
if called successfully. The success response does not contain any response body.
The error codes are, 400
if the request is malformed, 401
if the requester authentication was unsuccessful, 403
if the authenticated requester has no permission and 500
if an unexpected error happens. The error response also contains an ErrorResponse JSON encoded body.
{
"errorMessage": "Invalid authorization header",
"errorCode": 401,
"exceptionType": "AUTH"
}
service-definition-query
The service operation request requires an identity related header or certificate and may optionally include a PageRequest JSON encoded body.
POST /serviceregistry/mgmt/service-definitions/query HTTP/1.1
Authorization: Bearer <authorization-info>
{
"page": 2,
"size": 4,
"direction": "DESC",
"sortField": "name"
}
The service operation responds with the status code 200
if called successfully. The response also contains a ServiceDefinitionListResponse JSON encoded body.
{
"entries": [
{
"name": "orchestration",
"createdAt": "2025-03-12T11:07:23Z",
"updatedAt": "2025-03-12T11:07:23Z"
},
{
"name": "monitor",
"createdAt": "2025-01-31T09:14:54Z",
"updatedAt": "2025-01-31T09:14:54Z"
},
{
"name": "kelvin-info2",
"createdAt": "2025-03-15T19:47:47Z",
"updatedAt": "2025-03-15T19:47:47Z"
},
{
"name": "kelvin-info1",
"createdAt": "2025-03-15T19:47:47Z",
"updatedAt": "2025-03-15T19:47:47Z"
}
],
"count": 24
}
The error codes are, 400
if the request is malformed, 401
if the requester authentication was unsuccessful, 403
if the authenticated requester has no permission and 500
if an unexpected error happens. The error response also contains an ErrorResponse JSON encoded body.
{
"errorMessage": "Requester has no management permission",
"errorCode": 403,
"exceptionType": "FORBIDDEN",
"origin": "http://localhost:8443/serviceregistry/mgmt/service-definitions/query"
}
service-definition-create
The service operation request requires an identity related header or certificate and a ServiceDefinitionListRequest JSON encoded body.
POST /serviceregistry/mgmt/service-definitions HTTP/1.1
Authorization: Bearer <authorization-info>
{
"serviceDefinitionNames": [
"alert-service1", "alert-service2"
]
}
The service operation responds with the status code 201
if the service definition entities were successfully created. The response also contains a ServiceDefinitionListResponse JSON encoded body.
{
"entries": [
{
"name": "alert-service1",
"createdAt": "2025-03-15T19:31:03.728040300Z",
"updatedAt": "2025-03-15T19:31:03.728040300Z"
},
{
"name": "alert-service2",
"createdAt": "2025-03-15T19:31:03.732592400Z",
"updatedAt": "2025-03-15T19:31:03.732592400Z"
}
],
"count": 2
}
The error codes are, 400
if the request is malformed, 401
if the requester authentication was unsuccessful, 403
if the authenticated requester has no permission and 500
if an unexpected error happens. The error response also contains an ErrorResponse JSON encoded body.
{
"errorMessage": "The specified name does not match the naming convention: alert@service1",
"errorCode": 400,
"exceptionType": "INVALID_PARAMETER",
"origin": "POST /serviceregistry/mgmt/service-definitions"
}
service-definition-remove
The service operation request requires an identity related header or certificate and a List<Name> as path parameter, which contains the names of the service definitions to delete.
DELETE /serviceregistry/mgmt/service-definitions?names=alert-service1&names=alert-service2 HTTP/1.1
Authorization: Bearer <authorization-info>
The service operation responds with the status code 200
if called successfully. The success response does not contain any response body.
The error codes are, 400
if the request is malformed, 401
if the requester authentication was unsuccessful, 403
if the authenticated requester has no permission and 500
if an unexpected error happens. The error response also contains an ErrorResponse JSON encoded body.
{
"errorMessage": "Service definition name list is missing or empty",
"errorCode": 400,
"exceptionType": "INVALID_PARAMETER",
"origin": "DELETE /serviceregistry/mgmt/service-definitions"
}
service-query
The service operation request requires an identity related header or certificate and a ServiceQueryRequest JSON encoded body. The URI contains a query parameter with the key "verbose" and a Boolean value. If verbose is true, detailed system and device information also returns (only if the provider supports it).
POST /serviceregistry/mgmt/service-instances/query?verbose=<verbose-value> HTTP/1.1
Authorization: Bearer <authorization-info>
{
"pagination": {
"page": 0,
"size": 2,
"direction": "ASC",
"sortField": "createdAt"
},
"instanceIds": [
],
"providerNames": [
],
"serviceDefinitionNames": [
"alert-service1"
],
"versions": [
"1.0.0", "1.0.1"
],
"alivesAt": "2026-01-01T00:00:00Z",
"metadataRequirementsList": [
],
"addressTypes": [
],
"interfaceTemplateNames": [
"generic-mqtt"
],
"interfacePropertyRequirementsList": [
{
"operations": { "op": "CONTAINS", "value": "warn"}
}
],
"policies": [
"NONE"
]
}
The service operation responds with the status code 200
if called successfully. The response also contains a ServiceListResponse JSON encoded body.
{
"entries": [
{
"instanceId": "alert-consumer1::alert-service1::1.0.0",
"provider": {
"name": "alert-consumer1",
"metadata": {},
"version": "1.1.0",
"createdAt": "2025-03-15T20:22:44Z",
"updatedAt": "2025-03-15T20:22:44Z"
},
"serviceDefinition": {
"name": "alert-service1",
"createdAt": "2025-03-15T20:21:43Z",
"updatedAt": "2025-03-15T20:21:43Z"
},
"version": "1.0.0",
"expiresAt": "2028-01-01T00:00:00Z",
"metadata": {
"delay": {
"value": 200,
"unit": "ms"
}
},
"interfaces": [
{
"templateName": "generic-mqtt",
"protocol": "tcp",
"policy": "NONE",
"properties": {
"accessAddresses": [
"192.168.1.3"
],
"accessPort": 1883,
"baseTopic": "heat-alert",
"operations": [
"alert",
"warn"
]
}
}
],
"createdAt": "2025-03-15T21:52:40Z",
"updatedAt": "2025-03-15T21:52:40Z"
},
{
"instanceId": "alert-consumer2::alert-service1::1.0.0",
"provider": {
"name": "alert-consumer2",
"metadata": {},
"version": "1.1.0",
"createdAt": "2025-03-15T20:22:44Z",
"updatedAt": "2025-03-15T20:22:44Z"
},
"serviceDefinition": {
"name": "alert-service1",
"createdAt": "2025-03-15T20:21:43Z",
"updatedAt": "2025-03-15T20:21:43Z"
},
"version": "1.0.0",
"expiresAt": "2027-01-01T00:00:00Z",
"metadata": {
"delay": {
"value": 200,
"unit": "ms"
}
},
"interfaces": [
{
"templateName": "generic-mqtt",
"protocol": "tcp",
"policy": "NONE",
"properties": {
"accessAddresses": [
"192.168.1.3"
],
"accessPort": 1883,
"baseTopic": "heat-alert",
"operations": [
"warn"
]
}
}
],
"createdAt": "2025-03-15T21:52:40Z",
"updatedAt": "2025-03-15T21:52:40Z"
}
],
"count": 2
}
The error codes are, 400
if the request is malformed, 401
if the requester authentication was unsuccessful, 403
if the authenticated requester has no permission and 500
if an unexpected error happens. The error response also contains an ErrorResponse JSON encoded body.
{
"errorMessage": "Sort field is invalid. Only the following are allowed: [id, name, createdAt]",
"errorCode": 400,
"exceptionType": "INVALID_PARAMETER",
"origin": "POST /serviceregistry/mgmt/service-instances/query"
}
service-create
The service operation request requires an identity related header or certificate and a ServiceCreateListRequest JSON encoded body.
POST /serviceregistry/mgmt/service-instances HTTP/1.1
Authorization: Bearer <authorization-info>
{
"instances": [
{
"systemName": "alert-consumer1",
"serviceDefinitionName": "alert-service1",
"version": "",
"expiresAt": "2028-01-01T00:00:00Z",
"metadata": {
"delay": {"value": 200, "unit": "ms"}
},
"interfaces": [
{
"templateName": "generic-mqtt",
"protocol": "tcp",
"policy": "NONE",
"properties": {
"accessAddresses": ["192.168.1.3"],
"accessPort": 1883,
"baseTopic": "heat-alert", "operations": ["alert", "warn"]
}
}
]
},
{
"systemName": "alert-consumer2",
"serviceDefinitionName": "alert-service1",
"version": "",
"expiresAt": "2027-01-01T00:00:00Z",
"metadata": {
"delay": {"value": 200, "unit": "ms"}
},
"interfaces": [
{
"templateName": "generic-mqtt",
"protocol": "tcp",
"policy": "NONE",
"properties": {
"accessAddresses": ["192.168.1.3"],
"accessPort": 1883,
"baseTopic": "heat-alert", "operations": ["warn"]
}
}
]
}
]
}
The service operation responds with the status code 201
if the service instance entities were created successfully. The response also contains a ServiceListResponse JSON encoded body.
{
"entries": [
{
"instanceId": "alert-consumer1::alert-service1::1.0.0",
"provider": {
"name": "alert-consumer1",
"metadata": {},
"version": "1.1.0",
"addresses": [
{
"type": "IPV4",
"address": "192.168.1.1"
}
],
"device": {
"name": "alarm1",
"metadata": {
"volume": {
"value": 100,
"unit": "dB"
}
},
"addresses": [
{
"type": "MAC",
"address": "3a:f7:9c:12:8e:b5"
}
],
"createdAt": "2025-03-14T13:07:34Z",
"updatedAt": "2025-03-14T13:07:34Z"
},
"createdAt": "2025-03-15T20:22:44Z",
"updatedAt": "2025-03-15T20:22:44Z"
},
"serviceDefinition": {
"name": "alert-service1",
"createdAt": "2025-03-15T20:21:43Z",
"updatedAt": "2025-03-15T20:21:43Z"
},
"version": "1.0.0",
"expiresAt": "2028-01-01T00:00:00Z",
"metadata": {
"delay": {
"value": 200,
"unit": "ms"
}
},
"interfaces": [
{
"templateName": "generic-mqtt",
"protocol": "tcp",
"policy": "NONE",
"properties": {
"accessAddresses": [
"192.168.1.3"
],
"accessPort": 1883,
"baseTopic": "heat-alert",
"operations": [
"alert",
"warn"
]
}
}
],
"createdAt": "2025-03-15T21:52:40.389503Z",
"updatedAt": "2025-03-15T21:52:40.389503Z"
},
{
"instanceId": "alert-consumer2::alert-service1::1.0.0",
"provider": {
"name": "alert-consumer2",
"metadata": {},
"version": "1.1.0",
"addresses": [
{
"type": "IPV4",
"address": "192.168.1.2"
}
],
"device": {
"name": "alarm2",
"metadata": {
"volume": {
"value": 110,
"unit": "dB"
}
},
"addresses": [
{
"type": "MAC",
"address": "3a:f7:9c:12:8e:bb"
}
],
"createdAt": "2025-03-14T13:07:34Z",
"updatedAt": "2025-03-14T13:07:34Z"
},
"createdAt": "2025-03-15T20:22:44Z",
"updatedAt": "2025-03-15T20:22:44Z"
},
"serviceDefinition": {
"name": "alert-service1",
"createdAt": "2025-03-15T20:21:43Z",
"updatedAt": "2025-03-15T20:21:43Z"
},
"version": "1.0.0",
"expiresAt": "2027-01-01T00:00:00Z",
"metadata": {
"delay": {
"value": 200,
"unit": "ms"
}
},
"interfaces": [
{
"templateName": "generic-mqtt",
"protocol": "tcp",
"policy": "NONE",
"properties": {
"accessAddresses": [
"192.168.1.3"
],
"accessPort": 1883,
"baseTopic": "heat-alert",
"operations": [
"warn"
]
}
}
],
"createdAt": "2025-03-15T21:52:40.394058800Z",
"updatedAt": "2025-03-15T21:52:40.394058800Z"
}
],
"count": 2
}
The error codes are, 400
if the request is malformed, 401
if the requester authentication was unsuccessful, 403
if the authenticated requester has no permission and 500
if an unexpected error happens. The error response also contains an ErrorResponse JSON encoded body.
{
"type": "about:blank",
"title": "Bad Request",
"status": 400,
"detail": "Failed to read request",
"instance": "/serviceregistry/mgmt/service-instances"
}
service-update
The service operation request requires an identity related header or certificate and a ServiceUpdateListRequest JSON encoded body.
PUT /serviceregistry/mgmt/service-instances HTTP/1.1
Authorization: Bearer <authorization-info>
{
"instances": [
{
"instanceId": "alert-consumer1::alert-service1::1.0.0",
"expiresAt": "2028-01-01T00:00:00Z",
"metadata": {
"delay": {"value": 200, "unit": "ms"}
},
"interfaces": [
{
"templateName": "generic-mqtt",
"protocol": "tcp", "policy": "NONE",
"properties": {
"accessAddresses": ["192.168.1.3"],
"accessPort": 1883,
"baseTopic": "heat-alert", "operations": ["alert", "warn", "info"]
}
}
]
},
{
"instanceId": "alert-consumer2::alert-service1::1.0.0",
"expiresAt": "2027-01-01T00:00:00Z",
"metadata": {
"delay": {"value": 200, "unit": "ms"}
},
"interfaces": [
{
"templateName": "generic-mqtt",
"protocol": "tcp", "policy": "NONE",
"properties": {
"accessAddresses": ["192.168.1.3"],
"accessPort": 1883,
"baseTopic": "heat-alert", "operations": ["warn"]
}
}
]
}
]
}
The service operation responds with the status code 200
if the service instance entities were updated successfully. The response also contains a ServiceListResponse JSON encoded body.
{
"entries": [
{
"instanceId": "alert-consumer1::alert-service1::1.0.0",
"provider": {
"name": "alert-consumer1",
"metadata": {},
"version": "1.1.0",
"addresses": [
{
"type": "IPV4",
"address": "192.168.1.1"
}
],
"device": {
"name": "alarm1",
"metadata": {
"volume": {
"value": 100,
"unit": "dB"
}
},
"addresses": [
{
"type": "MAC",
"address": "3a:f7:9c:12:8e:b5"
}
],
"createdAt": "2025-03-14T13:07:34Z",
"updatedAt": "2025-03-14T13:07:34Z"
},
"createdAt": "2025-03-15T20:22:44Z",
"updatedAt": "2025-03-15T20:22:44Z"
},
"serviceDefinition": {
"name": "alert-service1",
"createdAt": "2025-03-15T20:21:43Z",
"updatedAt": "2025-03-15T20:21:43Z"
},
"version": "1.0.0",
"expiresAt": "2028-01-01T00:00:00Z",
"metadata": {
"delay": {
"value": 200,
"unit": "ms"
}
},
"interfaces": [
{
"templateName": "generic-mqtt",
"protocol": "tcp",
"policy": "NONE",
"properties": {
"accessAddresses": [
"192.168.1.3"
],
"accessPort": 1883,
"baseTopic": "heat-alert",
"operations": [
"alert",
"warn",
"info"
]
}
}
],
"createdAt": "2025-03-15T21:52:40Z",
"updatedAt": "2025-03-15T22:30:44.209238800Z"
},
{
"instanceId": "alert-consumer2::alert-service1::1.0.0",
"provider": {
"name": "alert-consumer2",
"metadata": {},
"version": "1.1.0",
"addresses": [
{
"type": "IPV4",
"address": "192.168.1.2"
}
],
"device": {
"name": "alarm2",
"metadata": {
"volume": {
"value": 110,
"unit": "dB"
}
},
"addresses": [
{
"type": "MAC",
"address": "3a:f7:9c:12:8e:bb"
}
],
"createdAt": "2025-03-14T13:07:34Z",
"updatedAt": "2025-03-14T13:07:34Z"
},
"createdAt": "2025-03-15T20:22:44Z",
"updatedAt": "2025-03-15T20:22:44Z"
},
"serviceDefinition": {
"name": "alert-service1",
"createdAt": "2025-03-15T20:21:43Z",
"updatedAt": "2025-03-15T20:21:43Z"
},
"version": "1.0.0",
"expiresAt": "2027-01-01T00:00:00Z",
"metadata": {
"delay": {
"value": 200,
"unit": "ms"
}
},
"interfaces": [
{
"templateName": "generic-mqtt",
"protocol": "tcp",
"policy": "NONE",
"properties": {
"accessAddresses": [
"192.168.1.3"
],
"accessPort": 1883,
"baseTopic": "heat-alert",
"operations": [
"warn"
]
}
}
],
"createdAt": "2025-03-15T21:52:40Z",
"updatedAt": "2025-03-15T22:30:44.270475Z"
}
],
"count": 2
}
The error codes are, 400
if the request is malformed, 401
if the requester authentication was unsuccessful, 403
if the authenticated requester has no permission and 500
if an unexpected error happens. The error response also contains an ErrorResponse JSON encoded body.
{
"errorMessage": "Instance id is empty",
"errorCode": 400,
"exceptionType": "INVALID_PARAMETER"
}
service-remove
The service operation request requires an identity related header or certificate and a List<Name> as path parameter, which contains the identitifers of the service instances that need to be removed.
DELETE /serviceregistry/mgmt/service-instances?serviceInstances=alert-consumer1%3A%3Aalert-service1%3A%3A1.0.0&serviceInstances=alert-consumer2%3A%3Aalert-service1%3A%3A1.0.0 HTTP/1.1
Authorization: Bearer <authorization-info>
The service operation responds with the status code 200
if called successfully. The success response does not contain any response body.
The error codes are, 400
if the request is malformed, 401
if the requester authentication was unsuccessful, 403
if the authenticated requester has no permission and 500
if an unexpected error happens. The error response also contains an ErrorResponse JSON encoded body.
{
"errorMessage": "Requester has no management permission",
"errorCode": 403,
"exceptionType": "FORBIDDEN",
"origin": "http://localhost:8443/serviceregistry/mgmt/service-instances"
}
interface-template-query
The service operation request requires an identity related header or certificate and may optionally include an InterfaceTemplateQueryRequest JSON encoded body.
POST /serviceregistry/mgmt/interface-templates/query HTTP/1.1
Authorization: Bearer <authorization-info>
{
"pagination": {
"page": 1,
"size": 1,
"direction": "ASC",
"sortField": "name"
},
"templateNames": [
],
"protocols": [
"tcp"
]
}
The service operation responds with the status code 200
called successfully. The response also contains an InterfaceTemplateListResponse JSON encoded body.
{
"entries": [
{
"name": "generic-mqtt",
"protocol": "tcp",
"propertyRequirements": [
{
"name": "accessAddresses",
"mandatory": true,
"validator": "NOT_EMPTY_ADDRESS_LIST",
"validatorParams": []
},
{
"name": "accessPort",
"mandatory": true,
"validator": "PORT",
"validatorParams": []
},
{
"name": "baseTopic",
"mandatory": true
},
{
"name": "operations",
"mandatory": true,
"validator": "NOT_EMPTY_STRING_SET",
"validatorParams": [
"NAME"
]
}
],
"createdAt": "2024-12-09T18:52:48Z",
"updatedAt": "2024-12-09T18:52:48Z"
}
],
"count": 3
}
The error codes are, 400
if the request is malformed, 401
if the requester authentication was unsuccessful, 403
if the authenticated requester has no permission and 500
if an unexpected error happens. The error response also contains an ErrorResponse JSON encoded body.
{
"type": "about:blank",
"title": "Bad Request",
"status": 400,
"detail": "Failed to read request",
"instance": "/serviceregistry/mgmt/interface-templates/query"
}
interface-template-create
The service operation request requires an identity related header or certificate and an InterfaceTemplateListRequest JSON encoded body.
POST /serviceregistry/mgmt/interface-templates HTTP/1.1
Authorization: Bearer <authorization-info>
{
"interfaceTemplates": [
{
"name": "custom-ftp",
"protocol": "tcp",
"propertyRequirements": [
{
"name": "accessAddresses",
"mandatory": true,
"validator": "not_empty_address_list",
"validatorParams": [
]
}
]
},
{
"name": "my-awesome-ftp",
"protocol": "tcp",
"propertyRequirements": [
{
"name": "accessAddresses",
"mandatory": true,
"validator": "not_empty_address_list",
"validatorParams": [
]
}
]
}
]
}
The service operation responds with the status code 201
if the interface template entities were successfully created. The response also contains an InterfaceTemplateListResponse JSON encoded body.
{
"entries": [
{
"name": "my-awesome-ftp",
"protocol": "tcp",
"propertyRequirements": [
{
"name": "accessAddresses",
"mandatory": true,
"validator": "NOT_EMPTY_ADDRESS_LIST",
"validatorParams": []
}
],
"createdAt": "2025-03-15T23:09:00.882593100Z",
"updatedAt": "2025-03-15T23:09:00.882593100Z"
},
{
"name": "custom-ftp",
"protocol": "tcp",
"propertyRequirements": [
{
"name": "accessAddresses",
"mandatory": true,
"validator": "NOT_EMPTY_ADDRESS_LIST",
"validatorParams": []
}
],
"createdAt": "2025-03-15T23:09:00.892877600Z",
"updatedAt": "2025-03-15T23:09:00.892877600Z"
}
],
"count": 2
}
The error codes are, 400
if the request is malformed, 401
if the requester authentication was unsuccessful, 403
if the authenticated requester has no permission and 500
if an unexpected error happens. The error response also contains an ErrorResponse JSON encoded body.
{
"errorMessage": "Interface template already exists: custom-ftp",
"errorCode": 400,
"exceptionType": "INVALID_PARAMETER",
"origin": "POST /serviceregistry/mgmt/interface-templates"
}
interface-template-remove
The service operation request requires an identity related header or certificate and a List<Name> as path parameter, which contains the string identifier of the interface descriptors that need to be removed.
DELETE /serviceregistry/mgmt/interface-templates?names=custom-ftp&names=my-awesome-ftp HTTP/1.1
Authorization: Bearer <authorization-info>
The service operation responds with the status code 200
if called successfully. The success response does not contain any response body.
The error codes are, 400
if the request is malformed, 401
if the requester authentication was unsuccessful, 403
if the authenticated requester has no permission and 500
if an unexpected error happens. The error response also contains an ErrorResponse JSON encoded body.
{
"errorMessage": "No authorization header has been provided",
"errorCode": 401,
"exceptionType": "AUTH"
}