MEF Streaming Management (Mef Lso Interlude Streaming Management All In One)
MEF Streaming Management from MEF — 4 path(s) described in OpenAPI.
MEF Streaming Management from MEF — 4 path(s) described in OpenAPI.
openapi: 3.0.1
info:
description: |
**This file forms part of Mplify 147**
**This API implements part of the Business Requirements & Use Cases described
in Mplify 133.1 section 12.**
List of use cases supported by Performance Monitoring Data Streaming Management API:
- List Available Topics for Subscription
- List Subscribed Topics
- Subscribe to a Topic
- Unsubscribe from a Topic
Most important entities supported by the API:
- **Topic** - metadata describing a topic available for subscription
- **Subscription** - contains metadata information describing a data stream that provides the details allowing for data consumption
This API uses by reference AsyncAPI v2.6.0 models.
Copyright 2025 Mplify Alliance and its contributors
title: Streaming Management
version: 1.0.0
servers:
- url: 'https://{serverBase}/mefApi/interlude/streamingManagement/v1'
variables:
serverBase:
default: mplify.net
description: The base of SOF's URL.
tags:
- description: Groups all operations related to the available topic.
name: topic
- description: |
Groups all operations related to subscribed topics and subscription management.
name: subscription
- name: events subscription
paths:
/topic:
get:
description:
List topics available for subscription to performance monitoring data
operationId: topicList
parameters:
- description: Category of the available topic
in: query
name: category
required: false
schema:
type: string
- description:
A communication protocol supported by the available topic
in: query
name: protocol
required: false
schema:
type: string
- description:
Requested number of elements to be provided in response requested
by client
in: query
name: limit
required: false
schema:
format: int32
type: integer
- description:
Requested index for the start of elements to be provided in
response requested by the client. Note that the index starts with
"0".
in: query
name: offset
required: false
schema:
format: int32
type: integer
responses:
'200':
content:
application/json;charset=utf-8:
schema:
items:
$ref: '#/components/schemas/Topic'
type: array
description: Success
headers:
X-Pagination-Throttled:
description: |
Used to indicate that the result page was throttled to a maximum possible size and there are additional results that can be fetched
schema:
type: boolean
X-Result-Count:
description: |
Actual number of items returned in the response body E.g. if there are 50 matching items in total, but the request has offset=10 and limit=10, then the X-Total-Count is 50.
schema:
type: integer
X-Total-Count:
description: Total number of items included in the response
schema:
type: integer
'400':
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Error400'
description: Bad Request
'401':
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Error401'
description: Unauthorized
'403':
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Error403'
description: Forbidden
'405':
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Error'
description: Method Not Allowed
'500':
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Error500'
description: Internal Server Error
summary: Retrieve Available Topics
tags:
- topic
/topic/{id}:
get:
description: Information about the topic available for subscription
operationId: topicById
parameters:
- description: Identifier of the topic
in: path
name: id
required: true
schema:
type: string
responses:
'200':
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Topic'
description: Success
'400':
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Error400'
description: Bad Request
'401':
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Error401'
description: Unauthorized
'403':
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Error403'
description: Forbidden
'404':
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Error404'
description: Not Found
'405':
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Error'
description: Method Not Allowed
'500':
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Error500'
description: Internal Server Error
summary: Retrieve Available Topic by an Identifier
tags:
- topic
/subscription:
get:
description: List all the subscriptions to all the topics
operationId: subscriptionList
parameters:
- description: Identifier of a topic subscription belongs to
in: query
name: topicId
required: false
schema:
type: string
- description:
A communication protocol supported by the available topic
in: query
name: protocol
required: false
schema:
type: string
- description:
Requested number of elements to be provided in response requested
by client
in: query
name: limit
required: false
schema:
format: int32
type: integer
- description:
Requested index for the start of elements to be provided in
response requested by the client. Note that the index starts with
"0".
in: query
name: offset
required: false
schema:
format: int32
type: integer
responses:
'200':
content:
application/json;charset=utf-8:
schema:
items:
$ref: '#/components/schemas/TopicSubscription'
type: array
application/vnd.aai.asyncapi+json:
schema:
$ref: '#/components/schemas/AsyncAPIModel'
description: Success
headers:
X-Pagination-Throttled:
description: |
Used to indicate that the result page was throttled to the maximum possible size and there are additional results that can be fetched
schema:
type: boolean
X-Result-Count:
description: |
An actual number of items returned in the response body E.g. if there are 50 matching items in total, but the request has offset=10 and limit=10, then the X-Total-Count is 50.
schema:
type: integer
X-Total-Count:
description: Total number of items included in the response
schema:
type: integer
'400':
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Error400'
description: Bad Request
'401':
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Error401'
description: Unauthorized
'403':
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Error403'
description: Forbidden
'405':
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Error'
description: Method Not Allowed
'500':
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Error500'
description: Internal Server Error
summary: Retrieve Topic Subscriptions List
tags:
- subscription
post:
description: Subscribe to the selected topic
operationId: subscribeTopic
requestBody:
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/TopicSubscriptionRequest'
responses:
'201':
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/TopicSubscription'
description: Registered
'400':
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Error400'
description: Bad Request
'401':
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Error401'
description: Unauthorized
'403':
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Error403'
description: Forbidden
'405':
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Error'
description: Method Not Allowed
'422':
content:
application/json;charset=utf-8:
schema:
items:
$ref: '#/components/schemas/Error422'
type: array
description:
Unprocessable entity due to the business validation problems
'500':
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Error500'
description: Internal Server Error
summary: Subscribe To a Topic
tags:
- subscription
/subscription/{id}:
delete:
description: Remove a subscription for a topic
operationId: unsubscribeTopic
parameters:
- description: Identifier of the subscription
in: path
name: id
required: true
schema:
type: string
responses:
'204':
description: Unsubscribe operation successful
'400':
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Error400'
description: Bad Request
'401':
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Error401'
description: Unauthorized
'403':
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Error403'
description: Forbidden
'404':
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Error404'
description: Not Found
'405':
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Error'
description: Method Not Allowed
'500':
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Error500'
description: Internal Server Error
summary: Unsubscribe From a Topic
tags:
- subscription
get:
description: Retrieve information about a subscription to a topic
operationId: subscriptionById
parameters:
- description: Identifier of the subscription
in: path
name: id
required: true
schema:
type: string
responses:
'200':
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/TopicSubscription'
description: Success
'400':
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Error400'
description: Bad Request
'401':
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Error401'
description: Unauthorized
'403':
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Error403'
description: Forbidden
'404':
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Error404'
description: Not Found
'405':
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Error'
description: Method Not Allowed
'500':
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Error500'
description: Internal Server Error
summary: Retrieve Topic Subscription By an Identifier
tags:
- subscription
components:
parameters:
Offset:
description:
Requested index for the start of elements to be provided in response
requested by the client. Note that the index starts with "0".
in: query
name: offset
required: false
schema:
format: int32
type: integer
Limit:
description:
Requested number of elements to be provided in response requested by
client
in: query
name: limit
required: false
schema:
format: int32
type: integer
responses:
'400':
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Error400'
description: Bad Request
'401':
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Error401'
description: Unauthorized
'403':
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Error403'
description: Forbidden
'404':
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Error404'
description: Not Found
'405':
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Error'
description: Method Not Allowed
'422':
content:
application/json;charset=utf-8:
schema:
items:
$ref: '#/components/schemas/Error422'
type: array
description: Unprocessable entity due to the business validation problems
'500':
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Error500'
description: Internal Server Error
schemas:
AsyncAPIModel:
$ref: 'http://asyncapi.com/definitions/2.6.0/asyncapi.json'
Error:
description:
Standard Class used to describe API response error Not intended to be
used directly. The `code` in the HTTP header is used as a discriminator
for the type of error returned in runtime.
properties:
message:
description:
Text that provides mode details and corrective actions related to
the error. This can be shown to a client user.
type: string
reason:
description:
Text that explains the reason for the error. This can be shown to a
client user.
maxLength: 255
type: string
referenceError:
description: URL pointing to documentation describing the error
format: uri
type: string
required:
- reason
type: object
Error400:
allOf:
- $ref: '#/components/schemas/Error'
- properties:
code:
$ref: '#/components/schemas/Error400Code'
required:
- code
type: object
description:
Bad Request. (https://tools.ietf.org/html/rfc7231#section-6.5.1)
Error400Code:
description: |-
One of the following error codes:
- missingQueryParameter: The URI is missing a required query-string parameter
- missingQueryValue: The URI is missing a required query-string parameter value
- invalidQuery: The query section of the URI is invalid.
- invalidBody: The request has an invalid body
enum:
- missingQueryParameter
- missingQueryValue
- invalidQuery
- invalidBody
type: string
Error401:
allOf:
- $ref: '#/components/schemas/Error'
- properties:
code:
$ref: '#/components/schemas/Error401Code'
required:
- code
type: object
description:
Unauthorized. (https://tools.ietf.org/html/rfc7235#section-3.1)
Error401Code:
description: |-
One of the following error codes:
- missingCredentials: No credentials provided.
- invalidCredentials: Provided credentials are invalid or expired
enum:
- missingCredentials
- invalidCredentials
type: string
Error403:
allOf:
- $ref: '#/components/schemas/Error'
- properties:
code:
$ref: '#/components/schemas/Error403Code'
required:
- code
type: object
description:
Forbidden. This code indicates that the server understood the request
but refuses to authorize it.
(https://tools.ietf.org/html/rfc7231#section-6.5.3)
Error403Code:
description: |-
This code indicates that the server understood the request but refuses to authorize it because of one of the following error codes:
- accessDenied: Access denied
- forbiddenRequester: Forbidden requester
- tooManyUsers: Too many users
enum:
- accessDenied
- forbiddenRequester
- tooManyUsers
type: string
Error404:
allOf:
- $ref: '#/components/schemas/Error'
- properties:
code:
description: |-
The following error code:
- notFound: A current representation for the target resource not found
enum:
- notFound
type: string
required:
- code
type: object
description:
Resource for the requested path not found.
(https://tools.ietf.org/html/rfc7231#section-6.5.4)
Error422:
allOf:
- $ref: '#/components/schemas/Error'
- properties:
code:
$ref: '#/components/schemas/Error422Code'
propertyPath:
description: |-
A pointer to a particular property of the payload that caused the validation issue. It is highly recommended that this property should be used.
Defined using JavaScript Object Notation (JSON) Pointer (https://tools.ietf.org/html/rfc6901).
type: string
required:
- code
type: object
description:
Unprocessable entity due to a business validation problem.
(https://tools.ietf.org/html/rfc4918#section-11.2)
Error422Code:
description: |-
One of the following error codes:
- missingProperty: The property that was expected is not present in the payload
- invalidValue: The property has an incorrect value
- invalidFormat: The property value does not comply with the expected value format
- referenceNotFound: The object referenced by the property cannot be identified in the target system
- unexpectedProperty: Additional, not expected property has been provided
- tooLargeDataset: A requested entity will produce too much data
- tooManyRecords: The number of records to be provided in the response exceeds the threshold
- tooManyRequests: The number of simultaneous requests from one API client exceeds the threshold
- otherIssue: Other problem was identified (detailed information provided in a reason)
enum:
- missingProperty
- invalidValue
- invalidFormat
- referenceNotFound
- unexpectedProperty
- tooLargeDataset
- tooManyRecords
- tooManyRequests
- otherIssue
type: string
Error500:
allOf:
- $ref: '#/components/schemas/Error'
- properties:
code:
description: |-
The following error code:
- internalError: Internal server error - the server encountered an unexpected condition that prevented it from fulfilling the request.
enum:
- internalError
type: string
required:
- code
type: object
description:
Internal Server Error.
(https://tools.ietf.org/html/rfc7231#section-6.6.1)
Subscription:
description:
Provides stream metadata information that allows for data consumption.
properties:
id:
description: A unique identifier for the stream.
type: string
description:
description: An explanatory description of the stream.
type: string
priority:
description: "The priority level of the stream. Can be high, medium,
or\
\ low."
type: string
connectionConfig:
$ref: '#/components/schemas/ConnectionConfig'
required:
- id
type: object
Topic:
additionalProperties: true
description: |
Provides metadata describing a topic available for subscription. This object is used to define available consumption mechanisms and the data model.
properties:
id:
description: |
An identifier for the topic. This can be used to uniquely identify the topic within the Server system.
type: string
category:
$ref: '#/components/schemas/Category'
description: |
The category of the topic. This can be used to group topics based on their characteristics.
modelRef:
description: |
A reference to a model that describes the structure of the data associated with the topic.
format: uri
type: string
availableChannels:
description: |
An array of channel descriptions that provide information about the channels through which the topic can be accessed.
items:
$ref: '#/components/schemas/ChannelDescription'
minItems: 1
type: array
required:
- id
type: object
TopicSubscription:
allOf:
- $ref: '#/components/schemas/Subscription'
- $ref: '#/components/schemas/TopicSubscriptionRequest'
description: Information about the subscription to a specific topic
TopicSubscriptionRequest:
additionalProperties: true
properties:
protocol:
description: |
Name of the protocol consumer is intended to use to consume data from `topicId`. The name of the protocol must be one of the defined for the topic.
type: string
topicId:
description: Identifier of the topic consumer wants to subscribe to
type: string
required:
- protocol
- topicId
type: object
ConnectionConfig:
description:
Configuration settings for establishing a connection to the stream.
properties:
servers:
$ref: '#/components/schemas/servers'
channel:
$ref: '#/components/schemas/Channel'
type: object
servers:
additionalProperties:
oneOf:
- $ref: '#/components/schemas/Reference'
- $ref: '#/components/schemas/server'
description: The Servers Object is a map of Server Objects.
type: object
Channel:
properties:
name:
description:
The name of the channel through which the stream data is
transmitted.
format: uri-template
minLength: 1
type: string
bindings:
$ref: '#/components/schemas/bindingsObject'
type: object
bindingsObject:
additionalProperties: true
description: Map describing protocol-specific definitions for a server.
properties:
http:
type: object
ws:
type: object
amqp:
type: object
amqp1:
type: object
mqtt:
type: object
mqtt5:
type: object
kafka:
type: object
anypointmq:
type: object
nats:
type: object
jms:
type: object
sns:
type: object
sqs:
type: object
stomp:
type: object
redis:
type: object
ibmmq:
type: object
solace:
type: object
googlepubsub:
type: object
pulsar:
type: object
type: object
SubscriptionRequest:
additionalProperties: true
properties:
protocol:
description: |
Name of the protocol consumer is intended to use to consume data from `topicId`. The name of the protocol must be one of the defined for the topic.
type: string
topicId:
description: Identifier of the topic consumer wants to subscribe to
type: string
required:
- protocol
- topicId
type: object
ChannelDescription:
properties:
protocol:
description: Name of technical protocol allowing for consumption
type: string
description:
description: Human-friendly description of the protocol
type: string
required:
- protocol
type: object
Reference:
properties:
$ref:
$ref: '#/components/schemas/ReferenceObject'
required:
- $ref
type: object
ReferenceObject:
description: "A simple object to allow referencing other components in
the specification,\
\ internally and externally."
format: uri-reference
type: string
server:
additionalProperties: false
description: "An object representing a message broker, a server or any
other\
\ kind of computer program capable of sending and/or receiving data"
properties:
url:
description: "A URL to the target host. This URL supports Server
Variables\
\ and MAY be relative, to indicate that the host location is
relative\
\ to the location where the AsyncAPI document is being served."
type: string
description:
description:
An optional string describing the host designated by the URL.
CommonMark syntax MAY be used for rich text representation.
type: string
protocol:
description: "The protocol this URL supports for connection.
Supported protocol\
\ include, but are not limited to: amqp, amqps, http, https, ibmmq,
jms,\
\ kafka, kafka-secure, anypointmq, mqtt, secure-mqtt, solace,
stomp, stomps,\
\ ws, wss, mercure, googlepubsub."
type: string
protocolVersion:
description: "The version of the protocol used for connection. For
instance:\
\ AMQP 0.9.1, HTTP 2.0, Kafka 1.0.0, etc."
type: string
variables:
$ref: '#/components/schemas/serverVariables'
security:
description:
'A declaration of which security mechanisms can be used with this
server. The list of values includes alternative security
requirement objects that can be used. '
items:
$ref: '#/components/schemas/SecurityRequirement'
type: array
bindings:
$ref: '#/components/schemas/bindingsObject'
tags:
description:
A list of tags for logical grouping and categorization of servers.
items:
$ref: '#/components/schemas/tag'
type: array
uniqueItems: true
required:
- protocol
- url
type: object
serverVariables:
additionalProperties:
oneOf:
- $ref: '#/components/schemas/Reference'
- $ref: '#/components/schemas/serverVariable'
description:
A map between a variable name and its value. The value is used for
substitution in the server's URL template.
type: object
SecurityRequirement:
additionalProperties:
items:
type: string
type: array
uniqueItems: true
description:
Lists of the required security schemes that can be used to execute an
operation
type: object
tag:
additionalProperties: false
description: Allows adding meta data to a single tag.
properties:
name:
description: The name of the tag.
type: string
description:
description: A short description for the tag.
type: string
externalDocs:
$ref: '#/components/schemas/externalDocs'
required:
- name
type: object
externalDocs:
additionalProperties: false
description:
Allows referencing an external resource for extended documentation.
properties:
description:
description: A short description of the target documentation.
type: string
url:
description:
The URL for the target documentation. This MUST be in the form of
an absolute URL.
format: uri
type: string
required:
- url
type: object
serverVariable:
additionalProperties: false
description:
An object representing a Server Variable for server URL template
substitution.
properties:
enum:
description:
An enumeration of string values to be used if the substitution
options are from a limited set.
items:
type: string
type: array
uniqueItems: true
default:
description: "The default value to use for substitution, and to send,
if\
\ an alternate value is not supplied."
type: string
description:
description: 'An optional description for the server variable. '
type: string
examples:
description: An array of examples of the server variable.
items:
type: string
type: array
type: object
Category:
description: |
The category of the topic. This can be used to group topics based on their
# --- truncated at 32 KB (32 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/mef/refs/heads/main/openapi/mef-lso-interlude-streaming-management-all-in-one-openapi.yml