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-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:
  - name: topic
    description: Groups all operations related to the available topic.
  - name: subscription
    description: >+
      Groups all operations related to subscribed topics and 
      subscription management.
  - name: events subscription
paths:
  /topic:
    get:
      operationId: topicList
      summary: Retrieve Available Topics
      description: List topics available for subscription to performance monitoring data
      parameters:
        - name: category
          required: false
          in: query
          description: Category of the available topic
          schema:
            type: string
        - name: protocol
          required: false
          in: query
          description: A communication protocol supported by the available topic
          schema:
            type: string
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/Offset'
      tags:
        - topic
      responses:
        '200':
          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
          content:
            application/json;charset=utf-8:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Topic'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '405':
          $ref: '#/components/responses/405'
        '500':
          $ref: '#/components/responses/500'
  /topic/{id}:
    get:
      operationId: topicById
      summary: Retrieve Available Topic by an Identifier
      description: Information about the topic available for subscription
      tags:
        - topic
      parameters:
        - name: id
          description: Identifier of the topic
          required: true
          in: path
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Topic'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '405':
          $ref: '#/components/responses/405'
        '500':
          $ref: '#/components/responses/500'
  /subscription:
    get:
      operationId: subscriptionList
      summary: Retrieve Topic Subscriptions List
      description: List all the subscriptions to all the topics
      tags:
        - subscription
      parameters:
        - name: topicId
          required: false
          in: query
          description: Identifier of a topic subscription belongs to
          schema:
            type: string
        - name: protocol
          required: false
          in: query
          description: A communication protocol supported by the available topic
          schema:
            type: string
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/Offset'
      responses:
        '200':
          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
          content:
            application/json;charset=utf-8:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/TopicSubscription'
            'application/vnd.aai.asyncapi+json':
              schema:
                $ref: '#/components/schemas/AsyncAPIModel'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '405':
          $ref: '#/components/responses/405'
        '500':
          $ref: '#/components/responses/500'
    post:
      operationId: subscribeTopic
      summary: Subscribe To a Topic
      description: Subscribe to the selected topic
      tags:
        - subscription
      requestBody:
        content:
          application/json;charset=utf-8:
            schema:
              $ref: '#/components/schemas/TopicSubscriptionRequest'
      responses:
        '201':
          description: Registered
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/TopicSubscription'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '405':
          $ref: '#/components/responses/405'
        '422':
          $ref: '#/components/responses/422'
        '500':
          $ref: '#/components/responses/500'
  /subscription/{id}:
    delete:
      operationId: unsubscribeTopic
      summary: Unsubscribe From a Topic
      description: Remove a subscription for a  topic
      parameters:
        - name: id
          description: Identifier of the subscription
          required: true
          in: path
          schema:
            type: string
      tags:
        - subscription
      responses:
        '204':
          description: Unsubscribe operation successful 
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '405':
          $ref: '#/components/responses/405'
        '500':
          $ref: '#/components/responses/500'
    get:
      operationId: subscriptionById
      summary: Retrieve Topic Subscription By an Identifier
      description: Retrieve information about a subscription to a topic
      tags:
        - subscription
      parameters:
        - name: id
          description: Identifier of the subscription
          required: true
          in: path
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/TopicSubscription'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '405':
          $ref: '#/components/responses/405'
        '500':
          $ref: '#/components/responses/500'

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
      schema:
        format: int32
        type: integer
    Limit:
      description: >-
        Requested number of elements to be provided in response requested by
        client
      in: query
      name: limit
      schema:
        format: int32
        type: integer
  schemas:
    AsyncAPIModel:
      $ref: 'http://asyncapi.com/definitions/2.6.0/asyncapi.json'
    Error:
      type: object
      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:
          type: string
          description: >-
            Text that provides mode details and corrective actions related to
            the error. This can be shown to a client user.
        reason:
          type: string
          description: >-
            Text that explains the reason for the error. This can be shown to a
            client user.
          maxLength: 255
        referenceError:
          type: string
          description: URL pointing to documentation describing the error
          format: uri
      required:
        - reason
    Error400:
      allOf:
        - $ref: '#/components/schemas/Error'
        - type: object
          properties:
            code:
              $ref: '#/components/schemas/Error400Code'
          required:
            - code
      description: 'Bad Request. (https://tools.ietf.org/html/rfc7231#section-6.5.1)'
    Error400Code:
      type: string
      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
    Error401:
      allOf:
        - $ref: '#/components/schemas/Error'
        - type: object
          properties:
            code:
              $ref: '#/components/schemas/Error401Code'
          required:
            - code
      description: 'Unauthorized.  (https://tools.ietf.org/html/rfc7235#section-3.1)'
    Error401Code:
      type: string
      description: |-
        One of the following error codes:
        - missingCredentials: No credentials provided.
        - invalidCredentials: Provided credentials are invalid or expired
      enum:
        - missingCredentials
        - invalidCredentials
    Error403:
      allOf:
        - $ref: '#/components/schemas/Error'
        - type: object
          properties:
            code:
              $ref: '#/components/schemas/Error403Code'
          required:
            - code
      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:
      type: string
      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
    Error404:
      allOf:
        - $ref: '#/components/schemas/Error'
        - type: object
          properties:
            code:
              type: string
              description: |-
                The following error code:
                - notFound: A current representation for the target resource not found
              enum:
                - notFound
          required:
            - code
      description: >-
        Resource for the requested path not found.
        (https://tools.ietf.org/html/rfc7231#section-6.5.4)
    Error422:
      allOf:
        - $ref: '#/components/schemas/Error'
        - type: object
          properties:
            code:
              $ref: '#/components/schemas/Error422Code'
            propertyPath:
              type: string
              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).
          required:
            - code
      description: >-
        Unprocessable entity due to a business validation problem.
        (https://tools.ietf.org/html/rfc4918#section-11.2)
    Error422Code:
      type: string
      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
    Error500:
      allOf:
        - $ref: '#/components/schemas/Error'
        - type: object
          properties:
            code:
              type: string
              description: >-
                The following error code:

                - internalError: Internal server error - the server encountered
                an unexpected condition that prevented it from fulfilling the
                request.
              enum:
                - internalError
          required:
            - code
      description: >-
        Internal Server Error.
        (https://tools.ietf.org/html/rfc7231#section-6.6.1)

    Subscription:
      $ref: models/Subscription.yaml
    Topic:
      $ref: models/Topic.yaml
    TopicSubscription:
      description: Information about the subscription to a specific topic
      allOf:
        - $ref: '#/components/schemas/Subscription'
        - $ref: '#/components/schemas/TopicSubscriptionRequest'
    TopicSubscriptionRequest:
      $ref: 'models/SubscriptionRequest.yaml'
  responses:
    '400':
      description: Bad Request
      content:
        application/json;charset=utf-8:
          schema:
            $ref: '#/components/schemas/Error400'
    '401':
      content:
        application/json;charset=utf-8:
          schema:
            $ref: '#/components/schemas/Error401'
      description: Unauthorized
    '403':
      description: Forbidden
      content:
        application/json;charset=utf-8:
          schema:
            $ref: '#/components/schemas/Error403'
    '404':
      description: Not Found
      content:
        application/json;charset=utf-8:
          schema:
            $ref: '#/components/schemas/Error404'
    '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