MEF

MEF LSO Legato Streaming Management

Streaming Management — the OpenAPI definition published by Mplify (formerly MEF) in the MEF LSO Legato SDK, Kylie release. LSO Legato is the Interface Reference Point between Business Applications (BUS) and the Service Orchestration Functionality (SOF) inside a single Service Provider. 4 path(s), 6 operation(s). Apache-2.0 licensed and openly downloadable from public GitHub.

OpenAPI Specification

mef-lso-legato-streaming-management-all-in-one-openapi.yml Raw ↑
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/legato/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 cha

# --- truncated at 32 KB (32 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/mef/refs/heads/main/openapi/mef-lso-legato-streaming-management-all-in-one-openapi.yml