serviceOrchestrationPushManagement IDD (dynamic strategy)
generic_mqtt & generic_mqtts
Overview
This page describes the generic_mqtt and generic_mqtts service interface of serviceOrchestrationPushManagement, which enables systems to manage data and activities related to the push type of service orchestration process in bulk. It’s implemented using protocol, encoding as stated in the following tables:
generic_mqtt
Profile type | type | Version |
---|---|---|
Transfer protocol | MQTT | 3.1 and 3.1.1 |
Data encryption | N/A | - |
Encoding | JSON | RFC 8259 |
Compression | N/A | - |
generic_mqtts
Profile type | type | Version |
---|---|---|
Transfer protocol | MQTT | 3.1 and 3.1.1 |
Data encryption | TLS | - |
Encoding | JSON | RFC 8259 |
Compression | N/A | - |
Hereby the Interface Design Description (IDD) is provided to the serviceOrchestrationPushManagement – Service Description. For further details about how this service is meant to be used, please consult that document.
Interface Description
subscribe
The service operation request requires an MQTTRequestTemplate JSON encoded message in which the authentication is a proper identity info and the payload is a ServiceOrchestrationSubscriberListRequest.
Topic: arrowhead/serviceorchestration/orchestration/management/push/subscribe
{
"traceId":"<trace-id>",
"authentication":"<authentication-data>",
"responseTopic":"<response-topic>",
"qosRequirement":<0|1|2>,
"payload":{
"subscriptions":[
{
"targetSystemName":"TemperatureConsumer",
"orchestrationRequest":{
"serviceRequirement":{
"serviceDefinition":"kelvinInfo",
"operations":[
"query-temperature"
],
"versions":[
],
"alivesAt":"2025-10-05T11:35:14Z",
"metadataRequirements":[
],
"interfaceTemplateNames":[
"generic_https"
],
"interfaceAddressTypes":[
"HOSTNAME",
"IPV4"
],
"interfacePropertyRequirements":[
],
"securityPolicies":[
"TIME_LIMITED_TOKEN_AUTH"
],
"preferredProviders":[
]
},
"orchestrationFlags":{
"MATCHMAKING":"true",
"ALLOW_TRANSLATION":"true",
"ONLY_PREFERRED":"false",
"ONLY_EXCLUSIVE":"false",
"ALLOW_INTERCLOUD":"false",
"ONLY_INTERCLOUD":"false"
},
"qosRequirements":{
"maxLatencyMs":"10"
},
"exclusivityDuration":600
},
"notifyInterface":{
"protocol":"mqtt",
"properties":{
"topic":"arrowhead/orchestration-push"
}
},
"duration":100000
}
]
}
}
The service operation responds with an MQTTResponseTemplate JSON encoded message in which the status code is 201
if subscriptions were successfully created. The response template payload is a ServiceOrchestrationSubscriptionListResponse.
{
"status":201,
"traceId":"<trace-id>",
"receiver":"TemperatureSensorManager",
"payload":{
"entries":[
{
"id":"d2fefc6a-f563-40a2-9ce4-3512c2887755",
"ownerSystemName":"TemperatureSensorManager",
"targetSystemName":"TemperatureConsumer",
"orchestrationRequest":{
"serviceRequirement":{
"serviceDefinition":"kelvinInfo",
"operations":[
"query-temperature"
],
"versions":[
],
"alivesAt":"2025-10-05T11:35:14Z",
"metadataRequirements":[
],
"interfaceTemplateNames":[
"generic_https"
],
"interfaceAddressTypes":[
"HOSTNAME",
"IPV4"
],
"interfacePropertyRequirements":[
],
"securityPolicies":[
"TIME_LIMITED_TOKEN_AUTH"
],
"preferredProviders":[
]
},
"orchestrationFlags":{
"MATCHMAKING":"true",
"ALLOW_TRANSLATION":"true",
"ONLY_PREFERRED":"false",
"ONLY_EXCLUSIVE":"false",
"ALLOW_INTERCLOUD":"false",
"ONLY_INTERCLOUD":"false"
},
"qosRequirements":{
"maxLatencyMs":"10"
},
"exclusivityDuration":600
},
"notifyInterface":{
"protocol":"mqtt",
"properties":{
"topic":"arrowhead/orchestration-push"
}
},
"expiredAt":"2025-10-08T11:35:14Z",
"createdAt":"2025-10-05T11:30:14Z"
}
],
"count":1
}
}
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. In these cases the response template payload is an ErrorResponse JSON.
{
"status":400,
"traceId":"<trace-id>",
"receiver":"TemperatureSensorManager",
"payload":{
"errorMessage":"Subscription request list is empty",
"errorCode":400,
"exceptionType":"INVALID_PARAMETER",
"origin":"arrowhead/serviceorchestration/orchestration/management/push/subscribe"
}
}
unsubscribe
The service operation request requires an MQTTRequestTemplate JSON encoded message in which the authentication is a proper identity info and the payload is a List<UUID>. It contains the identifiers of the subscription records to remove.
Topic: arrowhead/serviceorchestration/orchestration/management/push/unsubscribe
{
"traceId":"<trace-id>",
"authentication":"<authentication-data>",
"responseTopic":"<response-topic>",
"qosRequirement":<0|1|2>,
"payload":[
"d2fefc6a-f563-40a2-9ce4-3512c2887755",
"a44ab333-cfb5-420b-a7cf-b327904e243b"
]
}
The service operation responds with an MQTTResponseTemplate JSON encoded message in which the status code is 200
if called successfully. The response template payload is empty.
{
"status":200,
"traceId":"<trace-id>",
"receiver":"TemperatureSensorManager",
"payload":""
}
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. In these cases the response template payload is an ErrorResponse JSON.
{
"status":403,
"traceId":"<trace-id>",
"receiver":"TemperatureSensorManager",
"payload":{
"errorMessage":"a44ab333-cfb5-420b-a7cf-b327904e243b is not owned by the requester",
"errorCode":403,
"exceptionType":"FORBIDDEN",
"origin":"arrowhead/serviceorchestration/orchestration/management/push/unsubscribe"
}
}
trigger
The service operation request requires an MQTTRequestTemplate JSON encoded message in which the authentication is a proper identity info and the payload is a ServiceOrchestrationPushTriggerRequest.
Topic: arrowhead/serviceorchestration/orchestration/management/push/trigger
{
"traceId":"<trace-id>",
"authentication":"<authentication-data>",
"responseTopic":"<response-topic>",
"qosRequirement":<0|1|2>,
"payload":{
"targetSystems":[
"TemperatureConsumer"
],
"subscriptionIds":[
]
}
}
The service operation responds with an MQTTResponseTemplate JSON encoded message in which the status code is 201
if orchestration jobs were successfully created. The response template payload is a ServiceOrchestrationJobListResponse.
{
"status":201,
"traceId":"<trace-id>",
"receiver":"TemperatureSensorManager",
"payload":{
"jobs":[
{
"id":"1fac8a1c-aa4b-456e-b501-01289035fcc6",
"status":"IN_PROGRESS",
"type":"PUSH",
"requesterSystem":"TemperatureSensorManager",
"targetSystem":"TemperatureConsumer",
"serviceDefinition":"kelvinInfo",
"subscriptionId":"d2fefc6a-f563-40a2-9ce4-3512c2887755",
"message":"",
"createdAt":"2025-10-05T11:30:14Z",
"startedAt":"2025-10-05T11:30:17Z",
"finishedAt":""
}
]
}
}
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. In these cases the response template payload is an ErrorResponse JSON.
{
"status":400,
"traceId":"<trace-id>",
"receiver":"TemperatureSensorManager",
"payload":{
"errorMessage":"Invalid subscription id: a44ab333-cfb5-420b-a7cf-b327904e243b",
"errorCode":400,
"exceptionType":"INVALID_PARAMETER",
"origin":"arrowhead/serviceorchestration/orchestration/management/push/trigger"
}
}
query
The service operation request requires an MQTTRequestTemplate JSON encoded message in which the authentication is a proper identity info and the payload is a ServiceOrchestrationSubscriptionQueryRequest.
Topic: arrowhead/serviceorchestration/orchestration/management/push/query
{
"traceId":"<trace-id>",
"authentication":"<authentication-data>",
"responseTopic":"<response-topic>",
"qosRequirement":<0|1|2>,
"payload":{
"pagination":{
"page":0,
"size":20,
"direction":"ASC",
"sortField":"createdAt"
},
"ownerSystems":[
"TemperatureSensorManager"
],
"targetSystems":[
"TemperatureConsumer"
],
"serviceDefinitions":[
"kelvinInfo"
]
}
}
The service operation responds with an MQTTResponseTemplate JSON encoded message in which the status code is 200
if subscriptions were successfully queried. The response template payload is a ServiceOrchestrationSubscriptionListResponse.
{
"status":200,
"traceId":"<trace-id>",
"receiver":"TemperatureSensorManager",
"payload":{
"entries":[
{
"id":"d2fefc6a-f563-40a2-9ce4-3512c2887755",
"ownerSystemName":"TemperatureSensorManager",
"targetSystemName":"TemperatureConsumer",
"orchestrationRequest":{
"serviceRequirement":{
"serviceDefinition":"kelvinInfo",
"operations":[
"query-temperature"
],
"versions":[
],
"alivesAt":"2025-10-05T11:35:14Z",
"metadataRequirements":[
],
"interfaceTemplateNames":[
"generic_https"
],
"interfaceAddressTypes":[
"HOSTNAME",
"IPV4"
],
"interfacePropertyRequirements":[
],
"securityPolicies":[
"TIME_LIMITED_TOKEN_AUTH"
],
"preferredProviders":[
]
},
"orchestrationFlags":{
"MATCHMAKING":"true",
"ALLOW_TRANSLATION":"true",
"ONLY_PREFERRED":"false",
"ONLY_EXCLUSIVE":"false",
"ALLOW_INTERCLOUD":"false",
"ONLY_INTERCLOUD":"false"
},
"qosRequirements":{
"maxLatencyMs":"10"
},
"exclusivityDuration":600
},
"notifyInterface":{
"protocol":"mqtt",
"properties":{
"topic":"arrowhead/orchestration-push"
}
},
"expiredAt":"2025-10-08T11:35:14Z",
"createdAt":"2025-10-05T11:30:14Z"
}
],
"count":1
}
}
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. In these cases the response template payload is an ErrorResponse JSON.
{
"status":400,
"traceId":"<trace-id>",
"receiver":"TemperatureSensorManager",
"payload":{
"errorMessage":"Owner system list contains empty element",
"errorCode":400,
"exceptionType":"INVALID_PARAMETER",
"origin":"arrowhead/serviceorchestration/orchestration/management/push/query"
}
}